1

这里有两个问题:

  1. 如果内容被编码怎么办:gzip...
  2. 我是否还需要更改标头部分以使 HTTP 数据包有效(如果有校验和?)

更新

有实际经验的人可以详细说明所涉及的步骤吗?

我正在使用winpcap和 bpftcp and src port 80来过滤流量,所以我的工作在于这个回调函数:

void packet_handler(u_char *param, const struct pcap_pkthdr *header, const u_char *pkt_data)
4

4 回答 4

3

WinPcap 不允许您更改已发送的数据包。

如果数据包已发送,WinPcap 不会阻止它到达目的地。

如果您想发送另一个响应 - 除了已发送的响应之外 - 我不确定您要实现什么。

于 2010-05-14T06:38:58.477 回答
1
  1. 使用 GZIP 解压缩器对其进行解压缩。
  2. 删除Content-Encoding标头并添加Content-Length代表新长度的标头(以字节为单位)。

也就是说,为了获得更好的答案,您需要在问题中提供更多上下文。这就是气味。您想要实现什么,并且您认为修改 HTTP 响应是正确的解决方案?

于 2010-05-10T11:47:44.190 回答
1

libpcap用于捕获。如果您想修改和注入网络数据包,您需要另一个库,例如libnet.

于 2010-05-19T10:20:09.913 回答
1

winpcap 是尝试修改 TCP 流的一种奇怪方法 - 您没有解释为什么要尝试这样做,但您应该可以通过编写自己的 HTTP 代理来实现这一点。这样,您将获得一个直接的数据流,您可以截取、记录和修改您心中的内容。一旦你这样做了,从请求标头中去掉 Accept-Encoding,那么你就不需要首先处理 gzipped 响应。

没有 HTTP 校验和,但较低层有校验和;通过在应用程序级别上作为代理服务器运行,您可以让网络堆栈为您处理所有这些。

于 2010-05-20T10:29:54.070 回答