#-*- coding: utf-8 -*-
#!/usr/bin/python
import os,re,time
new_rules = {}
old_rules = {}
rules_all = {}
def get_filename(filename):
global rules_all
rules_tmp = {}
data = open(filename,'r')
for i in data:
line = i
i = i.replace(' ','')
if 'sid:' not in i or 'rev:' not in i:
continue
else:
sid = re.findall('sid:(\d*);',i)[0]
rev = re.findall('rev:(\d*);',i)[0]
rules_tmp[sid] = rev
rules_all[sid] = line
return rules_tmp
def get_rules():
global new_rules,old_rules
new_dir_list = os.listdir("./rules")
for filename in new_dir_list:
if filename[-6:] == '.rules':
new_rules[filename] = {}
for filename in new_rules.keys():
new_rules[filename] = get_filename("./rules/"+filename)
old_dir_list = os.listdir("./rules-bak-2018-0912")
for filename in old_dir_list:
if filename[-6:] == '.rules':
old_rules[filename] = {}
for filename in old_rules.keys():
old_rules[filename] = get_filename("./rules-bak-2018-0912/"+filename)
def save_file(line,txtype):
try:
save = open(time.strftime("/tmp/ids_rules/"+"%Y-%m-%d",time.localtime())+txtype+'.txt','a+')
except Exception, e:
os.mkdir('/tmp/ids_rules/')
save = open(time.strftime("/tmp/ids_rules/"+"%Y-%m-%d",time.localtime())+txtype+'.txt','a+')
save.write(line)
save.close()
if __name__ == '__main__':
get_rules()
for filename in new_rules:
if filename not in old_rules:
print '[info]file_add:%s' %filename
else:
for irules in new_rules[filename]:
if irules not in old_rules[filename]:
if re.findall('(?:(?:1[0-9][0-9]\.)|(?:2[0-4][0-9]\.)|(?:25[0-5]\.)|(?:[1-9][0-9]\.)|(?:[0-9]\.)){3}(?:(?:1[0-9][0-9])|(?:2[0-4][0-9])|(?:25[0-5])|(?:[1-9][0-9])|(?:[0-9]))',rules_all[irules]):
save_file(rules_all[irules],'_ip_type')
continue
elif re.findall('([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:)',rules_all[irules]):
save_file(rules_all[irules],'_ip_type')
continue
print '[info]irules_add:%s,filename:%s' %(irules,filename)
print rules_all[irules]
save_file(rules_all[irules],'_irule_type')
elif new_rules[filename][irules] != old_rules[filename][irules]:
if re.findall('(?:(?:1[0-9][0-9]\.)|(?:2[0-4][0-9]\.)|(?:25[0-5]\.)|(?:[1-9][0-9]\.)|(?:[0-9]\.)){3}(?:(?:1[0-9][0-9])|(?:2[0-4][0-9])|(?:25[0-5])|(?:[1-9][0-9])|(?:[0-9]))',rules_all[irules]):
save_file(rules_all[irules],'_ip_type')
continue
elif re.findall('([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:)',rules_all[irules]):
save_file(rules_all[irules],'_ip_type')
continue
if new_rules[filename][irules] > old_rules[filename][irules]:
print '[info]irules_is_upgrade:%s,filename:%s' %(irules,filename)
else:
print '[info]irules_is_downgrade:%s,filename:%s' %(irules,filename)
print rules_all[irules]
save_file(rules_all[irules],'_irule_type')
else:
pass
for irules in old_rules[filename]:
if irules not in new_rules[filename]:
print '[info]irules_delete:%s,filename:%s' %(irules,filename)
print rules_all[irules]
save_file(rules_all[irules],'_irule_type')
解析suricata
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 打造终极MVP+Retrofit2+okhttp3+Rxjava2网络请求,开发实用,简约,由于篇幅字数原因 本...
- 参考:android 开发--抓取网页解析网页内容的若干方法(网络爬虫)(正则表达式) 网页有两种格式,一种是xm...
- Senior进阶 网络之数据解析之XML解析和JSON解析的用法 XML解析之SAX解析 XML解析之DOM解析 ...