ruby_acunetix 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 68db252e24469999a905b855574187af60b2abf6
4
+ data.tar.gz: 57e9865b2e09a8509a67b6de660a3e2883dc94d4
5
+ SHA512:
6
+ metadata.gz: 5d5d5b55655d5c5ce63e07015aed3263317cfb4eaaeb6c0483be31323be6cc724803e8e615a1e364437c1092e35f9b12cdce24bd2d6cccaf12de8b911d5b6eab
7
+ data.tar.gz: fa110a943cf5c3184a7448408da02d480b9cdd92e20e82b22c916b0fb89d593f7d27039946f1e33c427ebc452eb01622f3a9d9fe3288bcf292fa5e8604936234
@@ -0,0 +1,38 @@
1
+ class RaCvss
2
+ attr_accessor :descriptor, :score, :av, :ac, :au, :c, :i, :a, :e, :rl, :rc
3
+
4
+ def initialize(fields)
5
+ self.descriptor = fields[:descriptor]
6
+ self.score = fields[:score]
7
+ self.av = fields[:av]
8
+ self.ac = fields[:ac]
9
+ self.au = fields[:au]
10
+ self.c = fields[:c]
11
+ self.i = fields[:i]
12
+ self.a = fields[:a]
13
+ self.e = fields[:e]
14
+ self.rl = fields[:rl]
15
+ self.rc = fields[:rc]
16
+ end
17
+
18
+ class << self
19
+ def parse(cvss)
20
+ fields = {}
21
+
22
+ fields[:descriptor] = cvss.css(:Descriptor).text
23
+ fields[:score] = cvss.css(:Score).text
24
+ fields[:av] = cvss.css(:AV).text
25
+ fields[:ac] = cvss.css(:AC).text
26
+ fields[:au] = cvss.css(:Au).text
27
+ fields[:c] = cvss.css(:C).text
28
+ fields[:i] = cvss.css(:I).text
29
+ fields[:a] = cvss.css(:A).text
30
+ fields[:e] = cvss.css(:E).text
31
+ fields[:rl] = cvss.css(:RL).text
32
+ fields[:rc] = cvss.css(:RC).text
33
+
34
+ RaCvss.new(fields)
35
+ end
36
+ end
37
+
38
+ end
@@ -0,0 +1,46 @@
1
+ class RaCvss3
2
+ attr_accessor :descriptor, :score, :temp_score, :env_score, :av, :ac, :pr, :ui, :s, :c, :i, :a, :e, :rl, :rc
3
+
4
+ def initialize(fields)
5
+ self.descriptor = fields[:descriptor]
6
+ self.score = fields[:score]
7
+ self.temp_score = fields[:temp_score]
8
+ self.env_score = fields[:env_score]
9
+ self.av = fields[:av]
10
+ self.ac = fields[:ac]
11
+ self.pr = fields[:pr]
12
+ self.ui = fields[:ui]
13
+ self.s = fields[:s]
14
+ self.c = fields[:c]
15
+ self.i = fields[:i]
16
+ self.a = fields[:a]
17
+ self.e = fields[:e]
18
+ self.rl = fields[:rl]
19
+ self.rc = fields[:rc]
20
+ end
21
+
22
+ class << self
23
+ def parse(cvss3)
24
+ fields = {}
25
+
26
+ fields[:descriptor] = cvss3.css(:Descriptor).text
27
+ fields[:score] = cvss3.css(:Score).text
28
+ fields[:temp_score] = cvss3.css(:TempScore).text
29
+ fields[:env_score] = cvss3.css(:EnvScore).text
30
+ fields[:av] = cvss3.css(:AV).text
31
+ fields[:ac] = cvss3.css(:AC).text
32
+ fields[:pr] = cvss3.css(:PR).text
33
+ fields[:ui] = cvss3.css(:UI).text
34
+ fields[:s] = cvss3.css(:S).text
35
+ fields[:c] = cvss3.css(:C).text
36
+ fields[:i] = cvss3.css(:I).text
37
+ fields[:a] = cvss3.css(:A).text
38
+ fields[:e] = cvss3.css(:E).text
39
+ fields[:rl] = cvss3.css(:RL).text
40
+ fields[:rc] = cvss3.css(:RC).text
41
+
42
+ RaCvss3.new(fields)
43
+ end
44
+ end
45
+
46
+ end
@@ -0,0 +1,14 @@
1
+ class RaReference
2
+ attr_accessor :database, :url
3
+
4
+ def initialize(database, url)
5
+ self.database = database
6
+ self.url = url
7
+ end
8
+
9
+ class << self
10
+ def parse(reference)
11
+ RaReference.new(reference.css('Database').text, reference.css('URL').text)
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,5 @@
1
+ class RaReportItem
2
+ attr_accessor :name, :module_name, :details, :affects, :parameter, :aop_source_file, :aop_source_line,
3
+ :aop_additional, :is_false_positive, :severity, :type, :impact, :description, :detailed_information,
4
+ :recommendation, :request, :cwe, :cve, :cvss, :cvss3, :references
5
+ end
@@ -0,0 +1,3 @@
1
+ module RubyAcunetix
2
+ VERSION = '1.0.0'
3
+ end
@@ -0,0 +1,56 @@
1
+ require 'nokogiri'
2
+
3
+ require File.join(File.dirname(__FILE__), 'ruby_acunetix', 'version')
4
+ require File.join(File.dirname(__FILE__), 'ruby_acunetix', 'ra_cvss')
5
+ require File.join(File.dirname(__FILE__), 'ruby_acunetix', 'ra_cvss3')
6
+ require File.join(File.dirname(__FILE__), 'ruby_acunetix', 'ra_reference')
7
+ require File.join(File.dirname(__FILE__), 'ruby_acunetix', 'ra_report_item')
8
+
9
+ module RubyAcunetix
10
+
11
+ def self.parse(path)
12
+ report_items = []
13
+
14
+ doc = Nokogiri::XML(File.open(path))
15
+ doc.xpath('//ReportItems/ReportItem').map do |xml_report_item|
16
+ report_item = RaReportItem.new
17
+ [:Name, :ModuleName, :Details, :Affects, :Parameter, :AOP_SourceFile, :AOP_SourceLine, :IsFalsePositive, :Severity, :Type, :Impact, :Description, :DetailedInformation, :Recommendation, :Request].each do |field|
18
+ report_item.send("#{ra_underscore(field.to_s)}=", xml_report_item.css(field.to_s).text)
19
+ end
20
+
21
+ cwe = xml_report_item.css('CWEList')
22
+ report_item.send("cwe=", cwe.css('CWE').text) if !cwe.nil?
23
+
24
+ cve = xml_report_item.css('CVEList')
25
+ report_item.send("cve=", cwe.css('CVE').text) if !cwe.nil?
26
+
27
+ cvss = xml_report_item.css('CVSS')
28
+ report_item.cvss = RaCvss.parse(cvss) if !cvss.nil?
29
+
30
+ cvss3 = xml_report_item.css('CVSS3')
31
+ report_item.cvss3 = RaCvss3.parse(cvss3) if !cvss3.nil?
32
+
33
+ report_item.references = []
34
+
35
+ references = xml_report_item.css('References')
36
+ if !references.nil?
37
+ references.css('Reference').each do |reference|
38
+ report_item.references.push(RaReference.parse(reference))
39
+ end
40
+ end
41
+
42
+ report_items.push report_item
43
+ end
44
+
45
+ return report_items
46
+ end
47
+
48
+ def self.ra_underscore(value)
49
+ value.gsub(/::/, '/').
50
+ gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2').
51
+ gsub(/([a-z\d])([A-Z])/,'\1_\2').
52
+ tr("-", "_").
53
+ downcase
54
+ end
55
+
56
+ end
metadata ADDED
@@ -0,0 +1,50 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: ruby_acunetix
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Adilson Chacon
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2018-11-20 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: Ruby Acunectix Scanner Parser
14
+ email:
15
+ - adilsonchacon@gmail.com
16
+ executables: []
17
+ extensions: []
18
+ extra_rdoc_files: []
19
+ files:
20
+ - lib/ruby_acunetix.rb
21
+ - lib/ruby_acunetix/ra_cvss.rb
22
+ - lib/ruby_acunetix/ra_cvss3.rb
23
+ - lib/ruby_acunetix/ra_reference.rb
24
+ - lib/ruby_acunetix/ra_report_item.rb
25
+ - lib/ruby_acunetix/version.rb
26
+ homepage: https://github.com/adilsonchacon/ruby-acunetix
27
+ licenses:
28
+ - MIT
29
+ metadata: {}
30
+ post_install_message:
31
+ rdoc_options: []
32
+ require_paths:
33
+ - lib
34
+ required_ruby_version: !ruby/object:Gem::Requirement
35
+ requirements:
36
+ - - ">="
37
+ - !ruby/object:Gem::Version
38
+ version: '0'
39
+ required_rubygems_version: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
44
+ requirements: []
45
+ rubyforge_project:
46
+ rubygems_version: 2.4.3
47
+ signing_key:
48
+ specification_version: 4
49
+ summary: Ruby Acunectix Scanner Parser
50
+ test_files: []