Я использую модуль Net::Pcap
для захвата пакетов с помощью этого фильтра:
dst $my_host and dst port 80
Внутри цикла событий Net :: Pcap я использую функцию обратного вызова:
Net::Pcap::pcap_loop($pcap_t, -1, \my_callback, '')
где my_callback
выглядит так:
my_callback {
my ($user_data, $header, $packet) = @_;
# Strip ethernet IP and TCP
my $ether_data = NetPacket::Ethernet::strip($packet);
my $ip = NetPacket::IP->decode($ether_data);
my $tcp = NetPacket::TCP->decode($ip->{'data'});
}
Как собрать HTTP-пакеты в один пакет и извлечь его заголовок?