我想为Windows编写数据包嗅探器和编辑器。我希望能够看到进出系统的所有数据包的内容,并可能修改它们。任何语言都可以,但我希望它运行得足够快,不会给系统带来负担。
我已经阅读了一些关于WinPcap的内容,但文档声称您无法使用WinPcap创建防火墙,因为它无法丢弃数据包。有哪些工具可以帮助我编写这个软件?
答案 0 :(得分:10)
去过那里,完成了:-)早在2000年,我的第一个Windows程序就是filter hook driver。
我所做的是实现过滤器钩子驱动程序并编写一个用户空间应用程序,该应用程序准备了允许的内容和禁止内容的过滤器表。当你绕过你的初始蓝屏时(见下面我在内核模式下的调试提示),过滤模式驱动程序非常容易使用...它将每个数据包提供给你编写的函数,并根据返回代码丢弃它或让它通过。
该级别的Unfortunatley数据包是QUITE raw,片段没有重新组装,它看起来更像是“网卡”结尾(但不再有以太网头)。因此,解码数据包以便使用该解决方案进行过滤将会非常糟糕。
还有防火墙钩子驱动程序,如本codeproject article中所述。
如果您使用的是Vista或Server 2008,那么最好先看看WFP(Windows Filtering Platform),这似乎是当天编写防火墙的强制性API。 几分钟前,当我搜索过滤器钩子驱动程序时,我不知道除了google图片之外的其他内容。
更新:忘记调试提示:
Sysinternals DbgView显示内核模式DbgPrint输出,更重要的是 - 它还可以从最后一个蓝屏生成的转储文件中读取它们。所以用dbgprint撒上你的代码,如果它是蓝屏,只需将转储加载到dbgview中,看看它在死之前发生了什么......非常有用。使用这个我管理没有内核调试器。
答案 1 :(得分:1)
我很确定你需要编写一个过滤器驱动程序。 http://en.wikipedia.org/wiki/Filter_driver我不仅仅知道:)。它肯定是一个C / C ++ Win32应用程序,你可能正在做一些内核方面的工作。首先下载DDK并找到一些示例过滤器驱动程序。
如果您只想监控进出IIS的内容,请考虑使用ISAPI过滤器。仍然是Win32中的C / C ++,但比编写设备驱动程序要容易。
答案 2 :(得分:1)
执行此操作的C#代码是here
答案 3 :(得分:0)
答案 4 :(得分:0)
如果你出于实际原因这样做,而不只是为了好玩,那么你应该看看Microsoft Network Monitor。主页讨论版本3.3 beta,但您可以从下载页面下载3.2版。还有一个用于NM的SDK,以及为您自己的网络协议编写解析器的能力。
答案 5 :(得分:0)
你需要问一个问题,你不知道你需要问什么;你想知道哪些应用程序套接字属于?或者您是否乐于被限制在IP:端口四进制连接?
如果您想了解应用程序,则需要编写TDI过滤器驱动程序,但这使得处理接收几乎不可能,因为您无法阻止接收路径。
如果您对IP:端口感到满意,请进入NDIS级别,我相信您可以阻止接收内容。
一句警告;如果你没有以前的内核经验,那么编写这些驱动程序中的任何一个(尽管TDI非常难)将需要大约两年的全职时间。
答案 6 :(得分:0)