如何使用scapy解码H2C消息

问题描述 投票:0回答:1

scapy 有一个名为 http2 的模块,在其信息中:“编码/解码 HTTP/2 帧”

import scapy.contrib.http2 as http2
packets = rdpcap("in.pcapng")
for p in packets:
    if p.haslayer(TCP):
        p[TCP].payload # how to turn this into a http2.H2Seq or http2.H2Frame??

p[TCP].payload.name
给出“原始”,
p.haslayer(http2.H2Seq)
http2.H2Frame
给出假。

我想将这个数据包转换为http2数据包,然后解析标头或数据(如果有)。

scapy http2
1个回答
0
投票

默认情况下,scapy 甚至不解析 HTTP 负载,直到您导入

scapy.layers.http
这段代码使它起作用。因此,为了解析 HTTP/2,您需要添加:

from scapy.packet import bind_layers
from scapy.contrib.http2 import *
bind_layers(TCP, H2Seq)

你也可以用

H2Seq(bytes(p[TCP].payload))
自己解析。

就我而言,我在一个使用非 80 端口的 pcap 文件中同时拥有 HTTP 1 和 2 流量,并且无法让 scapy 同时正确解析这两个流量,因此我自己解析它。

© www.soinside.com 2019 - 2024. All rights reserved.