ruby_acunetix 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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: []