1

Pythonでospfパケットを盗聴しようとしていますが、ubuntuでこの目的を達成しています。

Windowsに関しては、TCP、UDP、およびIGMPパケットのみをスニッフィングできました.wiresharkでospfパケットをキャプチャできます.

コードは以下です。

from socket import *
import struct
import binascii

local_name = getfqdn(gethostname())
local_addr = gethostbyname(local_name)
sniffer = socket(AF_INET, SOCK_RAW, IPPROTO_IP)

sniffer.bind((local_addr, 0))
sniffer.setsockopt(IPPROTO_IP, IP_HDRINCL, 1)

sniffer.ioctl(SIO_RCVALL, RCVALL_ON)

while True:   
    pkt = sniffer.recvfrom(2048)

    ipHeader = pkt[0][0:20]       
    ip_hdr = struct.unpack("!9s1s10s",ipHeader)   
    print("proto:", binascii.hexlify(ip_hdr[1]))

ubuntu 16.04 では、以下のようにソケットを作成します。

sniffer = socket(PF_PACKET,SOCK_RAW,htons(0x0800))

しかし、PF_PACKET と AF_PACKET は Windows ではサポートされていないようです。

Windows でコードを変更するにはどうすればよいですか? または、Windows でイーサネット フレームをキャプチャする方法を教えてください。

前もって感謝します :)

4

1 に答える 1