我想为 Windows 编写一个数据包嗅探器和编辑器。我希望能够查看进入和离开我的系统的所有数据包的内容,并可能对其进行修改。任何语言都可以,但我希望它运行得足够快,以免给系统带来负担。
我读过一些有关 WinPcap 的内容,但文档声称您不能使用 WinPcap 创建防火墙,因为它不能丢弃数据包。什么工具可以帮助我编写这个软件?
在那里,完成了 :-) 早在 2000 年,我的第一个 Windows 程序就是过滤器钩子驱动程序 http://msdn.microsoft.com/en-us/library/aa504969.aspx.
我所做的是实现过滤器挂钩驱动程序并编写一个用户空间应用程序,该应用程序准备了一个过滤器表,说明允许什么和不允许什么。当您绕过最初的一组蓝屏时(请参阅下面的内核模式调试提示),过滤器模式驱动程序非常易于使用...它将每个数据包提供给您编写的函数,并根据返回代码将其丢弃或者让它过去。
不幸的是,该级别的数据包是相当原始的,碎片不会重新组装,它看起来更像是“网卡”末端(但不再有以太网标头)。因此,使用该解决方案解码数据包以进行过滤会非常困难。
还有防火墙挂钩驱动程序,如此处讨论的代码项目文章 http://www.codeproject.com/KB/IP/FwHookDrv.aspx.
如果您使用的是 Vista 或 Server 2008,您最好看看 WFP (Windows过滤平台 http://www.microsoft.com/whdc/device/network/wfp.mspx)相反,这似乎是当今编写防火墙的强制 API。
除了几分钟前我在谷歌上搜索过滤器挂钩驱动程序时谷歌将其打开之外,我不知道这一点。
更新:忘记了调试提示:
Sysinternals DbgView 显示内核模式 DbgPrint 输出,更重要的是 - 它还可以从上次蓝屏生成的转储文件中读取它们。因此,在您的代码中添加 dbgprint,如果出现蓝屏,只需将转储加载到 dbgview 中,看看它死掉之前发生了什么......非常有用。使用这个我可以在没有内核调试器的情况下进行管理。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)