【发布时间】:2015-01-25 15:29:05
【问题描述】:
我有兴趣编写一个根据用户定义的规则阻止数据包的基本防火墙。
基本上,我已经编写了处理规则的部分,一切正常,但现在我应该自己实现防火墙(我猜是最难的部分)。
我进行了很多搜索,发现了一些详细的链接,例如 this 和 this。第二个(Windows 过滤平台)似乎最相关,现在,似乎没有任何关于实际开始的数据,站点中的代码 sn-ps(嗯,在这个特定主题中)并没有解释所有主题太好了。
我想知道如何简单地阻止匹配某个规则的数据包,因此包括几个阶段:
侦听任何传入数据包、所有端口、IP 和协议。
检查数据包是否符合特定规则。
如果它匹配,让它通过。如果它没有,则将其捕获并在那里阻止它。
现在,stage 2其实已经编程好了,我只需要根据stage 1来匹配(用什么类/结构来表示数据包)。我不确定是否要进行第 1 阶段和第 3 阶段。
首先,我如何监听计算机中的所有连接?
其次,我如何管理我捕获的数据包,让它通过或阻止它。
我们将不胜感激。我的意思是原始的 WinAPI,但如果有某个好的 API 可以在 Windows(特别是 8)上运行,我很乐意对其进行测试。
【问题讨论】:
-
不清楚这个问题是否应该以“太宽泛”、“不清楚你在问什么”、“因为它不包含任何代码而离题”或“离题”而结束因为这是对场外资源或建议的请求”。
-
将“windows 数据包过滤器”打入您最喜欢的搜索引擎。
-
libpcap 和 tcpdump?难道你不能用这样的方式实现你的数据包捕获和分析吗?
标签: c++ windows networking firewall