【问题标题】:why does my code show this error when using Pyshark library为什么我的代码在使用 Pyshark 库时会显示此错误
【发布时间】:2019-11-28 21:26:53
【问题描述】:

当我尝试将 pyshark 用于一些 ctf 任务时,我得到了以下输出:

traceback(最近一次调用最后一次): 文件“test.py”,第 5 行,在 if ("TCP" or "TLSv1.2") and ((packet.ip.src=="172.217.18.227" or packet.ip.src=="192.168.1.100")) 在数据包中: getattr 中的文件“/home/shanx/.local/lib/python2.7/site-packages/pyshark/packet/packet.py”,第 119 行 raise 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"))

问题:这些库是否有任何公平的文档或教程?

非常感谢您的回答!

【问题讨论】:

  • 你使用的是什么版本的 Python 和 PyShark?
  • 您是否尝试过访问docs 中显示的ip 的不同方式?
  • 欢迎来到 Stack Overflow!请阅读help pages,获取SO tour,了解how to ask good questions,以及此question checklist。另请了解如何创建minimal reproducible example。之前的两个cmet都是好点(即请回复)
  • 彼得伍德:我正在使用 Python 3.7.5 和 pyshark (0.4.2.9)
  • Alexander Cécile : 我找到了一种使用“_all_fields”方法的方法

标签: python wireshark pyshark


【解决方案1】:

这个问题我在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 上会这样工作,但它帮助了我。

【讨论】:

  • 非常感谢您的帮助,但我认为捕获大量输入需要双倍的时间来处理我的指令,所以我找到了一种方法!
【解决方案2】:

我在深入搜索文档时找到了一种方法,例如,如果我需要知道 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 指令访问的所有字段!

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-08
    • 2015-10-22
    • 1970-01-01
    • 2010-10-08
    • 1970-01-01
    • 2013-03-05
    • 2015-09-13
    • 2021-08-10
    相关资源
    最近更新 更多