阅读:2587回复:11
心都快凉了,有人用passthru例子在xp上设置混杂模式,能够收到自己发送出去的包吗?
帖子发了好几天了,无人问津,555。高手呢?小女子在此先谢过。
[编辑 - 10/11/03 by pinklark] |
|
沙发#
发布于:2003-10-08 12:34
重新回顾一下我上次的帖子:
问题一:设置混杂模式NDIS_PACKET_TYPE_PROMISCUOUS 即0x20,用NdisRequest设置成功,因为我之后query回来,也是该值,但是还是读不到本机发出的数据包。这一切在w2k下运行抓包一切正常,不知道xp上是否有特殊要求,以前也有一个贴子问这个问题,但无人回答 问题二:我在此基础修改的代码,在xp上抓包、过滤包偶尔会蓝屏,但在w2k上测试结果是稳定的,其中的代码是完全相同的,只不过我拿的是xp上的passthru例子,在w2k的环境中编译的,是否用在xp上的也应该在xp的环境中编译呢? 我安装的是xp的inf,对inf没有修改,对xp的passthru源代码就加了自己的代码,请问各位高手有什么建议吗? 多谢! |
|
板凳#
发布于:2003-10-11 14:30
有人用passthru例子在xp上设置混杂模式,能够收到自己发送出去的包吗?
我理解的混杂模式为绑定的网卡将所有经过该网卡的数据包都将向上层传送,在以太网中发送消息是广播形式,所以我认为自己发送的包也能收到,但我在xp上测试就不行,但在w2k上可以。 有人遇到这种情况吗?我的理解正确吗?请各位斑竹及能人帮忙,我已经一个星期无从下手了 |
|
地板#
发布于:2003-10-11 17:14
用了Imd,要收到自己发出去的包,还有必要设置网卡成混杂模式么?
发出去的包,不经过MPSend,就一定要经过MPSendPackets。你只要在这两个地方看包就可以了。 |
|
地下室#
发布于:2003-10-13 10:24
给你们提点 思路吧。
因为,我再调试的时候, 碰到了。 当你再 MPSEND 中发 包的时候, 不设置 包的 状态为 DONT_LOOPBACK 时候, 网卡就回收到自己发的包。 而且这种包是 还没有 发出去的。 也就是说还没有 发到 HUB 上, 而是 发到了自己的网卡上。 |
|
5楼#
发布于:2003-10-13 10:37
给你们提点 思路吧。应该不是还没有发出去,而是发不出去,或者说网卡拒绝发送的报文。 |
|
|
6楼#
发布于:2003-10-13 12:28
多谢fracker bangh mikeluo的回复
我想将我的做法说明清楚一下,看有什么问题. 我将网卡设置成混杂模式,原意想在ptreceive和ptreceivepacket中收到所有的数据报,并将解析、过滤数据报全部完成,并不在mpsend中做,这样为了解析数据报的完整性,就需要在ptreceive中收到自己发送出去的包,我在w2k中已经实现了,但在xp上收不到。 fracker提议在mpsend中处理,我也考虑过,但是如果混杂模式正常的情况下,mpsend和ptreceive就会要处理重复的数据报,这是我没打算处理的情况。 不知以上我的做法在思路上有无问题,请各位指教。 |
|
7楼#
发布于:2003-10-13 15:10
这个工作应该是用一个协议驱动来做比较好一些,而且不会出现你现在碰到的问题。
这两天用xp发现xp和2k有很多不同的地方,不知道你遇到的这个问题是不是因为ndis做了一些改动的缘故。 |
|
|
8楼#
发布于:2003-10-13 16:35
我软件1.0版本就是用的协议驱动基于packet的例子,只是完成了数据报的获取功能,现在的2.0版本要做过滤控制的功能,所以采用了passthru的例子,用的xpddk的passthru的例子,在w2k上编译运行于w2k上一切正常,但运行在xp上则出现问题
我现在只好到xp上编译(用ndis51,确实在代码上与ndis40 ndis50有很大的差别),将自己的代码重新一点一点加入,看问题出现在哪里,不过查找的难度比较大,现在还没查出来 |
|
9楼#
发布于:2003-10-13 17:45
我很感兴趣,我的QQ是:12278389
用QQ交流好吗? |
|
10楼#
发布于:2003-10-13 21:08
还收回来干啥?直接读取不就得了?!?
|
|
|
论坛版主
|
11楼#
发布于:2003-10-15 01:24
我发表一点想法,和驱动无关:
你想用混杂模式监听信道上所有的动作,那么对于自己发送包的时候能不能听到我觉得你应该考虑一下网卡是工作在半双工还是全双工,如果是半双工,发送的时候网卡应该不会监听信道,至于对loopback的设置,不知道ndis认不认这样的包为进入包,就请各位ndis专家回答这个问题了:) |
|