gpt4 book ai didi

Python 正则表达式 - 从 tcpdump 解析输出端口

转载 作者:行者123 更新时间:2023-12-01 05:04:24 25 4
gpt4 key购买 nike

我正在尝试解析运行“tcpdump -nNqt”时给出的信息。

示例输出如下所示:

IP 10.0.0.11.60446 > 10.0.0.232.22: tcp 0
IP 10.0.0.232.22 > 10.0.0.11.60446: tcp 176
IP 10.0.0.232.22 > 10.0.0.11.60446: tcp 80

到目前为止我已经能够删除:

第一个IP/第二个IP

(?<=IP\s)\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b
(?<=\s>\s)\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b

TCP 或 UDP/大小

(?<=:\s)(.{1,3})
(?<=tcp |udp )(\d+)

我无法解析出端口号,即 IP 末尾的最后一位数字。我的无效尝试如下所示:

(?<=\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\.)\d{,6}

我的表情有什么问题吗?还有另一种我没有看到的方法吗?

最佳答案

我不知道你为什么一次只拿一个你需要的零件。你可以一次性把它们全部拿走(我也稍微折叠了你的 IP 模式):

IP (?P<IP1>(?:\d{1,3}\.){3}\d{1,3})\.(?P<Port1>\d+) > (?P<IP2>(?:\d{1,3}\.){3}\d{1,3})\.(?P<Port2>\d+): (?:tc|ud)p (?P<protocol>\d+)

regex101 demo

import re

reg = re.compile(r"IP (?P<IP1>(?:\d{1,3}\.){3}\d{1,3})\.(?P<Port1>\d+) > (?P<IP2>(?:\d{1,3}\.){3}\d{1,3})\.(?P<Port2>\d+): (?:tc|ud)p (?P<size>\d+)")

for line in input_lines:
m = reg.match(line)
print(m.group("IP1"))
print(m.group("Port1"))
print(m.group("IP2"))
print(m.group("Port2"))
print(m.group("size"))

关于Python 正则表达式 - 从 tcpdump 解析输出端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25344145/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com