Как прослушать пакет 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 может быть использован.