3

2つのログを解析して、CVE番号だけがテキストファイルに書き込まれ、1つのリストとして表示されるようにしました。これが出力の一部です。

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番号で暗号化して、2つの相関関係を調べているときにNeXposeCVEのいずれかがsnortCVEと一致するかどうかを確認したいと思います。これが私のコードです。

#!/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

これを行うためのより良い方法がある場合は、私が物事を複雑にしすぎている可能性があるので、私に知らせてください。

4

2 に答える 2

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))
于 2013-03-12T10:42:06.790 に答える
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)
于 2013-03-12T10:41:22.377 に答える