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

1 投票
2 回答
3242 浏览
提问于 2025-04-18 18:20

如何将文本文件中的某些部分(比如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

设置为不同的变量。

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

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

2 个回答

1

这是一个主题的变体。

#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')
3

解析字符串通常是通过正则表达式来完成的。我建议你看看re模块的文档

不过在你的情况下,你可以使用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]

撰写回答