Python 3.x 获取python3 scapy模块中的错误。。。。包嗅探器

Python 3.x 获取python3 scapy模块中的错误。。。。包嗅探器,python-3.x,scapy,Python 3.x,Scapy,我正在使用python-3.7构建一个嗅探工具,我在尝试使用scapy_http模块时遇到了这个错误 它在python-2.x中运行良好。对象类型为数据包[scapy.Raw].load 代码: 错误: File "packet_sniffer.py", line 16, in <module> sniff("eth0") File "packet_sniffer.py", line 6, in sniff

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

它在python-2.x中运行良好。对象类型为数据包[scapy.Raw].load

代码:

错误:

 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'****
文件“packet\u sniffer.py”,第16行,在
嗅探(“eth0”)
文件“packet_sniffer.py”,第6行,在sniff中
scapy.sniff(iface=interface,store=False,prn=process\u sniffed\u数据包)
sniff中的文件“/usr/local/lib/python3.8/site packages/scapy/sendrecv.py”,第1036行
嗅探器。_运行(*args,**kwargs)
文件“/usr/local/lib/python3.8/site packages/scapy/sendrecv.py”,第989行,正在运行
会话。在收到数据包时(p)
文件“/usr/local/lib/python3.8/site packages/scapy/sessions.py”,第82行,在收到的on_数据包中
结果=self.prn(pkt)
文件“packet\u sniffer.py”,第14行,正在处理\u sniffer\u数据包
如果“用户名”处于加载状态:
****TypeError:需要类似字节的对象,而不是“str”****

数据包[scapy.Raw]。load
使用类中的
load
。您要求python确定字符串是否在字节对象内,正如它所说的,这是一个类型错误。很容易复制此错误:

>>> 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'
>>如果b“word”中的“word”:
...     通过
...
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
TypeError:需要类似字节的对象,而不是“str”
尝试在str(load)中使用
如果“username”:
或者在load:中使用
如果在第14行使用b“username”:
,这样就不会出现类型不匹配



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

Ross Jacobs。。。。现在它不提供任何输出。程序一直在运行,直到我点击键盘中断。这意味着你们看不到任何带有字节b“username”的数据包。大多数web流量都是加密的,因此这是意料之中的。
>>> 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'