在 Windows 的 C++ 中编程数据包阻止程序(基本防火墙)
Programming a Packet Blocker (basic firewall) in C++ for Windows
我对编程一个基本的防火墙感兴趣,该防火墙根据用户定义的规则阻止数据包。
基本上,我已经编写了处理规则的部分,一切都很好,但现在我应该实现防火墙本身(我猜是困难的部分)。
我搜索了很多,发现了几个充满细节的链接,例如这个和这个。第二个(Windows过滤平台)似乎是最相关的,现在,似乎没有任何关于实际入门的数据,站点中的代码片段(嗯,在这个特定主题中)并不能很好地解释这个主题。
我想简单地知道如何阻止与特定规则匹配的数据包,因此包括几个阶段:
-
侦听任何传入数据包、所有端口、IP 和协议。
-
检查数据包是否与特定规则匹配。
-
如果匹配,请让它通过。如果没有,请捕获它并在那里阻止它。
2 实际上已经编程好了,我只需要根据阶段 1 匹配它(使用什么类/结构来表示数据包)。我不确定是否要做第 1 阶段和第 3 阶段。
首先,我如何收听计算机中的所有连接?
其次,如何管理我捕获的数据包,让它通过或阻止它。
帮助将不胜感激。我的意思是原始的WinAPI,但如果有一个好的API可以在Windows(特别是8)上运行,我很乐意测试它。
好吧,你是对的 - 你把困难的部分留到了最后:-)
您需要编写网络驱动程序以将自身定位在网络堆栈中,以拦截来自网卡的数据包,然后过滤它们。有一些方法可以解决这个问题(例如使用数据包注入函数),但它们几乎和编写自己的驱动程序一样困难。
您可以查看开源驱动程序 - winpcap 是大多数人熟悉的驱动程序,因为它是 Wireshark 使用的数据包捕获驱动程序。
相关文章:
- Mongodb c++驱动程序:如何查询元素的数组
- C++,系统无法执行指定的程序
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- 在VS代码中交叉编译Windows与Linux上的MinGW的SDL程序
- C++ Windows 驱动程序MSB3030无法复制该文件,因为它找不到
- 重载操作程序时出错>>用于类中的字符串 memebr
- 获取日期异步信号安全吗?如果在信号处理程序中使用,它会导致死锁吗
- 试图在visual studio上用C++创建一个桌面应用程序
- 模板元程序查找相似的连续类型名称
- FFmpeg:制作一个应用程序比直接使用ffmepg更好吗
- 如何通过cpp程序运行shell脚本
- 有没有什么方法可以使用一个函数中定义的常量变量,也可以由c++中同一程序中的其他函数使用
- IPC使用多个管道和分支进程来运行Python程序
- 如何将c++程序的一些输出传递给shell,以便在shell中使用
- 使用C++程序合并排序没有得到正确的输出
- 基于boost的程序的静态链接——zlib问题
- 程序崩溃并显示"std::out_of_range"错误
- 在 Windows 的 C++ 中编程数据包阻止程序(基本防火墙)
- 如何以编程方式永久删除程序上的防火墙检查
- 如何从Windows防火墙中获取例外列表中的所有应用程序