首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Regex解析Snort警报文件

使用Regex解析Snort警报文件
EN

Stack Overflow用户
提问于 2016-07-03 21:10:13
回答 3查看 1.7K关注 0票数 2

我正在尝试使用Python中的regex来解析snort警报文件中的源、目的地( in和端口)和时间戳。示例如下:

代码语言:javascript
复制
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分离?

代码语言:javascript
复制
^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$
EN

回答 3

Stack Overflow用户

发布于 2016-07-03 21:23:07

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

代码语言:javascript
复制
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})'

请参阅此示例:

代码语言:javascript
复制
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'
票数 3
EN

Stack Overflow用户

发布于 2016-07-03 21:16:50

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

代码语言:javascript
复制
(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}):(\d{1,5})

同时失去^$将使您能够在行的中间进行匹配,而不仅仅是整个行。

票数 1
EN

Stack Overflow用户

发布于 2016-07-03 21:17:14

如果我理解正确的话,您希望分别捕获I和端口,对吗?

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

代码语言:javascript
复制
result = re.search(r'((\d{1,3}\.){3}\d{1,3}):(\d{1,5})', input)

现在,result.group(1)包含IP地址并对端口执行result.group(3)操作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38170253

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档