如何使用winpcap修改HTTP响应数据包?

时间:2010-05-10 11:23:43

标签: c http networking winpcap

这里有两个问题:

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

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

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

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

4 个答案:

答案 0 :(得分:3)

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

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

如果你想发送另一个回复 - 除了发送的回复之外 - 我不确定你要做的是什么。

答案 1 :(得分:1)

  1. 使用GZIP解压缩程序对其进行解压缩。
  2. 删除Content-Encoding标头并添加一个Content-Length标头,表示新的长度(以字节为单位)。

  3. 那就是说,为了得到更好的答案,你需要在问题中提供更多的背景。这就是气味。你想要实现的是什么,你认为修改HTTP响应是正确的解决方案?

答案 2 :(得分:1)

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

答案 3 :(得分:1)

winpcap是一种尝试修改TCP流的奇怪方法 - 您没有解释为什么要尝试这样做,但您应该能够通过编写自己的HTTP代理来实现此目的。这样,您就会看到一个直接的数据流,您可以截取,记录和修改您心中的内容。完成后,从请求标题中删除Accept-Encoding,然后您就不需要首先处理gzip压缩响应。

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