阅读:3256回复:7
调用98ddk下的vpacket.vxd截获网卡数据包的疑问
1。要截获的话除了用createfile,然后bind后
是不是只要调用API IOCTL_PROTOCOL_READ就行了 要不要先用IOCTL_PROTOCOL_SET_OID将其设为混杂模式? 然后再用IOCTL_PROTOCOL_READ? 2 在98dd下给的例子中有一个PPACKET_OID_DATA,还有overlapped 数据结构,它的定义在那啊 我怎么没有找到啊? 是不是系统自己定义的? 3. 98ddk 得packet例子下究竟那些是用来编译 成vxd的,那些是他自带的应用例子啊 都在一起, 是不是只需要makefile 就行了(nmake /f makfile?)? 其它都是使用的例子? 3x 急! |
|
最新喜欢:wingma...
|
沙发#
发布于:2001-05-24 09:06
还是请lxf讲解一下吧。
|
|
|
板凳#
发布于:2001-05-24 09:24
不好意思,我不搞VXD.
但是如果要进行对其它网卡包截获的话,一定要将其设为混杂模式。 |
|
|
地板#
发布于:2001-05-24 11:43
除了编vxd驱动,还有什么办法截获数据包?
我现在可以截获了,不过不是自己编的驱动 是调用的人家的winpcap来做的, 但是我截获外面来得包经过我自己的处理后( 对我来的说是将hdlc包还原成ip包) 怎么交给应用层啊,就是说这么蒙骗应用程序让他以为 就是直接从网卡来得包? 3x & bow! |
|
|
地下室#
发布于:2001-05-24 11:50
从WINPCAP得到的是物理包,如果你要把它解开送到应用程序的话,需要去掉一部分包头,这一部分建议你看TCP/IP文本。
要是有WINDOWS的TCP/IP驱动的源码,就更好了,你知道哪有吗? 不知道有没有API可以进行转换? [lxf 编辑于 2001-05-24 11:53] |
|
|
5楼#
发布于:2001-05-24 21:50
你的意思是不是指截获到的应该是enthernet帧格式的包(对以太网卡来说),我的处理是将截获得包存在一个buffer里
然后处理 先去掉以太帧结构,在去掉hdlc结构得到的就是IP包了 不过怎么送给应用层我就不清楚了,问题就在这里 我现在的程序就是调用winpcap封装的api做的,我想如果要实现 上面的想法是不是要自己编驱动啊? |
|
|
6楼#
发布于:2001-05-25 08:39
去掉了之后理论上不一定就是IP,除非网段上跑的全是IP。你要通知应用层的话,一般的应用层调用的是SOCKET,你得想办法插入这个调用,作驱动当然是一种办法。
|
|
|
7楼#
发布于:2001-05-26 08:43
的确,用98DDK自带的VPACKET要CRASH,我一般用网上很流行的VPACKET的VXD,他们大小不同,运行正常的有13KB左右,你可以单独打出一张梯子,问斑竹
|
|
|