【问题标题】:strange characters in packets数据包中的奇怪字符
【发布时间】:2011-05-27 14:52:10
【问题描述】:

我正在使用 libpcap 为 http 数据包编写嗅探器。 有时打印 http payload 的内容我会得到奇怪的字符.. 你知道它们会是什么吗?

*xNT:���3�@�"P#1u`��$%S{M��

�~�tsE��}>a������}/���`�▒�A�y

谢谢你的回答。

如果标题是纯文本,那么问题出在我的代码上。

不管怎样,POST请求可以用base64编码吗?

【问题讨论】:

    标签: c http networking pcap


    【解决方案1】:

    这可能是您的显示字体没有字符的二进制数据。 HTTP 不一定传输文本,它可以是图像或客户端请求的任何其他形式的原始二进制文件。很难说没有看到 TCP 包的其余部分。

    【讨论】:

    • 嗯,好的。无论如何,任何 HTTP 标头始终是纯文本的?还是可以以某种方式对其进行编码?谢谢
    • HTTP 标头绝对始终是 ASCII 编码的纯文本。
    • 顺便提一下,您看到的二进制数据可能是图像或其他东西,但也有可能是带有 gzip 等传输编码的文本。
    • @cenos:标题字段不能包含原始二进制文件,因为根据the spec 禁止使用控制字符。
    • 好的,我明白了。所以我认为我的代码有问题..因为我可以看到 GET 请求但看不到 POST
    【解决方案2】:

    HTTP headerContent-Type 应该告诉您有效负载的类型。 HTTP 标头还应说明是否使用压缩。

    http://web-sniffer.net/ 比较你得到的东西或使用类似 Wireshark 的东西

    【讨论】:

    • 是的,我使用的是wireshark,问题可能出在我的代码中:(但这很奇怪..
    【解决方案3】:

    utils_http.c你有以下功能:

    static int handle_tcp(const struct tcphdr *tcp, int len)
    {
      char buf[PCAP_SNAPLEN];
      memcpy(buf, tcp + 1, len - sizeof(*tcp));
      DEBUG("DANY TCPDs tcp string: %s",buf);
      if (0 == handle_http(buf, len - sizeof(*tcp)))
        return 0;
      return 1;
    }
    

    这是假设 TCP 负载总是在 TCP 标头开始后 20 个字节开始(总是 20,因为sizeof(*tcp) == 20)。这不考虑任何 TCP 选项。如果您收到带有 TCP 选项的数据包(这很常见),handle_http() 将在其缓冲区的开头包含二进制编码的 TCP 选项,这可能就是您所看到的。

    试试这样的:

    static int handle_tcp(const struct tcphdr *tcp, int len)
    {
      char buf[PCAP_SNAPLEN];
      memcpy(buf, (void*)tcp + tcp->doff*4, len - tcp->doff*4);
      DEBUG("DANY TCPDs tcp string: %s",buf);
      if (0 == handle_http(buf, len - tcp->doff*4))
        return 0;
      return 1;
    }
    

    或者更好的是,我不知道为什么你每次有机会都会不断地制作几十个缓冲区副本。除非我遗漏了什么,否则你可以直接传递指针:

    static int handle_tcp(const struct tcphdr *tcp, int len) {
      return handle_http((void*)tcp + tcp->doff*4, len - tcp->doff*4);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-03-13
      • 1970-01-01
      • 2015-08-07
      • 2010-12-27
      • 1970-01-01
      • 2013-03-12
      相关资源
      最近更新 更多