繁体   English   中英

如何使用 NDIS 过滤器驱动程序从协议层重定向 TCP 数据包?

[英]How to redirect TCP packets from protocol layer using NDIS filter driver?

我正在为 Windows 编写 NDIS 过滤器驱动程序。 现在我面临一个问题。

我要将 TCP 数据包重定向到安装 NDIS 过滤器驱动程序的当前 PC 上的 TCP 服务器。 例如,当前PC的IP地址是192.168.1.1 ,上面有一个TCP服务器,监听8000端口。

用户在IE浏览器中输入一个URL: http : //192.168.1.10/xxxx ,我的NDIS过滤器驱动完全可以看到TCP SYN包。 我将数据包的目标 IP 地址修改为192.168.1.1 ,将目标端口修改为8000 ,因为我希望数据包可以重定向到本地 TCP 服务器。

然后我使用NdisFIndicateReceiveNetBufferLists()将 NBL 注入接收路径,而不是将其发送到底层微型端口驱动程序。

但是,本地 TCP 服务器似乎永远无法获取重定向的SYN数据包。 我不知道哪里出了问题。 有人会帮助我或给我一些建议吗?

非常感谢!

通常,您不能从一条路径(发送路径)获取 NBL,然后将其放入另一条路径(接收路径)。 您需要克隆 NBL 并指明克隆。 此外,您必须编辑 IP 和 TCP 标头以修复校验和。

但是在您沿着这条路线走之前——请注意,WFP 标注是该项目更合适的驱动程序类型。 WFP 标注旨在在网络堆栈的第 3 层和第 4 层运行,而 NDIS 在第 2 层运行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM