检查pysharkPython中当前包中是否存在层

2024-09-27 00:17:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用pyshark读取一个pcap文件,我想打印每个包中包含的每个层的一些字段。在

我设置了一个if条件来检查当前数据包中是否存在特定层,如果为真,则打印一些字段。在

当层存在于包装层,但我得到了“raise AttributeError()”,当层 不存在,在我的情况下,第一个数据包中不存在tcp层,然后出现错误,脚本停止。在

内容包装层具有此格式

[<ETH Layer>, <IP Layer>, <TCP Layer>]

它看起来像是一个列表,但是如果我试图像下面这样计算这些字符串中的任何一个,结果总是错误的。在

^{pr2}$

如何正确地检查某个层是否存在?在

我目前的代码是:

import pyshark

# Open saved trace file
cap = pyshark.FileCapture('file.pcap')

for pkt in cap:
    lyr = pkt.layers # Current layers

    if p.eth in lyrs: print p.eth.src  # If Ethernet layer exists print ethernet value
    if p.ip in lyrs: print p.ip.src    # If IP layer exists print source IP
    if p.tcp in lyrs: print p.tcp.port  # If TCP layer exists print port

提前谢谢


Tags: iniplayerif错误existspcap数据包

热门问题