0
我正在为perl中的Ossec规则文件编写解析器。Perl解析格式不正确的XML文件
我使用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 -->
难道你不能把整个内容包装到' ... '? –
choroba
2014-11-04 21:13:44
像从文件句柄加载文件到变量并在开始和结束时连接字符串?这听起来可行 – Bruno9779 2014-11-04 21:16:34
我正在用这个解决方案。其实我要加载所有文件为FH,并在每个文件中包裹“root”,这样我就避免了我一直使用的丑陋系统(xmllint $文件)。 如果您在答案中编写此解决方案,我会接受它 – Bruno9779 2014-11-04 21:21:16