You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python正则表达式问题:无法捕获RADIUS数据包中的可选Framed-IP-Address字段

解决RADIUS数据包正则捕获Framed-IP-Address失败的问题

原正则的核心问题是贪婪模式的.*会优先匹配最长内容,导致包含Framed-IP-Address的可选分组被覆盖,无法触发捕获。修改后的正则通过非贪婪匹配修正这个问题:

import re

# 修改后的正则表达式
packet_re = r'.*RADIUS.*\s*Accounting(\s|-)Request.*?(Framed(\s|-)IP(\s|-)Address.*Attribute.*Value: (?P<client_ip>\d+\.\d+\.\d+\.\d+))?.*?(Username|User-Name)(\s|-)Attribute.*Value:\s*(?P<username>\S+).*'

# 带Framed-IP的数据包测试
packet1 = """
IP (tos 0x0, ttl 64, id 35592, offset 0, flags [DF], proto UDP (17), length 213)
    10.10.10.1.41860 > 10.10.10.3.1813: [udp sum ok] RADIUS, length: 185
    Accounting-Request (4), id: 0x0a, Authenticator: 41b3b548c4b7f65fe810544995620308
      Framed-IP-Address Attribute (8), length: 6, Value: 10.10.10.11
        0x0000:  0a0a 0a0b
      User-Name Attribute (1), length: 14, Value: 005056969256
        0x0000:  3030 3530 3536 3936 3932 3536
"""
result1 = re.search(packet_re, packet1, re.DOTALL)
print("packet1捕获结果:")
print(f"client_ip: {result1.group('client_ip')}")  # 输出10.10.10.11
print(f"username: {result1.group('username')}")    # 输出005056969256

# 无Framed-IP的数据包测试
packet2 = """
IP (tos 0x0, ttl 64, id 60162, offset 0, flags [DF], proto UDP (17), length 163)
    20.20.20.1.54035 > 20.20.20.2.1813: [udp sum ok] RADIUS, length: 135
    Accounting-Request (4), id: 0x01, Authenticator: 219b694bcff639221fa29940e8d2a4b2
      User-Name Attribute (1), length: 14, Value: 005056962f54
        0x0000:  3030 3530 3536 3936 3266 3534
"""
result2 = re.search(packet_re, packet2, re.DOTALL)
print("\npacket2捕获结果:")
print(f"client_ip: {result2.group('client_ip')}")  # 输出None
print(f"username: {result2.group('username')}")    # 输出005056962f54

关键修改点

  • 将Framed-IP分组前的.*改为.*?(非贪婪匹配),确保正则优先尝试匹配可选的Framed-IP字段,而非直接跳过它匹配更长内容
  • Username字段前的.*也改为.*?,避免影响前面可选字段的捕获逻辑
  • 保留原有的字段格式匹配逻辑(处理空格/连字符的变体),保证兼容性

内容的提问来源于stack exchange,提问作者tcpip

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 19:22:48