Pull to refresh

Упаковщик для dsniff.db

Reading time1 min
Views1.5K
Доброе время суток.

Поставив для экспериментов 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
Tags:
Hubs:
Total votes 12: ↑6 and ↓60
Comments4

Articles