Как прослушать пакет ospf в windows10 в python3.5 с необработанным пакетом

Я пытаюсь прослушать пакет ospf в Python, и достиг этой цели в Ubuntu.

Когда дело доходит до окон, я мог только прослушивать пакеты TCP, UDP и IGMP. Я могу перехватывать пакеты ospf с помощью wireshark.

Код ниже.

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? Или как захватить кадр Ethernet в Windows?

Заранее спасибо:)

1 ответ

Решение

Я выясняю причину. Кажется, что только ospf-пакет может быть прослушан путем захвата кадра Ethernet на канальном уровне. Но в окнах это запрещено. Winpcap может быть использован.

Другие вопросы по тегам