繁体   English   中英

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

[英]why does my code show this error when using Pyshark library

当我尝试将 pyshark 用于某些 ctf 任务时,我得到了这个输出:

回溯(最近调用最后):文件“test.py”,第 5 行,在 if (“TCP”或“TLSv1.2”) 和 ((packet.ip.src==“172.217.18.227”或 packet.ip .src=="192.168.1.100")) in packet: File "/home/shanx/.local/lib/python2.7/site-packages/pyshark/packet/packet.py", line 119, in getattr raise AttributeError ("No attribute named %s" % item) AttributeError: No attribute named 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)

在此之后,我可以从packet_list访问 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 指令访问的所有字段!

现在您知道可以访问什么以及如何访问了!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM