[精讚] [會員登入]
838

[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

你可能感興趣的文章

自行撰寫syslog server建立資訊安全控管中心#1 -- 前言及syslog介紹 利用PERL將syslog收攏到資料庫的程式

[PERL] 中文字字串拆解,把中文字串逐字拆開 中文字字串拆解是門學問

[PERL] 23-多執行緒 而多執行緒的程式,可在一次執行程式時間,同時進行多線程的計算,在效率上可獲得即大的提升。

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

[PERL] 04-基本比對 perl的正規表達示基本比對

自行撰寫syslog server建立資訊安全控管中心#2 -- 架構和作法 利用PERL將syslog收攏到資料庫的程式,架構和作法

我有話要說

>>

限制:留言最高字數1000字。 限制:未登入訪客,每則留言間隔需超過10分鐘,每日最多5則留言。

訪客留言

[無留言]

隨機好文

為什麼要買長達二十年的保單? 為什麼要買長達二十年的保單?找一個可以說服我買二十年保單的理由。

沒有非誰做不可的事,也沒有不可被取代的人 沒有非誰做不可的事,也沒有不可被取代的人

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

[CodeIgniter3] 解決無法上傳特定檔案(.sb2)的問題 上傳時出現The filetype you are attempting to upload is not allowed,要怎麼解決?

魔球中小女孩唱的歌 The show 魔球中小女孩唱的歌 The show