2013-03-12 2 views
3

Я проанализировал два журнала, чтобы только номера CVE записывались в текстовый файл, чтобы они отображались как один список. вот часть выхода;Соответствующие записи с использованием python

NeXpose Results: CVE-2007-6519 
NeXpose Results: CVE-1999-0559 
NeXpose Results: CVE-1999-1382 
Snort results: CVE-1999-0016 
Snort results: CVE-1999-0016 
Snort results: CVE-1999-0016 
Snort results: CVE-1999-0016 
Snort results: CVE-1999-0016 

и все это похоже на файл. Теперь я хотел бы, чтобы мой код шифровался по номерам CVE и смотрел, соответствует ли какой-либо из NeXpose CVE snort CVE, поскольку я ищу корреляцию между ними. Вот мой код;

#!/usr/bin/env python 
nexpose = {} 
snort = {} 

CVE = open("CVE.txt","r") 
cveWarning = open("Warning","w") 

for line in CVE.readlines(): 
     list_of_line = line.split(' ') 

    if "NeXpose" in list_of_line[0]: 
     nexResults = list_of_line[2] 
     #print 'NeXpose: ', nexResults 



    if "Snort" in list_of_line[0]: 
     cveResults = list_of_line[2] 
     #print 'Snort: ', cveResults 


a_match = [True for match in nexResults if match in cveResults] 
print a_match 

Если есть лучший способ сделать это, пожалуйста, дайте мне знать, поскольку я думаю, что могу быть слишком сложным.

+0

Вы ищете CVE, которые отображаются как «NeXpose», так и как «Snort»? –

+0

nexpose cve's извлекаются из отчета NeXpose scan, и snort cve's вытягиваются из журнала сканирования snort. и я хочу, чтобы коррелировать любые атаки snort с уязвимостями nexpose, используя их номера CVE. – user2099445

+0

Итак, перевод вашего вопроса на профессиональные термины: у вас есть две коллекции CVE, и вы хотите узнать, какие CVE появляются в обеих коллекциях? –

ответ

4

Вы считали комплекты Python?

#!/usr/bin/python 

lines = open('CVE.txt').readlines() 
nexpose = set([l.split(':')[1].strip() for l in lines if l.startswith('NeXpose')]) 
snort = set([l.split(':')[1].strip() for l in lines if l.startswith('Snort')]) 

# print 'Nexpose: ', ', '.join(nexpose) 
# print 'Snort : ', ', '.join(snort) 

print 'CVEs both in Nexpose and Snort : ', ', '.join(snort.intersection(nexpose)) 
+0

вы абсолютная легенда bro. приветствия для этого, действительно ценят это. – user2099445

+0

Счастливые помочь. Если вы намереваетесь продолжить разработку в Python, вы можете найти понимание списка полезной и интересной концепции: http://docs.python.org/2/tutorial/datastructures.html#list-comprehensions –

0

Я бы предложил использовать наборы python.

nex = set() 
sno = set() 
for line in CVE.readlines(): 
    list_of_line = line.split(' ') 

    if(list_of_line[0]=="NeXpose"): 
     nex.add(list_of_line[2]) 
    if(list_of_line[0]=="Snort"): 
     sno.add(list_of_line[2]) 

inboth = sno.intersection(nex) 
Смежные вопросы