包操作(丢弃和修改)

本文关键字:修改 操作 包操作 | 更新日期: 2023-09-27 18:08:37

我正在用c#编写一个简单的网络安全程序。为了捕获网络中的流量,我将使用sharppcap库,它可以捕获所有数据包并在UI上显示其详细信息。然而,我在库中找不到任何方法可以用来丢弃任何受其端口、源、目的地或数据内容影响的数据包。Sharppcap支持这样的功能吗?如果没有,会有图书馆可以使用吗?

包操作(丢弃和修改)

sharppcap库只是为数据包拦截和传输提供了一个通用的API。在Windows上,您可能会使用WinPcap和sharppcap。在Windows上,如果不为Windows包过滤平台编写一种特殊的驱动程序,就不能检查和更改数据包。这也意味着你需要使用c++或C。

WinPcap支持读取到达网卡的数据包,也支持从网卡传输原始数据,其中包括传输自定义数据包的能力,用于调试,安全研究,或开发工具来探测网络或其他。

简短的回答是,没有sharppcap不支持这个,你需要自己制作驱动程序。如果你可以离开Windows,你可以设置一个专用的硬件防火墙,用C编写自定义拦截器,如果你使用Debian或Arch Linux这样的Linux发行版,在一天之内。

如果你决定坚持使用Windows,当你的负载接近网卡容量的50%时,你也会遇到一个令人讨厌的惊喜。Windows将停止转发到网络过滤堆栈在显著负载下,以提高性能。我注意到,在速度约为200mbit/sec的千兆网卡上,WinPcap甚至没有看到所有数据包的5%。为了测试这一点,我使用了一个位于开关和被测试机器之间的专用捕获设备。捕获设备可以以线速度捕获,远程机器也可以,但Windows上的网络过滤堆栈不能。