lonelyeagle
驱动牛犊
驱动牛犊
  • 注册日期2003-10-29
  • 最后登录2006-04-07
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
阅读:4046回复:23

在使用串行moderm通过电话线拨号上网的情况下,如何截获网络包?

楼主#
更多 发布于:2003-12-09 11:45
我想写一个驱动程序,在使用串行moderm通过电话线拨号上网的情况下,能截获数据包,什么帧格式的都可以。可以用NDIS的中间层驱动程序吗?

最新喜欢:

luoq_dlluoq_d...
SharpShooter
驱动小牛
驱动小牛
  • 注册日期2002-04-07
  • 最后登录2013-07-05
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望40点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-12-10 09:13
可以,仿照XpDDK的Passthru就可以了.里面包含了对NdisMediumWan的处理.
写驱动不如买足彩!!
mikeluo
驱动老牛
驱动老牛
  • 注册日期2001-09-04
  • 最后登录2007-05-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-12-10 09:39
passthru是收不到ppp链路层的报文的。只能收到ip报文。
学而不思则罔,思而不学则殆 学而思之,思而学之,岂非圣人乎?
yongliliu
驱动小牛
驱动小牛
  • 注册日期2003-10-20
  • 最后登录2007-09-28
  • 粉丝0
  • 关注0
  • 积分11分
  • 威望2点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-12-10 13:46
中间层驱动不是只能截获IP包,怎么还想着截获什么链路层的数据帧,我想她问的问题应该是:

1、ppp协议的数据帧对于我们的passthru中间层是不是透明的,是不是:以太头+IP头+数据,这个也许是个愚昧的问题;)
2、如果是透明的,那么NDIS就没有必要分什么WAN、Ether的处理函数了哦
3、如果不是透明的,那么我们中间层接收的就不应该是:以太头+IP头+数据,那么应该是什么?

各位斑竹,有空发发贵帖吧;)
成功不是天上掉下来的免费的丰盛的晚餐!
lonelyeagle
驱动牛犊
驱动牛犊
  • 注册日期2003-10-29
  • 最后登录2006-04-07
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-12-10 13:55
中间层驱动不是只能截获IP包,怎么还想着截获什么链路层的数据帧,我想她问的问题应该是:

1、ppp协议的数据帧对于我们的passthru中间层是不是透明的,是不是:以太头+IP头+数据,这个也许是个愚昧的问题;)
2、如果是透明的,那么NDIS就没有必要分什么WAN、Ether的处理函数了哦
3、如果不是透明的,那么我们中间层接收的就不应该是:以太头+IP头+数据,那么应该是什么?

各位斑竹,有空发发贵帖吧;)

我现在知道用ndis截获以太网和pppoe接入方式下,Ndis中间层可以截获数据包,但是不知道ppp接入方式下,中间层能否截获到数据包?另外,以太网接入方式为例,为什么中间层截获的数据包总带有
以太头,有没有办法改变中间层驱动的加载顺序,使它接收到ip报文,不带有以太头?
lonelyeagle
驱动牛犊
驱动牛犊
  • 注册日期2003-10-29
  • 最后登录2006-04-07
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-12-11 09:08
先发20分,我已经可以截获到三种接入方式下的数据包。但是对于
pppoe和ppp协议都太复杂了,要想对包分析,太难。要是将驱动加载到tcp/ip下面,直接得到ip包,就好了。还请高手指点!
mikeluo
驱动老牛
驱动老牛
  • 注册日期2001-09-04
  • 最后登录2007-05-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-12-11 09:43
用猫拨号的ppp报文你是怎么得到的?
学而不思则罔,思而不学则殆 学而思之,思而学之,岂非圣人乎?
lonelyeagle
驱动牛犊
驱动牛犊
  • 注册日期2003-10-29
  • 最后登录2006-04-07
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2003-12-11 10:09
用猫拨号的ppp报文你是怎么得到的?

将中间层驱动程序的inf文件的HKR, Ndi\\Interfaces, FilterMediaTypes, , \"ethernet,tokenring, fddi\"修改为
\"ethernet,tokenring, fddi,wan\".在MPInitialize中若Medium
是NdisMediumWan则改为NdisMedium802_3.
mikeluo
驱动老牛
驱动老牛
  • 注册日期2001-09-04
  • 最后登录2007-05-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2003-12-11 10:32
这样得到的只是以太网格式的报文,不是ppp的报文。从ndiswan上来的报文都是以太帧,ndiswan已经把ppp格式的报文解析以后转成以太网的了。
学而不思则罔,思而不学则殆 学而思之,思而学之,岂非圣人乎?
ljjlovernet
驱动小牛
驱动小牛
  • 注册日期2003-10-10
  • 最后登录2004-12-04
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2003-12-11 11:43
他在做什么啊?〉
呵呵,
我是来学习的。不打扫卫生
yongliliu
驱动小牛
驱动小牛
  • 注册日期2003-10-20
  • 最后登录2007-09-28
  • 粉丝0
  • 关注0
  • 积分11分
  • 威望2点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2003-12-11 13:16
回答2个问题:

1、为什么中间层驱动捕获的数据包含有以太头,我想是因为不同的NIC会绑定不同的mac信息吧,要不然数据从协议层下发的时候,就会找不到到底应该发送到哪一个NIC了啊。

2、如果modem走ppp协议,我想中间层驱动是捕获不到数据包的,因为NDIS IMD驱动只认识以太帧

3、但是如果modem走的是pppoe就不同了,什么叫oe,我靠,就是:over ether的意思,也就是说,用以太数据帧来实现ppp,那中间层驱动应该一定可以捕获到,谁让你是以太帧呢

所以说啊,大家也不要研究什么在ppp上建造什么NDIS IMD驱动了,现在大部分ADSL拨号都用pppoe协议了,呵呵,应该对passthru来说就是wan,是透明的才对,有什么意见啊大家伙?
成功不是天上掉下来的免费的丰盛的晚餐!
lonelyeagle
驱动牛犊
驱动牛犊
  • 注册日期2003-10-29
  • 最后登录2006-04-07
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2003-12-11 14:06
回答2个问题:

1、为什么中间层驱动捕获的数据包含有以太头,我想是因为不同的NIC会绑定不同的mac信息吧,要不然数据从协议层下发的时候,就会找不到到底应该发送到哪一个NIC了啊。

2、如果modem走ppp协议,我想中间层驱动是捕获不到数据包的,因为NDIS IMD驱动只认识以太帧

3、但是如果modem走的是pppoe就不同了,什么叫oe,我靠,就是:over ether的意思,也就是说,用以太数据帧来实现ppp,那中间层驱动应该一定可以捕获到,谁让你是以太帧呢

所以说啊,大家也不要研究什么在ppp上建造什么NDIS IMD驱动了,现在大部分ADSL拨号都用pppoe协议了,呵呵,应该对passthru来说就是wan,是透明的才对,有什么意见啊大家伙?

以上的几个观点,我的看法是:
 1、 我很想捕获到不带以太头的数据包(ip),但是未果,仍在努力;
 2、我已经用imd截获了ppp接入方式的以太报文(win2k下)
 3、用imd截获PPPoE的以太报文也没有问题。

哪位知道如何做,才能用imd截获到不带以太头的ip报文?

 
lonelyeagle
驱动牛犊
驱动牛犊
  • 注册日期2003-10-29
  • 最后登录2006-04-07
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2003-12-11 14:10
这样得到的只是以太网格式的报文,不是ppp的报文。从ndiswan上来的报文都是以太帧,ndiswan已经把ppp格式的报文解析以后转成以太网的了。

mikeluo讲的没错,我只是截获了ppp方式下的以太报文。这就足够了,我只是想做一个ppp方式下的报文过滤。可能imd真的不能截获
ppp报文。
lonelyeagle
驱动牛犊
驱动牛犊
  • 注册日期2003-10-29
  • 最后登录2006-04-07
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2003-12-11 14:18
这个问题,我还剩40分,怎么不能发分了?
slwqw
驱动大牛
驱动大牛
  • 注册日期2002-07-18
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望197点
  • 贡献值0点
  • 好评度147点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2003-12-11 14:32
[quote]这样得到的只是以太网格式的报文,不是ppp的报文。从ndiswan上来的报文都是以太帧,ndiswan已经把ppp格式的报文解析以后转成以太网的了。

mikeluo讲的没错,我只是截获了ppp方式下的以太报文。这就足够了,我只是想做一个ppp方式下的报文过滤。可能imd真的不能截获
ppp报文。
 [/quote]

略作一下处理不就得PPP报文了???
slwqw
驱动大牛
驱动大牛
  • 注册日期2002-07-18
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望197点
  • 贡献值0点
  • 好评度147点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2003-12-11 14:35
[quote][quote]这样得到的只是以太网格式的报文,不是ppp的报文。从ndiswan上来的报文都是以太帧,ndiswan已经把ppp格式的报文解析以后转成以太网的了。

mikeluo讲的没错,我只是截获了ppp方式下的以太报文。这就足够了,我只是想做一个ppp方式下的报文过滤。可能imd真的不能截获
ppp报文。
 [/quote]

略作一下处理不就得PPP报文了??? [/quote]

不好意思,搞错了:(:(:(,使用Modem的确不能截获PPP报文。
wxl_50685330
论坛版主
论坛版主
  • 注册日期2002-11-19
  • 最后登录2018-09-25
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望521点
  • 贡献值0点
  • 好评度419点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2003-12-11 16:27
兄弟,我对这个也感兴趣,正想弄一个出来,现在的项目需要支持wan,你截获的主要目的是ip包吧,如果ndis为你屏蔽下层mac的帧不是更好?只要所有上下的ip都要过im就好了,刚才看你们写的ppp在接受后被ndis先转换成802.3的帧是否属实?请确认一下:)我可以不试了,至于ppp0e也一样,你们实验结果可否告知
根据地的兄弟们,团结就是力量
mikeluo
驱动老牛
驱动老牛
  • 注册日期2001-09-04
  • 最后登录2007-05-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
17楼#
发布于:2003-12-11 17:01
回答2个问题:

1、为什么中间层驱动捕获的数据包含有以太头,我想是因为不同的NIC会绑定不同的mac信息吧,要不然数据从协议层下发的时候,就会找不到到底应该发送到哪一个NIC了啊。

用那个网卡发送是通过miniporthandle来决定的,不是通过mac地址(ndiswan是通过mac地址来匹配链路,这是另外的话题了)

2、如果modem走ppp协议,我想中间层驱动是捕获不到数据包的,因为NDIS IMD驱动只认识以太帧
IMD和协议无关,并不要求一定要受到的是以太帧,否则raspppoe也就没有办法做了(他是从ndiswan接收ppp报文的)


3、但是如果modem走的是pppoe就不同了,什么叫oe,我靠,就是:over ether的意思,也就是说,用以太数据帧来实现ppp,那中间层驱动应该一定可以捕获到,谁让你是以太帧呢
ip报文肯定是可以得到的。
 
学而不思则罔,思而不学则殆 学而思之,思而学之,岂非圣人乎?
mikeluo
驱动老牛
驱动老牛
  • 注册日期2001-09-04
  • 最后登录2007-05-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
18楼#
发布于:2003-12-11 17:03
[quote]回答2个问题:

1、为什么中间层驱动捕获的数据包含有以太头,我想是因为不同的NIC会绑定不同的mac信息吧,要不然数据从协议层下发的时候,就会找不到到底应该发送到哪一个NIC了啊。

2、如果modem走ppp协议,我想中间层驱动是捕获不到数据包的,因为NDIS IMD驱动只认识以太帧

3、但是如果modem走的是pppoe就不同了,什么叫oe,我靠,就是:over ether的意思,也就是说,用以太数据帧来实现ppp,那中间层驱动应该一定可以捕获到,谁让你是以太帧呢

所以说啊,大家也不要研究什么在ppp上建造什么NDIS IMD驱动了,现在大部分ADSL拨号都用pppoe协议了,呵呵,应该对passthru来说就是wan,是透明的才对,有什么意见啊大家伙?

以上的几个观点,我的看法是:
 1、 我很想捕获到不带以太头的数据包(ip),但是未果,仍在努力;
 2、我已经用imd截获了ppp接入方式的以太报文(win2k下)
 3、用imd截获PPPoE的以太报文也没有问题。

哪位知道如何做,才能用imd截获到不带以太头的ip报文?

  [/quote]

mac头上在TCPIP驱动里面才被剥掉的,所以你得到的肯定是带mac头的报文。。

带mac头有影响么?
学而不思则罔,思而不学则殆 学而思之,思而学之,岂非圣人乎?
SharpShooter
驱动小牛
驱动小牛
  • 注册日期2002-04-07
  • 最后登录2013-07-05
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望40点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
19楼#
发布于:2003-12-12 15:10
一天没来就讨论这么多了.

略微补充一点,我想用IM处理Modem拨号问题,对楼主来说是可以的了,可能楼主的项目里也没想要处理PPP报文.

但现在ADSL拨号普遍的很,不支持可能是不成的吧.

我用过的ADSL拨号软件有Windows Xp自带的,RasPPPoE和EnterNet300,我知道RasPPPoE和Xp的实现机制应该是大同小异,都是绑在ndiswan.sys上进行PPPoE封装,这种情况对于Passthru来讲是没有问题的.

但使用EnterNet300就要注意了,EnterNet300有自己的虚拟网卡,而且它不向ndiswan.sys绑定,而是自己做原本ndiswan.sys所做的事情,这时如果Passthru不向它的虚拟网卡绑定的话,是没法拦截PPPoE的数据包的,而向它的虚拟网卡绑定的话,就要小心了,我遇到的情况是绑定的过程没有出现问题,但一通信就会Down机,最终也没有解决.

因此,最好使用RasPPPoE的拨号软件,可惜对于北京的用户要注意了,网通给装ADSL的时候发的拨号软件都是EnterNet300!
XP自带的ADSL拨号支持和RasPPPoE的机制是一样的,因此也可以配合Passthru,但据www.RasPPPoE.com讲,XP的是不如它的做的好.

这种情况对于用户使用XP还是好些,因为EnterNet300目前的版本不支持XP.

我的解决之道是,放弃Passthru,改用NdisHook,赫赫/

前面的描述不见得就对,仅供大伙儿参考.发现问题还请多多指正.

写驱动不如买足彩!!
上一页
游客

返回顶部