【问题标题】:Howto convert to string and read data from TCP packet如何转换为字符串并从 TCP 数据包中读取数据
【发布时间】:2011-02-06 16:15:20
【问题描述】:

我使用了sharpcap 来捕获TCP 数据包。现在我想从 TCP 数据包重建 HTTP 数据包,但我不知道如何。我在某处读到我可以在 TCP 数据中找到 HTTP 数据包的开始...我尝试使用以下代码将 byte[] TCP 数据转换为字符串: 字符串 s = System.Text.Encoding.UTF8.GetString(tcp_pack.Data); 但字符串不可读。就像一个用记事本打开的二进制文件。 是因为数据被加密还是代码不正确? 如何从 TCP 数据包重构 HTTP 数据包?

【问题讨论】:

  • HTTP 请求/响应不会加密,除非它们通过 SSL (HTTPS)。是的,您可以重建 HTTP 数据包,但我以前从未使用过 sharpcap,所以我无法说出如何准确地使用它的功能/方法。 C/C++ 示例对您有任何帮助吗?

标签: sharppcap


【解决方案1】:

试试“Encoding.BigEndianUnicode.GetString(tcp_pack.Data)”

【讨论】:

    【解决方案2】:

    要做到这一点并不容易,因为您需要在内存中重建 TCP 会话。

    本质上,如果发送的消息大于一个数据包,它就会被分成多个数据包。因此,您需要捕获这些数据包,以正确的顺序排列它们,然后手动重组数据。

    如果消息很短/简单并且没有分解成多个部分,那么您需要找出有效负载的格式。先尝试用 ASCII 解码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-24
      • 2016-08-09
      • 1970-01-01
      • 2014-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多