我想为 Windows 编写数据包嗅探器和编辑器。我希望能够看到进入和离开我的系统的所有数据包的内容,并可能修改它们。任何语言都可以,但我希望它运行得足够快,不会给系统带来负担。
我读过一些关于 WinPcap 的资料,但文档声称您不能使用 WinPcap 创建防火墙,因为它不能丢弃数据包。哪些工具可以帮助我编写此软件?
最佳答案
在那里,完成了 :-) 回到 2000 年,我的第一个 Windows 程序是 filter hook driver .
我所做的是实现过滤器 Hook 驱动程序并编写一个用户空间应用程序,该应用程序准备了一个关于允许什么和禁止什么的过滤器表。当您绕过最初的一组蓝屏时(请参阅下面的内核模式调试提示),过滤模式驱动程序非常易于使用……它将每个数据包提供给您编写的函数,并根据返回码将其丢弃或让它过去。
不幸的是,该级别的数据包非常原始,没有重新组装片段,它看起来更像是事物的“网卡”端(但不再有以太网 header )。因此,您将很难解码数据包以使用该解决方案进行过滤。
还有防火墙 Hook 驱动程序,如本 codeproject article 中所讨论.
如果您使用的是 Vista 或 Server 2008,您最好看看 WFP (Windows Filtering Platform),这似乎是当今编写防火墙的强制 API。 除了几分钟前我在谷歌上搜索过滤器 Hook 驱动程序时谷歌搜索它之外,我不知道它。
更新:忘记调试提示:
Sysinternals DbgView 显示内核模式 DbgPrint 输出,更重要的是 - 它还可以从上次蓝屏产生的转储文件中读取它们。所以用 dbgprint 喷洒你的代码,如果它出现蓝屏,只需将转储加载到 dbgview 中,看看它死前发生了什么……非常有用。使用这个我在没有内核调试器的情况下进行了管理。
关于windows - 如何在 Windows 中挂接 TCP 堆栈以嗅探和修改数据包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/695057/