LostSoul Опубликовано 23 июня, 2011 · Жалоба Здравствуйте! В целях сбора определенной статистики, требуется выделение и протоколирование переменных , передаваемых в http-запросах методом POST и GET. То есть у нас на Ethernet-сетевуху приходит mirror-поток http-трафика. Нужно выделить запросы POST и запротоколировать в лог-файл в формате "Время , IP клиента( маскированный) , текущее значение переменной XXX в POST-запросе" Чем быстрее и проще сделать такое? Применение временное, нагрузка небольшая. snort ? ethereal ? подскажите идею Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
orlik Опубликовано 23 июня, 2011 · Жалоба Здравствуйте! В целях сбора определенной статистики, требуется выделение и протоколирование переменных , передаваемых в http-запросах методом POST и GET. То есть у нас на Ethernet-сетевуху приходит mirror-поток http-трафика. Нужно выделить запросы POST и запротоколировать в лог-файл в формате "Время , IP клиента( маскированный) , текущее значение переменной XXX в POST-запросе" Чем быстрее и проще сделать такое? Применение временное, нагрузка небольшая. snort ? ethereal ? подскажите идею может проще самому написать , perl + libpcap скрипт на 20-30 строк Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
LostSoul Опубликовано 23 июня, 2011 · Жалоба Что-то мне как-то лениво, может скажите где пример нарыть чтоб под себя переделать Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
SiXeD Опубликовано 23 июня, 2011 · Жалоба Что-то мне как-то лениво, может скажите где пример нарыть чтоб под себя переделать ЭЭЭЭ Методом POST можно и файлики 10 гиговые слать, вот это лог будет ))))) зы: Сбор личных данных это УК РФ. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
LostSoul Опубликовано 23 июня, 2011 · Жалоба В той переменной , которую нужно сохранять будет ID фиксированного размера. Никакого сбора личных данных не проводится , адреса IP сохраняются в маскированном виде ( обезличенно ) 10 гигов запросы не позволит отправить ни один вменяемый сервер. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
SiXeD Опубликовано 23 июня, 2011 · Жалоба Никакого сбора личных данных не проводится , адреса IP сохраняются в маскированном виде ( обезличенно ) А скрипт нужен для того чтобы фиалками пахло? да и какая разница от чьей почты у меня пароль )))))) Удачи в поиске. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
LostSoul Опубликовано 23 июня, 2011 · Жалоба Сиксед, вы троль что ли? Нету там никаких паролей от почты. Это вообще трафик технологических устройств за которыми нету живых людей и почту на них никто не читает. Это телеметрия! Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
naves Опубликовано 23 июня, 2011 · Жалоба подойдет? http://serverfault.com/questions/84750/monitoring-http-traffic-using-tcpdump Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
disappointed Опубликовано 23 июня, 2011 (изменено) · Жалоба Может если попроще то urlsnarf из пакета dsniff Или могу дать пример на перле, через libpcap, остаётся только дописать регулярными выражениями разбор строки вашей. P.S. Сразу даю, с примером. #!/usr/bin/perl use strict; use Net::Pcap; use NetPacket::Ethernet qw(:strip); use NetPacket::IP qw(:strip); use NetPacket::TCP; use NetPacket::UDP; use DBI; $|=1; my $dbuser="dbuser"; my $dbpassword="dbpassword"; my $dsn = "DBI:mysql:database_name:localhost"; my $dev='eth0'; my $filter_str='port 80'; my $promisc=0; my $to_ms=1000; my $pcap_t; my $err; my $count = -1; my ($SQL,$sth); $SIG{CHLD} = 'IGNORE'; my $optimize=0; my $netmask=0; my $snaplen = 4096; my $dbh = DBI->connect($dsn, $dbuser, $dbpassword,{'InactiveDestroy' => 0,'mysql_auto_reconnect' => 1}) or die("database error\n"); print ("Starting sniffer...\n"); print("Set filter: $filter_str\n"); $pcap_t=Net::Pcap::open_live($dev, $snaplen, $promisc, $to_ms, \$err) || die "Error opening pcap: $err\n"; #start sniffing my $filter_t; my $result=Net::Pcap::compile($pcap_t, \$filter_t, $filter_str,$optimize,$netmask); #compile filter_str Net::Pcap::setfilter($pcap_t, $filter_t); #apply filter Net::Pcap::loop($pcap_t, $count, \&process_pkt,"xyz"); sub process_pkt { my($pktuser, $hdr, $pkt) = @_; my $ip_obj=NetPacket::IP->decode(eth_strip($pkt)); my $srcip=$ip_obj->{src_ip}; my $dstip=$ip_obj->{dest_ip}; my $proto=$ip_obj->{proto}; my ($tcp_obj, $udp_obj, $flags, $srcport, $dstport, $dataset); if($proto==6){ $tcp_obj=NetPacket::TCP->decode(ip_strip(eth_strip($pkt))); $flags=$tcp_obj->{flags}; #make sure packet contains ACK PUSH #return if(!($flags==24 || $flags==10)); $srcport=$tcp_obj->{src_port}; $dstport=$tcp_obj->{dest_port}; $dataset=$tcp_obj->{data}; }elsif($proto==17){ $udp_obj=NetPacket::UDP->decode(ip_strip(eth_strip($pkt))); $srcport=$udp_obj->{src_port}; $dstport=$udp_obj->{dest_port}; $dataset=$udp_obj->{data}; } http_handler($dataset, $srcip, $dstip); } sub http_handler { my ($dataset, $srcip, $dstip) = @_; my ($dataportion, $pair, $name, $value, $key, $child); $dataportion = unpack("A*", $dataset); print "\nHTTP RAW PACKET\n" . unpack("A*",$dataset); if ($dataportion =~ /data\=(.+)\&test\=(.+)\&ttt\=(.+)/) { my $data = $1; $SQL = "INSERT INTO capture_table (data) VALUES ('$data')"; $sth = $dbh->prepare($SQL); $sth->execute; print $SQL . "\n"; } } Изменено 23 июня, 2011 пользователем disappointed Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
s.lobanov Опубликовано 23 июня, 2011 · Жалоба нечто похожее можно изобразить с помощью chaosreader Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Aleck_K Опубликовано 24 июня, 2011 · Жалоба подскажите идею Одной строкой ngrep -d any "POST" -q -W byline |grep VARNAME как добавить время и записать в файл, думаю, догадаетесь Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...