Bernd Wurst commited on 2008-12-17 13:00:59
Zeige 1 geänderte Dateien mit 29 Einfügungen und 8 Löschungen.
... | ... |
@@ -37,9 +37,12 @@ def versioncompare(safe_version, find_version): |
37 | 37 |
return False |
38 | 38 |
return (len(find_version)<len(safe_version)) |
39 | 39 |
|
40 |
-def vulnprint(appname, version, safeversion, vuln, vfilename, subdir, fancy): |
|
40 |
+def vulnprint(appname, version, safeversion, vuln, vfilename, subdir, style = None): |
|
41 | 41 |
appdir = '/'.join(os.path.abspath(vfilename).split('/')[:-1-subdir]) |
42 |
- if fancy: |
|
42 |
+ if not style: |
|
43 |
+ print "%(appname)s %(version)s (%(safeversion)s) %(vuln)s %(appdir)s" \ |
|
44 |
+ % vars() |
|
45 |
+ elif style=='fancy': |
|
43 | 46 |
print _("Directory: %(appdir)s") % vars() |
44 | 47 |
if safeversion!="ok": |
45 | 48 |
if safeversion!="": |
... | ... |
@@ -56,9 +59,19 @@ def vulnprint(appname, version, safeversion, vuln, vfilename, subdir, fancy): |
56 | 59 |
else: |
57 | 60 |
print _("%(appname)s %(version)s found." ) % vars() |
58 | 61 |
|
59 |
- else: |
|
60 |
- print "%(appname)s %(version)s (%(safeversion)s) %(vuln)s %(appdir)s" \ |
|
61 |
- % vars() |
|
62 |
+ elif style=='xml': |
|
63 |
+ state = 'vulnerable' |
|
64 |
+ if safeversion == 'ok': |
|
65 |
+ state = 'ok' |
|
66 |
+ print ' <app state="%s">' % state |
|
67 |
+ print ' <appname>%s</appname>' % appname |
|
68 |
+ print ' <version>%s</version>' % version |
|
69 |
+ print ' <directory>%s</directory>' % appdir |
|
70 |
+ if state == 'vulnerable': |
|
71 |
+ print ' <safeversion>%s</safeversion>' % safeversion |
|
72 |
+ print ' <vulninfo>%s</vulninfo>' % vuln |
|
73 |
+ print ' </app>' |
|
74 |
+ |
|
62 | 75 |
|
63 | 76 |
pp = pprint.PrettyPrinter(indent=4) |
64 | 77 |
|
... | ... |
@@ -69,8 +82,10 @@ parser.add_option("-a", "--all", action="store_true", dest="ALL", |
69 | 82 |
parser.add_option("-d", "--debug", action="store_true", dest="DEBUG", |
70 | 83 |
help="Show lots of debugging output, mainly useful"+ \ |
71 | 84 |
"for development") |
72 |
-parser.add_option("-f", "--fancy", action="store_true", dest="FANCY", |
|
85 |
+parser.add_option("-f", "--fancy", action="store_const", dest="OUTPUT", const="fancy", |
|
73 | 86 |
help="Show more fancy output") |
87 |
+parser.add_option("-x", "--xml", action="store_const", dest="OUTPUT", const="xml", |
|
88 |
+ help="Output results as XML") |
|
74 | 89 |
opts, args = parser.parse_args() |
75 | 90 |
|
76 | 91 |
# Parse vulnerability database |
... | ... |
@@ -114,6 +129,9 @@ for sect in config.sections(): |
114 | 129 |
if opts.DEBUG: |
115 | 130 |
pp.pprint(vdb) |
116 | 131 |
|
132 |
+if opts.OUTPUT == 'xml': |
|
133 |
+ print '<?xml version="1.0" ?>' |
|
134 |
+ print '<freewvs>' |
|
117 | 135 |
|
118 | 136 |
# start the search |
119 | 137 |
|
... | ... |
@@ -159,7 +177,7 @@ for fdir in args: |
159 | 177 |
print "File "+mfile |
160 | 178 |
vulnprint(item['name'], findversion, \ |
161 | 179 |
"ok", "", mfile, item['subdir'], \ |
162 |
- opts.FANCY) |
|
180 |
+ opts.OUTPUT) |
|
163 | 181 |
else: |
164 | 182 |
if opts.DEBUG: |
165 | 183 |
print "File "+mfile |
... | ... |
@@ -175,9 +193,12 @@ for fdir in args: |
175 | 193 |
|
176 | 194 |
vulnprint (item['name'], findversion, \ |
177 | 195 |
safev, item['vuln'], \ |
178 |
- mfile, item['subdir'], opts.FANCY) |
|
196 |
+ mfile, item['subdir'], opts.OUTPUT) |
|
179 | 197 |
|
180 | 198 |
else: |
181 | 199 |
if opts.DEBUG: |
182 | 200 |
print "regexp failed for " + \ |
183 | 201 |
item['name'] + " on " + mfile |
202 |
+ |
|
203 |
+if opts.OUTPUT == 'xml': |
|
204 |
+ print '</freewvs>' |
|
184 | 205 |