我有一个snort.rule文件,我需要从该行中提取cve数字,后跟引用键,并将其附加回花括号内同一行的msg字段中,以下是旧日志。
警报udp $ HOME_NET 1900->任何(msg:“ ET信息UPnP发现搜索响应易受攻击的UPnP设备2”;内容:“针对UPnP设备的英特尔SDK”; pcre:“ / ^ Server \ x3a [^ \ r \ n] *用于UPnP设备的英特尔SDK / mi“;参考:/ infosec / blog / 2013/01/29;参考:arch / UPnP-arch-DeviceArchitecture-v1.1.pdf;参考:cve,2012-5958;参考:cve ,2012-5959; sid:2016303; rev:4;)
所需的输出如下,新的更改为粗体,
警报udp $ HOME_NET 1900->任何(msg:“ ET信息UPnP发现搜索响应易受攻击的UPnP设备2 {cve,2012-5958 cve,2012-5959} ”;内容:“用于UPnP设备的英特尔SDK”; pcre:“ / ^ Server \ x3a [^ \ r \ n] *用于UPnP设备的英特尔SDK / mi“;参考:/ infosec / blog / 2013/01/29;参考:arch / UPnP-arch-DeviceArchitecture-v1.1.pdf ;参考:cve,2012-5958;参考:cve,2012-5959; sid:2016303; rev:4;)
我的awk代码确实有问题,它是在显示结果的同时删除所有键之间的分号,最后一个子函数是罪魁祸首,我需要更正以下代码:
awk -F\; '
{
for ( i = 1 ; i <= NF ; i++ ) {
if ( $i ~ "msg" )
a = i
if ( $i ~ "reference:cve," ) {
b = $i
sub ( ".*:" , "" , b )
c = c " " b
}
}
sub ( "$" , "{" c "\"}" , $a )
} 1' snort.rule
我会perl
在这里用
perl -pe '$" = " "; @cves = /reference:\s*(cve,\d+-\d+)/g;
s/msg:\s*"(?:\\.|[^\\"])*\K/ {@cves}/ if (@cves)'
还处理msg
带有的\"
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句