python - 使用正则表达式解析 Snort 警报文件

标签 python regex text-processing snort

我正在尝试在 Python 中使用正则表达式从 snort 警报文件中解析出源、目标(IP 和端口)和时间戳。示例如下:

03/09-14:10:43.323717  [**] [1:2008015:9] ET MALWARE User-Agent (Win95) [**] [Classification: A Network Trojan was detected] [Priority: 1] {TCP} 172.16.116.194:28692 -> 205.181.112.65:80

我有 IP 的正则表达式,但由于 IP 中的端口,它无法正确触发。如何将端口与 IP 分开?

^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$

最佳答案

这应该从整行中提取必要的部分:

r'([0-9:./-]+)\s+.*?(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}):(\d{1,5})\s+->\s+(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}):(\d{1,5})'

看这个例子:

In [22]: line = '03/09-14:10:43.323717  [**] [1:2008015:9] ET MALWARE User-Agent (Win95) [**] [Classification: A Network Trojan was detected] [Priority: 1] {TCP} 172.16.116.194:28692 -> 205.181.112.65:80'

In [23]: m = re.match(r'([0-9:./-]+)\s+.*?(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}):(\d{1,5})\s+->\s+(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}):(\d{1,5})', line)

In [24]: m.group(1)
Out[24]: '03/09-14:10:43.323717'

In [25]: m.group(2)
Out[25]: '172.16.116.194'

In [26]: m.group(3)
Out[26]: '28692'

In [27]: m.group(4)
Out[27]: '205.181.112.65'

In [28]: m.group(5)
Out[28]: '80'

关于python - 使用正则表达式解析 Snort 警报文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38170253/

相关文章:

regex - 正则表达式以匹配<h1>标记之间的所有字符

python - 寻找一种从 Python 列表中指定自定义正则表达式通配符的方法

regex - 如何使用 SED 或 AWK 在行中添加双引号?

text-processing - 找到最接近的前 5 个,而不仅仅是最接近的?

python - 自动将 Json 数据添加到 Django 模型中,且仅一次

python - 随机顺序python

python - pop()函数没有完全弹出列表中位数

python绘图通过groupby过滤

Java正则表达式解析具有特殊字符和数字的字符串

shell - 用于删除文本文件中停用词的快速 shell 命令