【问题标题】:Network programming and Packets interactions网络编程和数据包交互
【发布时间】:2011-02-14 22:07:27
【问题描述】:

问候,

这个月我将开始写我的硕士论文。我的论文主题是网络安全。

我需要处理网络接口和数据包。

我之前使用 shappcap 与数据包交互,但我不确定 C# 是否是处理网络编程和数据包的最强大的语言。

我曾使用过wireshark,我看到了它的强大功能,而且正如你所知,winsharp 是使用 C++ 开发的开源软件。

我不确定是否应该使用 C# 或 C++ 进行网络安全编程,我希望您了解最好的语言可能是用于网络编程和数据包交互。

我应该使用 C#、C++ 还是 java 或其他东西?

请给我你的建议。

谢谢,

更新 …………

我将通过获取每个数据包并读取其上的每个字段然后使用这些值来进行不同的数据包挖掘,并且在同一阶段我会修改一些数据包值然后将它们重新发送回去。

我想控制数据包,因为它被网络接口接收到,直到它传递到应用层。

还有

【问题讨论】:

  • 我也在研究网络安全。你会做什么?你能说清楚一点吗?
  • 使用您最熟悉的语言。 C/C++ 可能会更好,但如果你不太了解它们,可能会很难。

标签: c# java c++ network-programming packet


【解决方案1】:

您几乎可以使用任何您想要的语言进行网络编程。如果您对所提到的所有语言都同样熟悉,那么您应该确定您将与哪些系统库或 API 交互。例如,如果您将在 Unix 系统上进行数据包级网络编程,那么 C 可能是您最好的选择。如果您想与 Wireshark 集成,请使用 C++。如果要使用 Apache Commons 组件,请使用 Java。我建议您在尝试决定使用哪种语言之前,为您的实际程序提出一组更具体的要求。

【讨论】:

  • 我同意 c 拥有最多的教程和最好的套接字编程,但取决于。他应该更清楚以获得最佳答案。
  • 我将通过获取每个数据包并读取其中的每个字段然后使用这些值来进行不同的数据包挖掘,并且在同一阶段我会修改一些数据包值然后将它们重新发送回去。我想控制数据包,因为它被网络接口接收,直到它传递到应用层。
  • 听起来您想使用 *pcap 系列中的某些东西(WinPcap、libpcap 等)。 C 或 C++ 可能是最常见的选择,并且拥有您可以利用的最现有代码。
【解决方案2】:

WireShark 使用 WinPCap,所以你也可以走这条路。

对于安全应用程序,这是一个入侵检测系统还是您真的想丢弃违规数据包? WinPCap、SharpPCap 等不允许您丢弃数据包,为此您需要查看某种中间驱动程序或查看 Windows 过滤平台 (WFP)
http://www.microsoft.com/whdc/device/network/WFP.mspx

恕我直言,如果你能找到一个回调驱动程序,它可以回调到用户模式并允许你过滤来自 C# 或 C++ 的数据包,这对于实验目的等可能没问题。但对于生产解决方案,我 认为你需要坚持内核级别,以确保你可以跟上窥视量。

【讨论】:

    【解决方案3】:

    使用 C++、Boost 和 Poco,您可以为所欲为。 Boost asio 是:便携式网络,包括套接字、计时器、主机名解析和套接字 iostream。 Poco 库还为网络、密码学 NetSSL 等提供解决方案。有关更多信息,您可以访问 www.boost.org 和 www.pocoproject.org

    【讨论】:

    • 我不认为 Boost asio 提供原始套接字。 libpcap 是我所知道的用于处理不符合要求的数据包的唯一可移植选项。
    【解决方案4】:

    如果您愿意,可以使用 java - jpcap 效果很好。

    【讨论】:

      【解决方案5】:

      我建议使用 C#,因为有一个名为 Pcap.Net 的非常强大的库,它使用 .NET 代码包装了 WinPcap。这应该使您可以轻松地接收、发送和解释不同协议的不同数据包。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-04-07
        • 2013-08-12
        • 2019-07-05
        • 2016-05-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-02-09
        相关资源
        最近更新 更多