2013-04-14 5 views
0

j'essayais de me familiariser avec les échantillons de ndisproto dans wdk. Selon le doc, l'option -r -n 10 devrait lire 10 paquets de l'interface, mais rien dans le résultat même si je ping à l'interface! Le seul moment où il lit le trafic est lorsque nous utilisons l'option d'écriture.échantillon ndisproto ne lit pas de trafic

L'échantillon est identique, sans autre modification que la modification à #define NPROTO_PACKET_FILTER (NDIS_PACKET_TYPE_ALL_LOCAL|NDIS_PACKET_TYPE_PROMISCUOUS).

Le pilote est-il vraiment câblé pour lire le trafic provenant d'autres sources?

Qu'est-ce qui me manque? Une idée de comment lire/sniffer le trafic en utilisant 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 Une idée? –

Répondre

1

Vous avez enfin la réponse. La raison en est, l'exemple de pilote est spécifiquement conçu pour envoyer/recevoir EAP over LAN cadres, pas tous. Il y a quelques instructions break dans NdisprotReceiveNetBufferLists qui empêchent d'autres paquets que les trames ethertype0x888E d'atteindre l'application cliente.

Identique à send.

+0

Merci! J'ai eu le même problème. Pour quelqu'un d'autre, recherchez simplement NPROT_ETH_TYPE dans le code du pilote et supprimez tous les contrôles existants. –