在C#/C++中创建数据包筛选器
Creating a Packet Filter in C#/C++?
过去,我编写过C++插件,绕过Winsock中的recvfrom()函数,并丢弃/操纵来自主应用程序的传入流量。
我现在希望编写一个独立的应用程序,它可以监听所有接口,读取传入的UDP数据包,并在数据包结构与用于针对我们的已知漏洞相匹配时丢弃它们。
最好的方法是什么?这将在Windows Server 2008计算机上使用,这些计算机为NIC分配了大量静态IPv4地址。我曾考虑过可能绕过Winsock,但由于这不是一个功能丰富的应用程序,所以无论采用什么最简单的方法来实现这一点都非常好。
注意我开始使用Pcap.Net实现这一点,但意识到我不能用这种方式丢弃数据包,所以我真的不知道如何处理。
在C#中,这可能不是一项简单的任务,因为过滤网络可能会将您绑定到操作系统内核中的低级代码。
Windows Server 2008中还有一些API用于设置自定义数据包筛选器。
虽然在p/invoke中可能是可包装的,但我建议使用C++和本机代码。
您可能感兴趣的其他阅读内容在这里的代码项目中。
您想要使用EasyHook。如果你说它实际上只是一个你需要担心的主要应用程序,你可以创建一个简单的用户模式挂钩,挂钩send()和receive()。你可以看看oSpy是如何做到这一点的(尽管oSpy的项目相当大)。EasyHook使挂钩变得非常容易。
相关文章:
- boost::asio UDP 广播客户端仅接收"fast"数据包
- 如何使用发送数据包所花费的时间计算两个节点之间的距离?
- 发送固定大小的 UDP 数据包
- pcap_handler回调仅在使用 NPCAP v0.9991 时包含空数据包
- 在 c++ 中解析数据包数据的最佳方法是什么?
- 接受函数在发送数据包时等待
- 如何在 omnet++ 中发送自定义数据包?
- 数据包访问实践
- 在C++中创建一个简单的数据包路由器,如何跟踪"客户端"?
- 德拉吉诺 LG01-S 收到异常数据包并停止工作
- 将数据包从C++服务器发送到NodeJs服务器时出现MessagePack解码错误
- 使用C++将UDP数据包存储在Structure中
- FFmpeg av_read_frame从音频流返回数据包
- 为什么操作系统正在更改我的数据包的指定传出端口
- 是否可以将多个结构作为一个数据包存储在一个函数中,然后传递给其他函数并在那里提取?
- recvfrom 只收到几个数据包,之后它进入等待状态
- 如何调试由 C++ 编写的 npm 数据包
- 如何在INET的应用层中发送广播数据包
- 为什么启用 Windows 基本筛选引擎服务后,我的应用程序无法接收 UDP 数据包?
- 在C#/C++中创建数据包筛选器