AIGC标识 正则表达式抽取IP地址和端口

ailx10说:这篇是我2024年4月写的。我在关联 Log4j 攻击结果时踩过一个很具体的坑:只看外联 IP,没有把端口一起对,原本失败的场景也被连成了成功。于是这回把提取规则补上目的端口,再用样例看看 IPv4 和可选端口怎样一起抓出来。这篇的出发点不是学一个漂亮正则,而是修一条已经带来误判的分析链。小小一个字段补回来,前后的判断就更能对得上;也正因为它来自一次实际问题,几行代码才有了明确的用处。


原示例仅演示提取格式;它没有完整校验 IPv4 与端口数值范围,也未覆盖 IPv6。发现外联不能单独证明命令执行,私网地址也可能是有效连接目标。

import re

# 示例字符串
text = "192.168.1.1:8080 10.0.0.1 172.16.0.1:7070 192.168.2.1"

# 使用正则表达式提取IP地址和目的端口(如果存在)
pattern = r'(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})(?::(\d{1,5}))?'

matches = re.findall(pattern, text)

# 打印提取的IP地址和目的端口
for match in matches:
    ip, port = match
    if port:
        print(f"IP地址:{ip},目的端口:{port}")
    else:
        print(f"IP地址:{ip},没有指定目的端口")

运行结果

IP地址:192.168.1.1,目的端口:8080
IP地址:10.0.0.1,没有指定目的端口
IP地址:172.16.0.1,目的端口:7070
IP地址:192.168.2.1,没有指定目的端口

正则能筛形状,范围和协议还得另验。IPv6、编码和私网回连都可能让简单样例失灵,补字段的同时,也得把还没覆盖的情况记下来。

本文摘要与文字整理有 AI 参与。

posted @ 2026-11-06 11:06  ailx10  阅读(2)  评论(0)    收藏  举报