我正在使用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),而不是使用标题。
答案 0 :(得分:0)
我认为OBJ pyshark.packet.fields.LayerFieldsContainer格式特殊,你不能将它用作字符串。 dir(LayerFieldsContaniner)有:
[product_page id="99" display_only_attributes ]
你可以使用它。