阅读:2129回复:7
passthru中如何构造一个自己的新包发送出去
我希望当passthur 中的函数MPSendPacket 或者 PtReceive 或者PtReceivePackets 函数接受到一些包 后 能够根据一定的规则判断
符合规则的我就要插入一些新的包 与原来的包一起发送出去 请问该怎么构造新包 ?? |
|
沙发#
发布于:2009-03-03 21:25
你可以看一下winpcap代码..
|
|
|
板凳#
发布于:2009-03-04 11:28
谢谢你提议,我看看 能不能找到解决方案 !可是winpcap 是的内核 NPF驱动是在NDIS的协议层的,和passthru 不同啊。
passthru 是一个 NDIS中间层驱动。不知道怎么实现中间层驱动的包注入?? |
|
地板#
发布于:2009-03-04 18:01
先构建一个包的结构体 和你MPSendPacket 或者 PtReceive 或者PtReceivePackets 接受到的包一样的结构,然后对该包进行MAC IP……内容等等的赋值,主要是校验码的计算和确认号和序列号的值 当上述都完成后 NdisSend(&Status, pAdapt->BindingHandle, MyPacket) 就ok…… 恩…… 大约……大概……也许就OK了
自己试试 关于校验码和序列号计算 参看tcp/ip详解或者baidu |
|
地下室#
发布于:2009-03-07 18:59
这个我也试过 不过我是先按自己申请了一个 封包 的内存 然后就直接复制全部数据了 那后就用NDISSEND发送 可是总是蓝屏 哎
|
|
5楼#
发布于:2009-03-11 14:39
这样的蓝屏一般是因为PtSendComplete里没处理好,如果你自己定义了包 就应该在这里释放 系统是不会给你释放的 所以就蓝屏了
你在坛子里搜搜看 貌似这个相关的相当多 |
|
6楼#
发布于:2009-03-15 16:23
不错 确实是PtSendComplete里面没有处理好,谢谢你 这个函数里面有个向上层通知的事件 刚开始没有考虑到这些问题 现在差不多不会蓝屏了 但是好像还是处理的不怎么好 我再试试 谢谢你
|
|
7楼#
发布于:2009-04-10 22:30
能否贴点你的代码
非常感谢 |
|