小编Sam*_*cke的帖子

使用PyParsing解析Snort日志

使用pyparsing模块解析Snort日志时遇到问题.

问题在于分离Snort日志(它有多行条目,用空行分隔)和获取pyparsing来解析每个条目作为整个块,而不是逐行读取并期望语法适用于每一行(显然, 它不是.)

我已经尝试将每个块转换为临时字符串,剥离每个块内的换行符,但它拒绝正确处理.我可能完全走错了路,但我不这么认为(类似的形式适用于syslog类型的日志,但这些是单行条目,因此适合你的基本文件迭代器/行处理)

这是一个日志示例和我到目前为止的代码:

[**] [1:486:4] ICMP Destination Unreachable Communication with Destination Host is Administratively Prohibited [**]
[Classification: Misc activity] [Priority: 3] 
08/03-07:30:02.233350 172.143.241.86 -> 63.44.2.33
ICMP TTL:61 TOS:0xC0 ID:49461 IpLen:20 DgmLen:88
Type:3  Code:10  DESTINATION UNREACHABLE: ADMINISTRATIVELY PROHIBITED HOST FILTERED
** ORIGINAL DATAGRAM DUMP:
63.44.2.33:41235 -> 172.143.241.86:4949
TCP TTL:61 TOS:0x0 ID:36212 IpLen:20 DgmLen:60 DF
Seq: 0xF74E606
(32 more bytes of original packet)
** END OF DUMP

[**] ...more like this [**]
Run Code Online (Sandbox Code Playgroud)

更新的代码:

def snort_parse(logfile):
    header = Suppress("[**] [") + …
Run Code Online (Sandbox Code Playgroud)

python pyparsing snort

8
推荐指数
1
解决办法
5036
查看次数

标签 统计

pyparsing ×1

python ×1

snort ×1