Windows - статьи
($name, $description, $type, $speed, $ip, $mask) = $nic->GetInfo();
В контексте списка возвращает: название, описание, тип, скорость в битах в секунду, IP адрес и сетевую маску $nic адаптера.
Используя вышеперечисленные методы, можно написать такую программу.
use Win32::NetPacket qw/:ndis/; use constant SizeOfInt => 4; my $nic = Win32::NetPacket->new( driver_buffer_size => 512*1024, read_timeout => 0, min_to_copy => 8*1024, ) or die $@; $nic->SetHwFilter(NDIS_PACKET_TYPE_PROMISCUOUS); my $Buff; $nic->SetUserBuffer($Buff, 128*1024); my $BytesReceived = $nic->ReceivePacket(); my $offset = 0; while($offset < $BytesReceived) { my ($tv_sec, $tv_usec, $caplen, $datalen, $hdrlen)=unpack 'llIIS', substr $Buff, $offset; printf "\nPacket length, captured portion: %ld, %ld\n", $datalen, $caplen; $offset += $hdrlen; my $data = substr $Buff, $offset, $datalen; # извлекаем датаграмму my $i; print map { ++$i % 16 ? "$_ " : "$_\n" } @mas=unpack( 'H2' x length( $data ), $data ), length( $data ) % 16 ? "\n" : ''; $offset = (($offset+$caplen)+(SizeOfInt-1)) & ~(SizeOfInt-1); }
Что делать с массивом @mas, содержащим байты датаграммы, каждый решит по своему, будь то хакер или программист.