0

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

4

2 回答 2

0

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

于 2010-04-15T09:30:50.363 回答
0

没有简单的方法可以做到这一点,因为您需要在内存中重建 TCP 会话。

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

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

于 2010-11-10T23:26:38.030 回答