Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么我的代码在使用Pyshark库时显示此错误_Python_Wireshark_Pyshark - Fatal编程技术网

Python 为什么我的代码在使用Pyshark库时显示此错误

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

当我尝试将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代码:

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”方法的方法非常感谢您的帮助,但我认为,由于捕获的大量输入,处理我的指令所需的时间将增加一倍,因此我找到了一种方法!