我对编写基本防火墙感兴趣,该防火墙根据用户定义的规则阻止数据包。
基本上,我已经编写了处理规则的部分,一切都没问题,但现在我应该实施防火墙本身(我猜这很难)。
我搜索了很多,发现了一些充满细节的链接,例如this和this。第二个(Windows过滤平台)似乎最相关,现在,似乎没有关于ACTUALLY入门的任何数据,网站中的代码片段(好吧,在这个特定的主题)不能很好地解释这个主题
我想知道如何阻止匹配某个规则的数据包,因此包括几个阶段:
侦听任何传入数据包,所有端口,IP和协议。
检查数据包是否符合某些规则。
如果 匹配,请将其通过。如果不,请抓住并阻止它。
现在,第2阶段实际上已经编程,我只需要根据阶段1匹配它(用什么类/结构来表示数据包)。我不确定做第1阶段和第3阶段。
首先,我如何监听计算机中的所有连接?
其次,我如何管理我捕获的数据包,让它通过OR阻止它。
非常感谢帮助。我的意思是原始的WinAPI,但如果有一个适用于Windows的特定API(8,具体而言),我很乐意测试它。
答案 0 :(得分:1)
嗯,你是对的 - 你已经离开了困难的部分: - )
您需要编写网络驱动程序以将自身定位在网络堆栈中,以拦截来自网卡的数据包,然后对其进行过滤。有一些方法可以解决这个问题(例如使用packet injection functions),但是它们几乎和编写自己的驱动程序一样困难。
你可以看一下开源驱动程序 - winpcap是大多数人都熟悉的,因为它是Wireshark使用的数据包捕获驱动程序。