liqtndis
驱动牛犊
驱动牛犊
  • 注册日期2007-12-31
  • 最后登录2009-02-17
  • 粉丝0
  • 关注0
  • 积分85分
  • 威望41点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
阅读:1702回复:4

如何修改Passthru才能拦截过滤APR数据包?

楼主#
更多 发布于:2008-01-01 01:50
    最近再学习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!
Open Source is very Good!
liqtndis
驱动牛犊
驱动牛犊
  • 注册日期2007-12-31
  • 最后登录2009-02-17
  • 粉丝0
  • 关注0
  • 积分85分
  • 威望41点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2008-01-04 11:10
问题终于解决了!
敬请大家注意:我原来使用《Windows网络与通讯程序设计》的PASSTHRUEX经过修改,出现上面的问题,后来下了个PASSTHRUEX-part2经过修改,现在可以处理ARP了!
Open Source is very Good!
ronaldo
驱动小牛
驱动小牛
  • 注册日期2004-12-17
  • 最后登录2011-08-02
  • 粉丝0
  • 关注0
  • 积分21分
  • 威望277点
  • 贡献值0点
  • 好评度104点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2008-01-17 10:32
兄弟,可以交个朋友吗?
qq:43383123
liqtndis
驱动牛犊
驱动牛犊
  • 注册日期2007-12-31
  • 最后登录2009-02-17
  • 粉丝0
  • 关注0
  • 积分85分
  • 威望41点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
地板#
发布于:2008-01-19 14:57
ronaldo,很高兴认识你,我现在没有QQ号,常联系,liqt186@163.com.
Open Source is very Good!
kgdiwss
驱动牛犊
驱动牛犊
  • 注册日期2005-11-30
  • 最后登录2009-02-11
  • 粉丝2
  • 关注0
  • 积分655分
  • 威望89点
  • 贡献值0点
  • 好评度65点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2008-01-19 20:04
书上那个ReadData方法里对tail进行了判断,好像只能读到帧头+IP包头的东西。
bbs.80dnst.com -- 驱动/逆向
游客

返回顶部