Module: RubyBurp

Defined in:
lib/ruby_burp.rb,
lib/ruby_burp/version.rb

Constant Summary collapse

VERSION =
'1.0.2'

Class Method Summary collapse

Class Method Details

.parse(path) ⇒ Object



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/ruby_burp.rb', line 13

def self.parse(path)
  issues = []
  
  doc = Nokogiri::XML(File.open(path))
  doc.xpath('//issues/issue').map do |xml_issue|
    issue = RbIssue.new
    [:serialNumber, :type, :name, :path, :location, :severity, :confidence, :issueBackground, :remediationBackground, :issueDetail].each do |field|
      issue.send("#{rb_underscore(field.to_s)}=", xml_issue.css(field.to_s).text)
    end
    
    ip = xml_issue.css('host').attribute('ip').value
    host = xml_issue.css('host').text
    issue.host = RbHost.new(ip, host)
    
    issue.references = RbReference.parse(xml_issue.css('references').text)
    issue.request = RbRequest.parse(xml_issue.to_s)
    issue.response = RbResponse.parse(xml_issue.to_s)
    issue.vulnerability_classifications = RbVulnerabilityClassification.parse(xml_issue.css('vulnerabilityClassifications').text)
    
    issues.push issue
  end
  
  return issues
end

.rb_underscore(value) ⇒ Object



38
39
40
41
42
43
44
# File 'lib/ruby_burp.rb', line 38

def self.rb_underscore(value)
  value.gsub(/::/, '/').
  gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2').
  gsub(/([a-z\d])([A-Z])/,'\1_\2').
  tr("-", "_").
  downcase
end