Python 为什么我的代码在使用Pyshark库时显示此错误
当我尝试将pyshark用于某些ctf任务时,我得到了以下输出: 回溯(最近一次呼叫最后一次): 文件“test.py”,第5行,在 如果(“TCP”或“TLSv1.2”)和数据包中的((packet.ip.src==“172.217.18.227”或packet.ip.src==“192.168.1.100”): 文件“/home/shanx/.local/lib/python2.7/site packages/pyshark/packet/packet.py”,第119行,在getattr 引发AttributeError(“没有名为%s”%item的属性) AttributeError:没有名为ip的属性 以下是我的python代码:Python 为什么我的代码在使用Pyshark库时显示此错误,python,wireshark,pyshark,Python,Wireshark,Pyshark,当我尝试将pyshark用于某些ctf任务时,我得到了以下输出: 回溯(最近一次呼叫最后一次): 文件“test.py”,第5行,在 如果(“TCP”或“TLSv1.2”)和数据包中的((packet.ip.src==“172.217.18.227”或packet.ip.src==“192.168.1.100”): 文件“/home/shanx/.local/lib/python2.7/site packages/pyshark/packet/packet.py”,第119行,在getattr
import pyshark
capture = pyshark.FileCapture("/home/shanx/Desktop/TASKS1.1/advancedNetwork")
val=""
for packet in capture:
if ("TCP" or "TLSv1.2") and ((packet.ip.src=="172.217.18.227" or packet.ip.src=="192.168.1.100")) in packet:
val= val+packet.sll.unused
val.replace(":","")
print(val)
注意:没有此说明,它工作正常:
((packet.ip.src=="172.217.18.227" or packet.ip.src=="192.168.1.100"))
问:对于这类库是否有公平的文档或教程
非常感谢您的回答 这是我在windows机器上遇到的问题,但在linux机器上没有遇到 我通过迭代整个捕获文件并将每个数据包附加到一个空列表中,设法绕过了这个问题:
packet_list = []
for packet in capture:
packet_list.append(packet)
在此之后,我可以从数据包列表
访问ip.src之类的属性:
for packet in packet_list:
if ("TCP" or "TLSv1.2") and ((packet.ip.src=="172.217.18.227" or packet.ip.src=="192.168.1.100")) in packet:
val= val+packet.sll.unused
我也是pyshark的新手,所以我不知道为什么它在windows上会这样工作,但这对我很有帮助。我在深入搜索文档时找到了一种方法,因此,例如,如果我需要知道pyshark为ICMP数据包提供的所有字段,你必须键入:
val=pkt.icmp._all_fields
print(val)
您将获得以下输出:
$python3 test.py
{'icmp.type': '0', 'icmp.code': '0', 'icmp.checksum': '0x0000fe60', 'icmp.checksum.status': '1', 'icmp.ident': '0', 'icmp.seq': '0', 'icmp.seq_le': '0', 'data': '5545734442425141434141494141422f65553841', 'data.data': '55:45:73:44:42:42:51:41:43:41:41:49:41:41:42:2f:65:55:38:41', 'data.text': 'UEsDBBQACAAIAAB/eU8A', 'data.len': '20'}
它实际上是一个字典,包含了所有可以通过python指令访问的字段
现在您知道您可以访问什么以及如何访问了 您使用的是什么版本的Python和PyShark?您是否尝试了访问中显示的
ip
的不同方法?欢迎使用堆栈溢出!请阅读,拿着,读关于,以及这个。还请学习如何创建一个。Peter Wood:我在使用Python 3.7.5和pyshark(0.4.2.9)Alexander Cécile:我找到了一种使用“_all_fields”方法的方法非常感谢您的帮助,但我认为,由于捕获的大量输入,处理我的指令所需的时间将增加一倍,因此我找到了一种方法!