在Python中解码Wireshark中的HTTP数据包内容

3 投票
1 回答
4511 浏览
提问于 2025-04-16 12:08

好的,简单来说,我想要做的是拦截一些我知道包含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流”,这样就能以人类能理解的方式显示这个交易的内容。

撰写回答