2323
2424from urllib .request import urlopen
2525import json
26- from collections import defaultdict
2726
2827DEBIAN_ROOT_URL = "https://security-tracker.debian.org/tracker/data/json"
2928
@@ -32,8 +31,8 @@ def json_data():
3231 """
3332 Return JSON of Debian vulnerability data.
3433 """
35- raw_data = urlopen (DEBIAN_ROOT_URL ).read ()
36- json_data = json .loads (raw_data )
34+ debian_data = urlopen (DEBIAN_ROOT_URL ).read ()
35+ json_data = json .loads (debian_data )
3736
3837 return json_data
3938
@@ -43,27 +42,19 @@ def extract_data(data):
4342 Return a dictionary of package names and vulnerability details.
4443 Accepts `JSON` as input.
4544 """
46-
47- cves = []
48- package_names = []
49- package_data = {}
50- cve_data = {}
51- final_data = {}
52-
53- fields_names = ['status' , 'urgency' , 'fixed_version' ]
45+ final_data = []
5446
5547 for package_name , vulnerabilities in data .items ():
56- package_names .append (package_name )
5748 for vulnerability , details in vulnerabilities .items ():
58- cves . append ( vulnerability )
59- for distro , version_detail in details . get ( 'releases' , { 'jessie' }). items () :
60- for name in fields_names :
61- cve_data [ name ] = version_detail . get ( name )
62-
63- for i , j in enumerate ( package_names ):
64- package_data [ package_names [ i ]] = [ cves [ i ]]
65-
66- for k , v in enumerate ( package_data ):
67- final_data . setdefault ( k , []). append ( cve_data [ k ] )
49+ for distro , version_detail in details . get ( 'releases' , {}). items ():
50+ if distro == 'jessie' :
51+ final_data . append ({
52+ "package_name" : package_name ,
53+ "vulnerability_id" : vulnerability ,
54+ "status" : version_detail . get ( 'status' ),
55+ "Urgency" : version_detail . get ( "urgency" ),
56+ "Fixed_Version" : version_detail . get ( "fixed_version" )
57+ }
58+ )
6859
6960 return final_data
0 commit comments