Доброе время суток.
Поставив для экспериментов dsniff, через пару суток обнаружил, что он насобирал невероятное количество мусора от всяких разных банерных сетей и лог работы стало невозможно читать.
Поискав в интернете скрипты редактирования лога решил написать свой.
Скрипт первым делом проходит по всем записям в базе и удаляет записи согласно регекспа, дальше просто разбирает структуру записи dsniff и выводит результат.
Всё просто как 2х2, но похожего инструмента я не нашёл. Может пригодится кому.
Aborche 2012
Поставив для экспериментов dsniff, через пару суток обнаружил, что он насобирал невероятное количество мусора от всяких разных банерных сетей и лог работы стало невозможно читать.
Поискав в интернете скрипты редактирования лога решил написать свой.
Скрипт первым делом проходит по всем записям в базе и удаляет записи согласно регекспа, дальше просто разбирает структуру записи dsniff и выводит результат.
#!/usr/bin/perl
use strict;
use DB_File;
use Socket;
my $filename = $ARGV[0];
tie my %h, 'DB_File', $filename, undef, 0644, $DB_BTREE ;
foreach my $key (keys %h) {
if($h{$key} =~ /
adriver\.ru|google-analytics\.com|ad\.doubleclick\.net|tns-counter\.ru|ads\.adfox\.ru|a\.adwolf\.ru
/) { delete $h{$key}; }
}
foreach my $key (keys %h) {
my ($time,$srcaddr,$dstaddr,$proto,$sport,$dport,$servicename,$datalength,$data) = unpack('N I I N N N N/A* N A*',$h{$key});
if($datalength eq 0) { ($data) = unpack("C/A*",$data); }
my $srchostname = gethostbyaddr(pack("N",$srcaddr),AF_INET) || join ('.',unpack("C4",pack("N",$srcaddr)));
my $dsthostname = gethostbyaddr(pack("N",$dstaddr),AF_INET) || join ('.',unpack("C4",pack("N",$dstaddr)));
my $protoname = getprotobynumber($proto);
print "------------------------\n",scalar localtime($time)," $protoname ",$srchostname,":$sport -> ",$dsthostname,":$dport (",$servicename,")\n",$data,"\n\n";
}
untie %h;
Всё просто как 2х2, но похожего инструмента я не нашёл. Может пригодится кому.
Aborche 2012