使用pyshark中的变量访问LayerFieldsContainer

时间:2017-12-24 13:22:19

标签: python pyshark

我正在使用pyshark来解析pcap文件。我想使用变量访问图层字段,如下面的简单示例所示:
例如访问ntp服务器ip:

p = cap[0]
print(p.bootp.option_ntp_server)

但是,我想像这样访问它:

option_list = {
    "12": "option_hostname",
    "60": "option_vendor_class_id",
    "43": "option_ntp_server"
    }

p = cap[0]
print(p.bootp.%s %(option_list["43"]))

当然这种访问是不可能的。所以我试着像这样使用getattr()

getOption = getattr(p.bootp, option_list["43"])
getOption()

它给了我以下错误:

'LayerFieldsContainer' object is not callable

似乎pyshark数据包或图层类不可调用。

如何使用变量访问图层字段?或者您可以建议我使用选项类型编号访问选项的另一种方法吗?因为我想使用选项类型编号访问此字段(如选项12,选项43),而不是使用标题。

1 个答案:

答案 0 :(得分:0)

我认为OBJ pyshark.packet.fields.LayerFieldsContainer格式特殊,你不能将它用作字符串。 dir(LayerFieldsContaniner)有:

[product_page id="99" display_only_attributes ]

你可以使用它。