我正在尝试在 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/