python - 在 python 中解码 HTTP 数据包内容,如 wireshark 中所见

标签 python http tcp sniffing

好吧,基本上我想做的是拦截一些我知道包含一些 JSON 数据的数据包。但是 HTTP 数据包不是人类可读的,所以这是我的问题,我需要使整个数据包(不仅仅是 header ,它已经是纯文本)人类可读。我完全没有网络经验。

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 获得相同的信息是微不足道的,事实证明它不是.

最佳答案

HTTP 和 JSON 都是人类可读的。在 Wireshark 上,选择与您的 HTTP 事务相关的数据包并单击鼠标右键,选择 Follow TCP Stream,这应该以人类可读的形式显示事务。

关于python - 在 python 中解码 HTTP 数据包内容,如 wireshark 中所见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5052925/

相关文章:

Python 从列表中返回唯一的单词(不区分大小写)

python - 在 python 中运行 matlab 代码

Python ctypes : One byte variable

python - 如何使用 django 在网络浏览器上推送通知

node.js - 检查请求是否处于重定向状态

http - AWS CloudFront - 转发用户代理但不对其进行缓存

java - 使用 java 调用 SOAP webservice

tcp - 协议(protocol) header 中的十六进制值

Ruby TCP 聊天服务器

http - 托管在不同 Web 服务器上的 HTTP 请求对象的 TCP 连接