使用Regex解析Snort警报文件

2024-06-24 13:33:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试在Python中使用regex从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分开?在

^{pr2}$

Tags: 文件端口ip示例目标时间警报regex
3条回答

如果我没听错的话,你想分别捕获IP和端口,对吗?在

在这种情况下,在正则表达式中使用“groups”可以解决您的问题:

result = re.search(r'((\d{1,3}\.){3}\d{1,3}):(\d{1,5})', input)

现在,result.group(1)包含IP地址,result.group(3)端口。在

您可以通过以下方式将它们分为不同的捕获组:

(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}):(\d{1,5})

同时丢失^和{}将使您能够在行的中间进行匹配,而不仅仅是作为一整行。在

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

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})'

请参见以下示例:

^{pr2}$

相关问题 更多 >