从 Scapy 数据包中提取 GET 请求内容
Extract GET request contents from Scapy packet
我们正在解析通过 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。请不要 link 我们到其他相关堆栈 posts/questions 因为我们已经遇到过很多,并且 none 似乎解决了我们的问题。
提前致谢,非常感谢您的帮助!
请试试这个,我假设 http 是针对端口 80
if TCP in pkt and pkt[TCP].dport == 80 \
and pkt[TCP].load.startswith("GET") :
print pkt[TCP].load
我们正在解析通过 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。请不要 link 我们到其他相关堆栈 posts/questions 因为我们已经遇到过很多,并且 none 似乎解决了我们的问题。
提前致谢,非常感谢您的帮助!
请试试这个,我假设 http 是针对端口 80
if TCP in pkt and pkt[TCP].dport == 80 \
and pkt[TCP].load.startswith("GET") :
print pkt[TCP].load