【问题标题】:packet manipulation (dropping and altering)数据包操作(丢弃和更改)
【发布时间】:2014-08-03 11:06:33
【问题描述】:

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

【问题讨论】:

  • 您是在交换机内运行它还是什么?我无法想象 .NET 是这个问题的答案。
  • 另外,如果不是,而且您只是在嗅探,这不是网络的工作方式,所以我不确定您是否真的了解您的要求/环境

标签: c# .net sharppcap


【解决方案1】:

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

WinPcap 支持读取到达网卡的数据包,还支持从网卡传输原始数据,其中包括传输自定义数据包以进行调试、安全研究或开发工具以探测网络或您拥有什么的能力.

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

如果您决定继续使用 Windows,那么当您的负载接近网卡容量的 50% 时,您也会感到意外。 Windows 将在负载很大的情况下停止转发到网络过滤堆栈,以提高性能。我注意到在大约 200 mbit/sec 的千兆网卡上,WinPcap 甚至没有看到所有数据包的 5%。为了测试这一点,我使用了一个位于交换机和被测试机器之间的专用捕获设备。捕获设备可以线速捕获,远程机器也可以,但 Windows 上的网络过滤堆栈不能。

【讨论】:

    猜你喜欢
    • 2014-05-18
    • 1970-01-01
    • 1970-01-01
    • 2010-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-07
    • 1970-01-01
    相关资源
    最近更新 更多