2013-04-14 3 views
0

Я пытался познакомиться с образцами ndisproto в wdk. В соответствии с документом параметр -r -n 10 должен читать 10 пакетов с интерфейса, но ничего не получается, даже если я пинг на интерфейс! Единственный раз, когда он читает трафик, - это когда мы используем функцию записи.ndisproto образец не читает никакого трафика

Образец такой же, без каких-либо изменений, кроме изменения #define NPROTO_PACKET_FILTER (NDIS_PACKET_TYPE_ALL_LOCAL|NDIS_PACKET_TYPE_PROMISCUOUS).

Действительно ли драйвер подключен для чтения трафика, происходящего из других источников?

Что мне не хватает? Любая идея, как читать/обнюхивать трафик с помощью ndisproto?

C:\Users\Administrator\Desktop\ndisprot>prottest.exe -r -n 10 \DEVICE\{17152850-6288-471A-9708-2889E7F55EE8} 
Option: NumberOfPackets = 10 
Trying to access NDIS Device: \DEVICE\{17152850-6288-471A-9708-2889E7F55EE8} 
Opened device \DEVICE\{17152850-6288-471A-9708-2889E7F55EE8} successfully! 
Trying to get src mac address 
GetSrcMac: IoControl success, BytesReturned = 14 
Got local MAC: 00:0c:29:23:b1:09 
DoReadProc 


C:\Users\Administrator\Desktop\ndisprot>prottest.exe -w -n 1 \DEVICE\{17152850-6288-471A-9708-2889E7F55EE8} 
Option: NumberOfPackets = 1 
Trying to access NDIS Device: \DEVICE\{17152850-6288-471A-9708-2889E7F55EE8} 
Opened device \DEVICE\{17152850-6288-471A-9708-2889E7F55EE8} successfully! 
Trying to get src mac address 
GetSrcMac: IoControl success, BytesReturned = 14 
Got local MAC: 00:0c:29:23:b1:09 
DoWriteProc 
DoWriteProc: sent 100 bytes 
DoWriteProc: finished sending 1 packets of 100 bytes each 
DoReadProc 
DoReadProc: read pkt # 1, 100 bytes 
DoReadProc finished: read 1 packets 
+0

@ jeffrey-tippet Любая идея? –

ответ

1

Получил ответ наконец. Причина в том, что образец драйвера специально разработан для отправки/приема EAP over LAN кадров, а не для всех. В NdisprotReceiveNetBufferLists есть пара инструкций break, которые предотвращают попадание других пакетов, отличных от фреймов ethertype0x888E, из клиентского приложения.

То же самое и для отправки.

+0

Спасибо! У меня была такая же проблема. Для кого-либо еще просто найдите NPROT_ETH_TYPE в коде драйвера и избавитесь от любых существующих проверок. –