[精讚] [會員登入]
796

[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建立資訊安全控管中心#3 -- 程式下載和安裝 利用PERL將syslog收攏到資料庫的程式,程式下載和安裝

[PERL] 常態分配亂數產生函數 一般而言我們使用程式內建的 rand 函數取得的亂數是平均分配的,但如果需要常態分配的亂數產生器該怎麼做?

[PERL] 17-參照 PERL的參照,就是指標

PERL的真值和假值(布林值) 整理Perl中的判斷真假的結果

Perl 計算經過的時間 Perl 計算程式執行經過的時間

[PERL] 07-陣列 #1 -- 基本 perl的陣列

我有話要說

>>

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

訪客留言

[無留言]

隨機好文

使用Google尋找你的手機 這近發現google竟然可以用來找android的手機,而且不需要經過什麼設定或安裝軟體。

如何在linux下執行java 原生的java應用程式可以使用簡單的方法在console下面寫出來,適合作簡單的應用

[Win7] 燒錄 iso 檔 在Windows7 中內建燒錄程式,可以直接把檔案拉到光碟機裡,再執行燒錄。

[JAVA] JWS, JWT, JWE, JOSE是什麼? [JAVA] JWS, JWT, JWE, JOSE是什麼?非常的複雜,儘量來搞清楚..

一個邏輯的錯誤刪了全部檔案的經驗 今天本來想做一件很簡單的事,但卻足足浪費我多一倍的時間,再加上刪掉我全部的檔案,原因只是因為我自己的邏輯錯誤。