阅读:1702回复:4
如何修改Passthru才能拦截过滤APR数据包?
最近再学习NDIS,想修改Passthru使之能够处理(拦截过滤)发出或收到的ARP数据包(ARP Request,ARP Reply),在MPSendPackets中加入:
UINT CurrentPackProtocolType,CurrentPackHeaderSize; CurrentPackProtocolType=NDIS_GET_PACKET_PROTOCOL_TYPE(pPacket); CurrentPackHeaderSize=NDIS_GET_PACKET_HEADER_SIZE(pPacket); 但是这两变量所得的值出人意外,当对外发送ARP Request时,明明是ARP数据包,CurrentPackProtocolType==0(应该是2,TCPIP),CurrentPackHeaderSize==0(应该是>=14,以太头的长度是14bytes,ARP头长度是28bytes),在Sniffer pro中可以抓到此包,但是,在PTReceivePacket中可却收到本机所发的ARP Request,却收不到对方发来的ARP Reply,当别的计算机发来ARP Request时,本机收不到该ARP Request,本机所回的ARP Reply都无法得到,但Sniffer Pro都得到了,若在MPSendPackets,PTReceivePacket,PTReceive中丢弃所有数据包,则ARP Request/Reply无法正常发送接收,不知是不是微软对ARP Request/Reply 作了什么特别的处理,请高手帮助!liqt186@163.com! |
|
|
沙发#
发布于:2008-01-04 11:10
问题终于解决了!
敬请大家注意:我原来使用《Windows网络与通讯程序设计》的PASSTHRUEX经过修改,出现上面的问题,后来下了个PASSTHRUEX-part2经过修改,现在可以处理ARP了! |
|
|
板凳#
发布于:2008-01-17 10:32
兄弟,可以交个朋友吗?
qq:43383123 |
|
地板#
发布于:2008-01-19 14:57
ronaldo,很高兴认识你,我现在没有QQ号,常联系,liqt186@163.com.
|
|
|
地下室#
发布于:2008-01-19 20:04
书上那个ReadData方法里对tail进行了判断,好像只能读到帧头+IP包头的东西。
|
|
|