程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了使用 pcap4j 模拟 HTTP/2 流大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决使用 pcap4j 模拟 http/2 流?

开发过程中遇到使用 pcap4j 模拟 http/2 流的问题如何解决?下面主要结合日常开发的经验,给出你关于使用 pcap4j 模拟 http/2 流的解决方法建议,希望对你解决使用 pcap4j 模拟 http/2 流有所启发或帮助;

我正在尝试捕获 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,len: int) {
         super.write(b,len)

         dumper.dump(
           ipv4WritePacketBuilder.payloadBuilder(
             tcpWritePacketBuilder
               .payloadBuilder(
                 UnkNownPacket.builder().rawData(b.sliceArray(off.rangeto(off + len)))
               )
           )
             .build()
         )
       }
     }
   }
 }

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

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

使用 pcap4j 模拟 HTTP/2 流

但 Wireshark 显示

使用 pcap4j 模拟 HTTP/2 流

解决方法

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

使用 pcap4j 模拟 HTTP/2 流

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

使用 pcap4j 模拟 HTTP/2 流

我下面的链接,它会帮助你理解示例格式。

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

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

使用 pcap4j 模拟 HTTP/2 流

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

使用 pcap4j 模拟 HTTP/2 流

大佬总结

以上是大佬教程为你收集整理的使用 pcap4j 模拟 HTTP/2 流全部内容,希望文章能够帮你解决使用 pcap4j 模拟 HTTP/2 流所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。