[英]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.