【问题标题】:How to get http support in scapy如何在 scapy 中获得 http 支持
【发布时间】:2019-11-04 12:43:54
【问题描述】:

我正在使用 scapy 在 python 中构建数据包嗅探器,现在,我想过滤接收到的 http 数据包并从中提取 url(主机 + 路径),但我的程序崩溃并显示消息:文件“packet_sniffer.py” ,第 4 行,在 从 scapy.layers.http 导入 * ImportError: 没有名为 http 的模块

当键入 scapy 层 http 导入时,我可以自动完成 http 部分,因此它似乎可以识别它,但运行时它会崩溃。

我在我的代码部分尝试了其他语法,例如使用“scapy.http.HTTPRequest” “scapy.layers.http.HTTPRequest”

#!/usr/bin/env python

import scapy.all as scapy
from scapy.layers.http import *




def sniff(interface):
scapy.sniff(iface=interface,
            store=False,
            prn=process_sniffed_packet,
            lfilter=lambda p: "POST" in str(p),
            filter="tcp port 80")


def process_sniffed_packet(packet):
    url = packet[scapy.layers.http.HTTPRequest].Host + packet[scapy.layers.http.HTTPRequest].Path
    print(url)

我的模块导入或代码有问题吗?

** 注意,我使用的是 scapy 2.4.3

【问题讨论】:

    标签: python http scapy packet-sniffers


    【解决方案1】:

    确保您使用的是 Scapy 2.4.3

    【讨论】:

    • 我使用的是2.4.3版本
    • 这在技术上听起来是不可能的。 Scapy 2.4.3 包含一个模块scapy.layers.http。确保 scapy.__version__ 是 2.4.3。如果您有多个 Python 版本的环境,请确保使用正确的管理器安装 Scapy(例如 pip3...)
    【解决方案2】:

    如何使用库scapy_httpfrom scapy.layers.http import * 替换为from scapy_http import * 喜欢this

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-19
    • 2021-01-06
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-02
    • 2015-05-16
    相关资源
    最近更新 更多