我正在为perl中的Ossec规则文件编写解析器。
我正在使用XML :: Simple,它通常运行正常,但有些规则文件格式不正确,而不是顶级<group> <\group>
有几个。
我可以使用那里的示例匹配文本,但所有匹配都被分组。
我执行此操作的CLI代码是:
perl -ne 'print if /^<group name/ .. /^<\\group>/' attack_rules.xml
如何分开不同的比赛?
以下是格式错误的XML示例:
<!-- Privilege scalation messages -->
<group name="syslog,elevation_of_privilege,">
<rule id="40501" level="15" timeframe="300" frequency="2">
<if_group>adduser</if_group>
<if_matched_group>attacks</if_matched_group>
<description>Attacks followed by the addition </description>
<description>of an user.</description>
</rule>
</group> <!-- SYSLOG, ELEVATION_OF_PRIVILEGE, -->
<!-- Scan signatures -->
<group name="syslog,recon,">
<rule id="40601" level="10" frequency="10" timeframe="90" ignore="90">
<if_matched_group>connection_attempt</if_matched_group>
<description>Network scan from same source ip.</description>
<same_source_ip />
<info type="link">http://project.honeynet.org/papers/enemy2/</info>
</rule>
</group> <!-- SYSLOG,SCANS -->
答案 0 :(得分:1)
如果唯一的问题是“多根”,您可以将每个文件内容包装在<root>...</root>
中并解析结果。