ruby_arachni 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/lib/ruby_arachni.rb +44 -0
- data/lib/ruby_arachni/rar_check.rb +25 -0
- data/lib/ruby_arachni/rar_issue.rb +5 -0
- data/lib/ruby_arachni/rar_reference.rb +14 -0
- data/lib/ruby_arachni/rar_vector.rb +16 -0
- data/lib/ruby_arachni/version.rb +3 -0
- metadata +50 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 895133ac414dd1c1713233b324ee555dc2c647ed
|
4
|
+
data.tar.gz: 9e38eed5f00bf4485f04c12310474b56deef3fbe
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: e32da9b7a4184ceeed5ec2cd27fddb36625518935643f82b87d7f65ac28009cf0606971849653757fa68e73828b13fd1d30668694c79a1da7269f15c2dcf0611
|
7
|
+
data.tar.gz: dc9ef8ae2dff0e851dc083787a175788a2abc4ea2e40c03528aad613022bd9b976a038414faef049aa3e3568da5bd6fb2df792ad67a67fa2c3163a5e785c0e70
|
data/lib/ruby_arachni.rb
ADDED
@@ -0,0 +1,44 @@
|
|
1
|
+
require 'nokogiri'
|
2
|
+
|
3
|
+
require File.join(File.dirname(__FILE__), 'ruby_arachni', 'version')
|
4
|
+
require File.join(File.dirname(__FILE__), 'ruby_arachni', 'rar_reference')
|
5
|
+
require File.join(File.dirname(__FILE__), 'ruby_arachni', 'rar_issue')
|
6
|
+
require File.join(File.dirname(__FILE__), 'ruby_arachni', 'rar_check')
|
7
|
+
require File.join(File.dirname(__FILE__), 'ruby_arachni', 'rar_vector')
|
8
|
+
|
9
|
+
module RubyArachni
|
10
|
+
|
11
|
+
def self.parse(path)
|
12
|
+
issues = []
|
13
|
+
|
14
|
+
doc = Nokogiri::XML(File.open(path))
|
15
|
+
doc.xpath('//issues/issue').map do |xml_issue|
|
16
|
+
issue = RarIssue.new
|
17
|
+
[:name, :description, :remedy_guidance, :remedy_code, :severity, :cwe, :digest,
|
18
|
+
:remarks, :page, :referring_page, :signature, :proof, :trusted, :platform_type,
|
19
|
+
:platform_name].each do |field|
|
20
|
+
issue.send("#{field.to_s}=", xml_issue.css(field.to_s).text)
|
21
|
+
end
|
22
|
+
|
23
|
+
check = xml_issue.css('check')
|
24
|
+
issue.check = RarCheck.parse(check) if !check.nil?
|
25
|
+
|
26
|
+
vector = xml_issue.css('vector')
|
27
|
+
issue.vector = RarVector.parse(vector) if !vector.nil?
|
28
|
+
|
29
|
+
issue.references = []
|
30
|
+
|
31
|
+
references = xml_issue.css('references')
|
32
|
+
if !references.nil?
|
33
|
+
references.css('reference').each do |reference|
|
34
|
+
issue.references.push(RarReference.parse(reference))
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
issues.push issue
|
39
|
+
end
|
40
|
+
|
41
|
+
issues
|
42
|
+
end
|
43
|
+
|
44
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
class RarCheck
|
2
|
+
attr_accessor :name, :description, :author, :version, :shortname
|
3
|
+
|
4
|
+
def initialize(fields)
|
5
|
+
self.name = fields['name']
|
6
|
+
self.description = fields['description']
|
7
|
+
self.author = fields['author']
|
8
|
+
self.version = fields['version']
|
9
|
+
self.shortname = fields['shortname']
|
10
|
+
end
|
11
|
+
|
12
|
+
class << self
|
13
|
+
def parse(check)
|
14
|
+
fields = {}
|
15
|
+
|
16
|
+
fields['name'] = check.css('name').text
|
17
|
+
fields['description'] = check.css('description').text
|
18
|
+
fields['author'] = check.css('author').text
|
19
|
+
fields['version'] = check.css('version').text
|
20
|
+
fields['shortname'] = check.css('shortname').text
|
21
|
+
|
22
|
+
RarCheck.new(fields)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
class RarReference
|
2
|
+
attr_accessor :title, :url
|
3
|
+
|
4
|
+
def initialize(title, url)
|
5
|
+
self.title = title
|
6
|
+
self.url = url
|
7
|
+
end
|
8
|
+
|
9
|
+
class << self
|
10
|
+
def parse(reference)
|
11
|
+
RarReference.new(reference.attribute('title').value, reference.attribute('url').value)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
class RarVector
|
2
|
+
attr_accessor :klass, :type, :url, :action
|
3
|
+
|
4
|
+
def initialize(klass, type, url, action)
|
5
|
+
self.klass = klass
|
6
|
+
self.type = type
|
7
|
+
self.url = url
|
8
|
+
self.action = action
|
9
|
+
end
|
10
|
+
|
11
|
+
class << self
|
12
|
+
def parse(vector)
|
13
|
+
RarVector.new(vector.css('class').text, vector.css('type').text, vector.css('url').text, vector.css('action').text)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
metadata
ADDED
@@ -0,0 +1,50 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: ruby_arachni
|
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-21 00:00:00.000000000 Z
|
12
|
+
dependencies: []
|
13
|
+
description: Ruby Arachni Scanner XML Parser
|
14
|
+
email:
|
15
|
+
- adilsonchacon@gmail.com
|
16
|
+
executables: []
|
17
|
+
extensions: []
|
18
|
+
extra_rdoc_files: []
|
19
|
+
files:
|
20
|
+
- lib/ruby_arachni.rb
|
21
|
+
- lib/ruby_arachni/rar_check.rb
|
22
|
+
- lib/ruby_arachni/rar_issue.rb
|
23
|
+
- lib/ruby_arachni/rar_reference.rb
|
24
|
+
- lib/ruby_arachni/rar_vector.rb
|
25
|
+
- lib/ruby_arachni/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 Arachni Scanner XML Parser
|
50
|
+
test_files: []
|