[精讚] [會員登入]
952

[PERL] 簡易檢查網頁記錄檔ip來源統計

利用PERL來檢查網頁記錄檔ip來源統計的簡易程式

分享此文連結 //n.sfs.tw/10379

分享連結 [PERL] 簡易檢查網頁記錄檔ip來源統計@新精讚
(文章歡迎轉載,務必尊重版權註明連結來源)
2019-10-24 13:39:52 最後編修
2016-12-05 14:54:35 By 張○○
 

自動目錄

這近發現有人在大量存取網頁,不清楚遭到攻擊或是合法的讀取,所以只好去翻記錄檔,看看誰來我家,apache的log如果沒有修改的話,預設大概是長這個樣子:

118.166.205.237 - - [28/Jul/2013:00:10:31 +0800] "GET /index.php HTTP/1.1" 200 55397 "http://www.example.com/content.php?sn=6637" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; BTRS104192; GTB7.5; Foxy/1; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; BRI/2)"

我目前想做的只是把資料列中的ip取出來統計看看每個ip有幾次記錄,單一ip超過100次我就懷疑它在攻擊。

所以我撰寫下面這個程式 ipcount.pl

#!/usr/bin/perl -w
 
if(  !$ARGV[0] )  {die  "請指定檔案\r\n";}
$fn= $ARGV[0];
 
open(FILE, $fn) or die "$!";
$cnt=0;
$data="";
%ip =();
while( defined( $line = <FILE> )){
  if($line =~ /^(\d+\.\d+\.\d+\.\d+)/){
    $data .= $1 . "\n";
    $ip{$1}++;
    $cnt++;
  }
}
 
print "[$fn]總共判斷:". $cnt."筆\n";
close( FILE);
 
$res="";
 
# 由值排序
foreach $value (sort{$ip{$a} <=> $ip{$b}} keys %ip )
{
    $res .= "$value \t $ip{$value}\n";
}
 
 
open( FILE, "> outZ.txt") or die "$!";
print FILE $res;
close( FILE);</file>

執行

 $ ./ipcount.pl 你要分析的記錄檔

範例

$ ./ipcount.pl 6667.txt
[6667.txt]總共判斷:26339筆

結果檔會存在同目錄的 outZ.txt 內容為 不重覆ip 出現的次數

116.59.225.152   1
115.80.253.111   1
42.76.216.236    1
101.12.10.105    1
36.239.22.52     1
39.14.142.67     1
211.74.251.120   1
140.117.129.114      2
111.254.207.26   2
....
220.137.29.80    48
1.160.218.72     53
101.10.2.206     63
36.231.68.8      66
116.59.225.14    68
111.248.105.126      69
114.24.70.61     105
1.160.230.199    233

程式相當的快,以上例26339筆不到0.1s就統計完畢,最後幾筆是可疑的流量。


原文 2013-08-06 13:41:00

END

你可能感興趣的文章

[PERL] 14-進階比對 #1--取回比對內容 perl的正規表達式進階比對

[PERL] 可用中文取名的中文名函式和package 原來perl 也可以用中文當函式、類別、方法的名稱啊

[PERL] Perl 不立即輸出的列印緩衝區問題 解決Perl 不立即輸出而是最後一次輸出的列印緩衝區問題

[PERL] Regex 字元集(群組) 幾個Perl在regular express會用到的特殊符號notation:字元集

[PERL] 21- 使用資料庫 Perl 連Mysql

Perl 的特殊變數:$_、$&、$! 介紹perl的特殊變數 $_ 、 $&、$!

隨機好文

[HP DL380G7] 生效啟動第3,4片網卡/開啟或關閉內建的網卡 HP DL380G7 預設第3,4片網卡裝完系統後找不到,難道是壞了?要怎麼辦?

安裝SPHINX支援中文 新版本的 sphinx 和舊版不同,網路上很多範例和教學是不能用的。此文是安裝和設定方法分享

設計的工作絕不接受比價 拿買陽春麵的價格想買牛肉麵,寧願倒掉也不賣

正則表達式:Email名稱防止連續輸入點(.)及下底線(_) Email的名稱中要允許特殊符號,但又不允許連續出現的正則表達式

[大型機台] 熱血高校躲避球 多少少年時光歲月耗在這個遊戲上,二十幾年前的那個時光,唯一想做的事就是把吃飯錢省下來拿去打一場五塊錢的電動,就算是沒錢也