在Python中解码Wireshark中的HTTP数据包内容
好的,简单来说,我想要做的是拦截一些我知道包含JSON数据的数据包。但是HTTP数据包不是人能直接看懂的,这就是我的问题,我需要让整个数据包(不仅仅是已经是明文的头部)变得人能看懂。我对网络方面完全没有经验。
import pcap
from impacket import ImpactDecoder, ImpactPacket
def print_packet(pktlen, data, timestamp):
if not data:
return
decoder = ImpactDecoder.EthDecoder()
ether = decoder.decode(data)
iphdr = ether.child()
tcphdr = iphdr.child()
if iphdr.get_ip_src() == '*******':
print tcphdr
p = pcap.pcapObject()
dev = 'wlan0'
p.open_live(dev, 1600, 0, 100)
try:
p.setfilter('tcp', 0, 0)
while 1:
p.loop(1, print_packet)
except KeyboardInterrupt:
print 'shutting down'
我找到了一些工具,比如libpcap-python、scapy、Impacket和pcapy等等。它们看起来都不错,但我就是搞不懂怎么用它们正确解码数据包。
Wireshark有一个叫“基于行的文本数据:text/html”的功能,基本上可以显示我想要的信息,所以我以为用Python获取相同的信息会很简单,结果发现并不是这样。
1 个回答
2
HTTP和JSON都是人类可以读懂的格式。在Wireshark这个工具里,找到一个和你的HTTP交易有关的数据包,右键点击它,选择“跟踪TCP流”,这样就能以人类能理解的方式显示这个交易的内容。