首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python3代位模块中的错误..。包嗅探器

python3代位模块中的错误..。包嗅探器
EN

Stack Overflow用户
提问于 2020-09-20 06:11:58
回答 1查看 619关注 0票数 2

我正在使用python-3.7构建一个嗅探工具,当我试图使用scapy_http模块时,我得到了这个错误。

它在python-2.x中运行得很好。对象类型为packetscapy.Raw.load

代码:

代码语言:javascript
复制
#!usr/bin/env python
import scapy.all as scapy
from scapy.layers import http

def sniff(interface):
    scapy.sniff(iface=interface, store=False, prn=process_sniffed_packet)
    #store=Flase(does not store the output in memory)
    #prn= call another  function after one packet or any data is sniffed is sniffed

def process_sniffed_packet(packet):
    if packet.haslayer(http.HTTPRequest):
        if packet.haslayer(scapy.Raw):
            load = packet[scapy.Raw].load
            if "username" in load:
                print(load)
sniff("eth0")

错误:

代码语言:javascript
复制
 File "packet_sniffer.py", line 16, in <module>
    sniff("eth0")
  File "packet_sniffer.py", line 6, in sniff
    scapy.sniff(iface=interface, store=False, prn=process_sniffed_packet)
  File "/usr/local/lib/python3.8/site-packages/scapy/sendrecv.py", line 1036, in sniff
    sniffer._run(*args, **kwargs)
  File "/usr/local/lib/python3.8/site-packages/scapy/sendrecv.py", line 989, in _run
    session.on_packet_received(p)
  File "/usr/local/lib/python3.8/site-packages/scapy/sessions.py", line 82, in on_packet_received
    result = self.prn(pkt)
  File "packet_sniffer.py", line 14, in process_sniffed_packet
    if "username" in load:
****TypeError: a bytes-like object is required, not 'str'****
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-20 07:09:16

packet[scapy.Raw].load使用来自scapy.packet.Raw类的load。您正在要求python确定字符串是否位于字节对象的内部,正如它所说的那样,这是一个类型错误。复制此错误很容易:

代码语言:javascript
复制
>>> if "word" in b"word":
...     pass
...
Traceback (most recent call last):
  File "<console>", line 1, in <module>
TypeError: a bytes-like object is required, not 'str'

试着在第14行中使用if "username" in str(load):if b"username" in load:,这样就不会出现类型错配。

注意到:由于使用import scapy.all as scapy,类层次结构很混乱,因此scapy.Raw与代码片段中的scapy.Packet.Raw相同。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63976062

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档