日期:2014-05-17  浏览次数:20948 次

关于NDIS协议驱动抓包的问题
整了好久,想了好久,最终决定,先在论坛上问一下
NDIS协议层驱动能捕获上层发出去(或者说本机发出去)的数据包吗,
怎么抓,协议层驱动的特征字里没有send的相关函数,只有一个sendcompleted的
难道说recv的函数可以收到自己发出去的包?但为什么ndisprot收不到呢(我用MSDN的源码ndisprot试过了,
不过,他上层不是socket,而是直接用createfile readfile,这些函数来整的)


winpcap整的是就是一个协议层驱动,我也用它的函数来写过代码,当调用pcap_loop函数时,确实可以抓到上层发出去的包
但是就是不知道它怎么实现的,我看了一下它的源代码,看到它也没有用什么队列,除了一个叫cpuData的数组来存收到的包
,另外在irp_mj_read的响应函数里,又从cpuData读出来响应IRP之后,在其它的地方就没有操作过cpuData数组,
还有我看到netmon这个协议层驱动,winpcap旧版本也用了这个协议,而且确实这个东西能抓包,但没有什么资料,我试了
一下,在连接的时候,总是说我什么地方没初始化。

协议层驱动有什么好办法,抓到上层发出去的包吗?
非要写tdi把tcp驱动绑定才行吗?

------解决方案--------------------
请问怎么解决的?