使用 Python 读取/解析 Snort 警报文件

Posted

技术标签:

【中文标题】使用 Python 读取/解析 Snort 警报文件【英文标题】:Reading/Parsing Snort Alert File Using Python 【发布时间】:2014-08-24 11:36:42 【问题描述】:

将部分文本文件(snort 警报)设置为单独的变量的最佳方法是什么?

例如"Snort 日志输出"

08/17-11:41:07.350700  [**] [1:1000011:0] [*] [Priority: 0] TCP 192.168.0.1:24586 -> 192.168.0.8:53804

我需要设置:

08/17-11:41:07.350700
192.168.0.1:24586
192.168.0.8:53804

分隔变量。

这不是必需的,但我希望可以从同一个文件中读取/设置多个警报。

但首先我只想设置一个警报。

【问题讨论】:

【参考方案1】:

解析字符串通常使用正则表达式。我推荐阅读re module documentation。

但在您的情况下,您可以使用 split() 字符串方法:

>>> s='08/17-11:41:07.350700 [] [1:1000011:0] [] [Priority: 0] TCP 192.168.0.1:24586 -> 192.168.0.8:53804'
>>> rec = s.split()
>>> rec
['08/17-11:41:07.350700', '[]', '[1:1000011:0]', '[]', '[Priority:', '0]', 'TCP', '192.168.0.1:24586', '->', '192.168.0.8:53804']
>>> ts = rec[0]
>>> src = rec[6]
>>> dst = rec[7]

【讨论】:

感谢您的意见,非常有帮助。我会花一些时间阅读正则表达式【参考方案2】:

主题的变体。

#Python 2.7.3

snort = '08/17-11:41:07.350700 [**] [1:1000011:0] [*] [Priority: 0] TCP 192.168.0.1:24586 -> 192.168.0.8:53804'

(dt,x,x,x,x,x,x,ip1,x,ip2) = snort.split()

print (dt,ip1,ip2)
('08/17-11:41:07.350700', '192.168.0.1:24586', '192.168.0.8:53804')

【讨论】:

以上是关于使用 Python 读取/解析 Snort 警报文件的主要内容,如果未能解决你的问题,请参考以下文章

barnyard2怎么读取snort的二进制文件

有没有办法确定大数据包捕获的所有base64编码流量?

Snort日志文件输出格式

Python:读取 12 位二进制文​​件

XML Parser 触发 AV 警报

python解析文本文件演示样例