首页 > 解决方案 > 从wireshark文本文件中提取帧号、ipv6地址和类型信息

问题描述

有没有办法从文本文件中提取特定信息?我正在尝试提取诸如帧号、ipv6 mac 地址和类型信息之类的信息,但这样做的时间很艰难。

帧 1:线上 372 字节(2976 位),在接口 0 以太网 II 上捕获 372 字节(2976 位),Src:Example_00:aa:aa (aa:00:aa:00:aa:00),Dst:IPv4mcast_7z: zz:za (zz:zz:zz:zz:zz:zz)... ... 类型:IPv4 (0x0800)

我创建了包含我希望返回字符串的方式的类元素。我还使用以下方法打开了文件:

`''蟒蛇

使用 open(infilename, 'r') 作为输入文件:

lineShark = inputfile.read()

lineStrip = lineShark.strip()

lineSplit = lineStrip.split() ''`

我将跨行整合并返回文档中的每个后续单词和数字。有没有办法搜索文件并从上面提取这些信息元素?

我试图使返回的行看起来像这样:

帧 1,Src:00:00:00:00:00:00,Dst:00:00:00:00:00:00,类型:0x0800

对 Python 非常陌生。感谢大家一直以来的帮助。

标签: python-3.x

解决方案


那这个呢?

import re

def read_wireshark_file(self, file_name: str):
    with open(file_name, "r") as inputfile:
        for line_number, line in enumerate(inputfile.readlines(), start=1):
            match = re.search(r"Frame (\d+)", line)
            if not match:
                print(f"Line {line_number} has no Frame.")
                break
            frame = match.group(1)

            match = re.search(r"Src:[^(]*\(([^)]*)", line)
            if not match:
                print(f"Line {line_number} has no Src.")
                break
            src = match.group(1)

            match = re.search(r"Dst:[^(]*\(([^)]*)", line)
            if not match:
                print(f"Line {line_number} has no Dst.")
                break
            dst = match.group(1)

            match = re.search(r"Type:[^(]*\(([^)]*)", line)
            if not match:
                print(f"Line {line_number} has no Type.")
                break
            type_ = match.group(1)

            print(f"Frame {frame}, Src:{src}, Dst:{dst}, Type:{type_}")

该模块re代表正则表达式。有关文档,请参见此处这对于刚开始开发 Python 的人来说可能有点高级,但它允许我用几行代码编写解决方案。

要编写没有正则表达式的解决方案,您需要编写自己的解析器,这对于刚开始开发 Python 的人来说可能更加困难。

line.split()如果输入具有相同数量的空格,则using 的解决方案可能会起作用。您必须找出框架、src、dst 和类型在哪个索引处,然后从子字符串中去除多余的字符。例如,对于框架,line.split()[1]将是"1:". 你必须去掉后面的冒号1

拆分的问题是空格的数量可能会有所不同。例如,Ethernet II可能是您计算机上设备的名称。在我的计算机上,我没有这样的设备,但我有一个名为 的设备Ethernet,它少了一个空间。所以这会改变分割线后要使用的索引。


推荐阅读