Как стать автором
Обновить

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

Время на прочтение1 мин
Количество просмотров1.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
Теги:
Хабы:
Всего голосов 12: ↑6 и ↓60
Комментарии4

Публикации