【问题标题】:Simulate an HTTP/2 stream with pcap4j使用 pcap4j 模拟 HTTP/2 流
【发布时间】:2021-03-13 11:25:52
【问题描述】:

我正在尝试捕获 TLS 连接的未加密字节并将它们记录到 cap 文件中以分析 HTTP/2 流量。我做了很多假设,这甚至是可能的。但如果我能在 Wireshark 等有用的工具中看到流量,我愿意捏造 HTTP/2 层以下的几乎所有内容。

https://github.com/yschimke/okhttp/commit/c6b0b4c0ba3b59d44cf292955eef2685ed6094e7#diff-d4b38ff70d61641e49af93db2892080f47a2480af92ca151b2daabb50bbc459b

我的方法最终归结为

return object : DelegatingSSLSocket(socket) {
   override fun getInputStream(): InputStream {
     return object : FilterInputStream(socket.inputStream) {
       override fun read(b: ByteArray, off: Int, len: Int): Int {
         return super.read(b, off, len).also { readLen ->
           dumper.dump(
             ipv4ReadPacketBuilder.payloadBuilder(
               tcpReadPacketBuilder
                 .payloadBuilder(
                   UnknownPacket.Builder().rawData(
                     b.sliceArray(off.rangeTo(off + readLen))
                   )
                 )
             )
               .build()
           )
         }
       }
     }
   }

   override fun getOutputStream(): OutputStream {
     return object : FilterOutputStream(socket.outputStream) {
       override fun write(b: ByteArray, off: Int, len: Int) {
         super.write(b, off, len)

         dumper.dump(
           ipv4WritePacketBuilder.payloadBuilder(
             tcpWritePacketBuilder
               .payloadBuilder(
                 UnknownPacket.Builder().rawData(b.sliceArray(off.rangeTo(off + len)))
               )
           )
             .build()
         )
       }
     }
   }
 }

有没有人对 pcap4j 或 pcap 文件有任何建议,看看我做错了什么?

我正在写的数据包是 IPv4>TCP>Data

但 Wireshark 显示

【问题讨论】:

    标签: wireshark libpcap pcap4j


    【解决方案1】:

    对于 IPv4,版本始终等于 4。您的图像表明您正在尝试编写 IPv4 标头,但十六进制代码显示它不是 IPv4 标头。

    第一个突出显示的数字是 56。应该是 4 而不是 5。因此 Wireshark 无法将其检测为 IPv4 数据包。

    参考我下面的链接,它将帮助您了解示例格式。

    How to obtain the source IP from a Wireshark dump of an HTTP GET request

    对于 TCP,它应该是 06 而不是 bb。

    您的源 IP 也是 0.0.0.0。它不会产生任何错误,但您可以根据需要进行更改。

    【讨论】:

      猜你喜欢
      • 2017-02-22
      • 1970-01-01
      • 2016-10-16
      • 2017-02-14
      • 1970-01-01
      • 2012-12-11
      • 1970-01-01
      • 1970-01-01
      • 2010-10-04
      相关资源
      最近更新 更多