从Scapy数据包中提取GET请求内容

时间:2017-10-23 01:43:10

标签: python-2.7 scapy pcap

我们正在解析通过tcpdump命令创建的pcap文件。在这些pcap文件中,我们试图在Raw字段中提取GET请求信息,并以可读格式打印。

pkts = rdpcap(filename)
for pkt in pkts:
    if Raw in pkt:
        raw_test = pkt[Raw].load
        if "GET" in raw_test:
             #do stuff

生成的raw_test文本看起来像这样: ▒פ▒▒▒▒▒▒2▒nk▒N▒▒bEr▒▒(|▒▒▒▒Ǫ=▒▒Ih▒H+%▒2.▒L[▒▒▒sl▒E▒▒▒k6▒]=މf▒d▒O▒hB{6s▒▒▒7O2!PCG&▒A.4I▒耓▒X▒▒▒W]▒▒M5@▒▒▒vK▒#Ċ▒ ▒▒▒m]Zb_▒8▒▒▒nb~ ]▒h▒6▒.̠▒49ؾG?▒▒▒4▒Ӹ▒▒G▒▒́G▒:Y▒▒▒▒.▒8▒▒d▒i4▒JAC)▒▒AO▒k▒z-▒▒S30▒X?▒▒W5B▒yW▒m▒▒▒/ƈ:G▒▒▒E▒▒<▒▒▒m▒]▒▒▒▒t▒:▒▒▒Ŕ▒W▒▒D▒E▒▒▒▒▒࿄▒▒zZ▒▒x▒]▒▒{{▒▒u▒){▒▒o▒▒G▒F▒▒▒▒▒v ▒▒▒b.

我们还尝试通过pkt.sprintf(“{Raw:%Raw.load%}\n”)格式化它,但产生了相同的输出

P.S。请不要将我们链接到其他相关的帖子/问题,因为我们已经遇到过很多这些帖子/问题,而且似乎没有一个能解决我们的问题。

提前感谢您,非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

请尝试这个,我假设http是针对端口80

if TCP in pkt and pkt[TCP].dport == 80 \
            and pkt[TCP].load.startswith("GET") :
        print pkt[TCP].load