【问题标题】:How to verify if a packet in scapy has a Raw layer?如何验证 scapy 中的数据包是否具有原始层?
【发布时间】:2020-12-25 03:09:30
【问题描述】:

你好,这是我的代码:

#!usr/bin/env python

import scapy.all as scapy
from scapy_http import http

def sniff(interface):
    scapy.sniff(iface=interface, store=False, prn=process_sniffed_packet)

def process_sniffed_packet(packet):
    if packet.haslayer(http.HTTPRequest):`enter code here`
        if packet.haslayer(Raw)
            print(packet[scapy.Raw].load)

sniff("eth0")

但是,每次我运行这段代码时,我都会收到以下错误:

    if packet.haslayer(Raw)
                          ^
SyntaxError: invalid syntax

【问题讨论】:

  • 绝对可以检查原始层,但这里有一个不相关的语法错误。您能否使用此documentation 格式化您的代码,以便我们可以看到错误。
  • 不要粗鲁,但问题是如此明显,您似乎根本没有研究任何东西,也没有尝试任何东西。回答这个问题实际上并不能帮助您解决(未来?)问题,而是让您依赖论坛。这不是精神,看看stackoverflow.com/help/how-to-askdocs.python.org/3/tutorial

标签: scapy packet sniffer


【解决方案1】:

您在这一行缺少一个冒号:

if packet.haslayer(Raw):

看到你是如何使用 import scapy.all as scapy 而不是 from scapy.all import * 的,我认为它也应该是

if packet.haslayer(scapy.Raw):

【讨论】:

    猜你喜欢
    • 2014-04-01
    • 2018-04-08
    • 2011-07-29
    • 1970-01-01
    • 1970-01-01
    • 2015-05-21
    • 2016-07-20
    • 2020-08-05
    • 2020-11-23
    相关资源
    最近更新 更多