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

如何从蜜罐事件日志文件中提取指定协议数据?

修复蜜罐日志指定协议数据提取Python代码

修复后的代码

import re

# 定义需要提取的目标协议集合
TARGET_PROTOCOLS = {"HTTP", "MODBUS", "SNMP", "FTP", "Bacnet"}

def extract_honeypot_logs(log_lines):
    extracted_data = []
    # 构建正则匹配规则:兼容目标协议,忽略大小写,捕获指定字段
    log_pattern = re.compile(
        r"^(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}) \| (\d+\.\d+\.\d+\.\d+) \| ([A-Z]{2}) \| ((?:%s).*)$" 
        % "|".join(TARGET_PROTOCOLS),
        re.IGNORECASE
    )
    
    for line in log_lines:
        line = line.strip()
        if not line:
            continue  # 跳过空行
        match = log_pattern.match(line)
        if match:
            extracted_data.append({
                "Timestamp": match.group(1),
                "IP": match.group(2),
                "IP Country": match.group(3),
                "Request": match.group(4).strip()
            })
    return extracted_data

# 测试示例(替换为你的实际日志行)
sample_logs = [
    "2024-05-20 14:30:01 | 192.168.1.100 | US | HTTP GET /admin.php | 200 OK",
    "2024-05-20 14:31:05 | 10.0.0.5 | CN | MODBUS Read Holding Registers | Function Code 03",
    "2024-05-20 14:32:10 | 172.16.0.3 | DE | SNMP GET sysDescr.0 | Community public",
    "2024-05-20 14:33:15 | 185.199.108.153 | FR | FTP USER anonymous | 331 Please specify the password.",
    "2024-05-20 14:34:20 | 192.168.2.20 | JP | bacnet Who-Is Request | Device ID 1234"
]

# 执行提取并输出结果
for entry in extract_honeypot_logs(sample_logs):
    print(entry)

关键修复点说明

  1. 协议匹配范围扩展
    原代码仅针对HTTP协议编写正则,未覆盖MODBUS、SNMP等目标协议。修复后通过TARGET_PROTOCOLS集合动态生成匹配规则,同时启用re.IGNORECASE兼容协议名大小写差异(比如bacnet小写场景)。

  2. Request字段完整捕获
    原正则仅截取HTTP开头的片段,修复后调整分组规则((?:%s).*)$,确保捕获从协议名到行尾的完整请求内容,包含后续状态码、功能码等细节。

  3. 日志鲁棒性优化
    添加空行跳过逻辑,避免处理空白或无效日志行导致的匹配失败。

适配不同日志格式的注意事项

如果你的原始日志分隔符不是|、字段顺序不同,或者是JSON/CSV格式,需要对应调整:

  • 若为JSON格式:替换正则为json.loads(line)直接解析字段
  • 若分隔符为空格/制表符:修改正则中的分隔符部分(比如将\|改为\s+)
  • 若字段顺序变化:调整正则分组的索引位置(比如group(3)对应国家码,需与实际位置匹配)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 21:18:18