A little Ruby
I wrote a little ruby a while back to interpret the data from National Vulnerability Database
require 'net/http'
require 'rexml/document'
include REXML
#url = 'http://static.nvd.nist.gov/feeds/xml/cve/nvdcve-2.0-recent.xml'
# get the XML data as a string
#xml_data = Net::HTTP.get_response(URI.parse(url)).body
# for download
#doc = REXML::Document.new(xml_data)
file = File.open("recent.xml")
doc = Document.new(file)
doc.elements.each('nvd/entry') do |entry|
print entry.elements["vuln:cve-id"].text
print " ==> "
if entry.elements["vuln:cwe"]
puts entry.elements["vuln:cwe"].attributes['id']
else
puts ""
end
end


Thanks. Was looking for this. Added a few more details
To go through the product list
if elem.elements["vuln:vulnerable-software-list"]
elem.elements.each(“vuln:vulnerable-software-list/vuln:product”) { |prod|
puts prod.text
}
else
puts “no product detail”
end
And to get the CVSS details
if elem.elements["vuln:cvss/cvss:base_metrics"]
puts elem.elements["vuln:cvss/cvss:base_metrics/cvss:score"].text
puts elem.elements["vuln:cvss/cvss:base_metrics/cvss:access-vector"].text
puts elem.elements["vuln:cvss/cvss:base_metrics/cvss:access-complexity"].text
puts elem.elements["vuln:cvss/cvss:base_metrics/cvss:authentication"].text
puts elem.elements["vuln:cvss/cvss:base_metrics/cvss:confidentiality-impact"].text
puts elem.elements["vuln:cvss/cvss:base_metrics/cvss:integrity-impact"].text
puts elem.elements["vuln:cvss/cvss:base_metrics/cvss:availability-impact"].text
else
puts “no cvss”
end
Salil
3 Mar 11 at 5:44 am
Wow, thanks I had no idea anyone would find this useful. Thanks for the contribution.
channam
3 Jun 11 at 11:48 pm