risu 1.6.3 → 1.7.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.
Files changed (101) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +12 -0
  3. data/Gemfile.ci +9 -9
  4. data/Gemfile.lock +118 -0
  5. data/LICENSE +1 -1
  6. data/NEWS.markdown +98 -0
  7. data/README.markdown +10 -3
  8. data/Rakefile +2 -2
  9. data/bin/risu +3 -3
  10. data/lib/risu.rb +6 -2
  11. data/lib/risu/base.rb +10 -3
  12. data/lib/risu/base/graph_template_helper.rb +71 -0
  13. data/lib/risu/base/host_template_helper.rb +75 -0
  14. data/lib/risu/base/malware_template_helper.rb +96 -0
  15. data/lib/risu/base/post_process_base.rb +210 -0
  16. data/lib/risu/base/post_process_manager.rb +120 -0
  17. data/lib/risu/base/schema.rb +10 -7
  18. data/lib/risu/base/shares_template_helper.rb +158 -0
  19. data/lib/risu/base/template_base.rb +12 -10
  20. data/lib/risu/base/template_helper.rb +105 -3
  21. data/lib/risu/base/template_manager.rb +16 -12
  22. data/lib/risu/base/templater.rb +23 -9
  23. data/lib/risu/cli.rb +1 -1
  24. data/lib/risu/cli/application.rb +23 -17
  25. data/lib/risu/cli/banner.rb +3 -3
  26. data/lib/risu/exceptions.rb +1 -1
  27. data/lib/risu/exceptions/invaliddocument.rb +1 -1
  28. data/lib/risu/models.rb +1 -1
  29. data/lib/risu/models/attachment.rb +3 -3
  30. data/lib/risu/models/familyselection.rb +3 -3
  31. data/lib/risu/models/host.rb +74 -9
  32. data/lib/risu/models/hostproperty.rb +3 -3
  33. data/lib/risu/models/individualpluginselection.rb +3 -3
  34. data/lib/risu/models/item.rb +92 -29
  35. data/lib/risu/models/patch.rb +3 -3
  36. data/lib/risu/models/plugin.rb +30 -2
  37. data/lib/risu/models/pluginspreference.rb +1 -1
  38. data/lib/risu/models/policy.rb +1 -1
  39. data/lib/risu/models/reference.rb +1 -1
  40. data/lib/risu/models/report.rb +1 -2
  41. data/lib/risu/models/serverpreference.rb +1 -1
  42. data/lib/risu/models/servicedescription.rb +3 -3
  43. data/lib/risu/models/version.rb +1 -1
  44. data/lib/risu/parsers.rb +1 -1
  45. data/lib/risu/parsers/nessus/nessus_document.rb +3 -3
  46. data/lib/risu/parsers/nessus/nessus_sax_listener.rb +23 -16
  47. data/lib/risu/parsers/nessus/postprocess.rb +3 -6
  48. data/lib/risu/parsers/nessus/postprocess/adobe_air.rb +82 -0
  49. data/lib/risu/parsers/nessus/postprocess/adobe_reader.rb +86 -0
  50. data/lib/risu/parsers/nessus/postprocess/apache.rb +67 -0
  51. data/lib/risu/parsers/nessus/postprocess/core_ftp.rb +52 -0
  52. data/lib/risu/parsers/nessus/postprocess/flash_player.rb +104 -0
  53. data/lib/risu/parsers/nessus/postprocess/flexnet.rb +53 -0
  54. data/lib/risu/parsers/nessus/postprocess/google_chrome.rb +52 -0
  55. data/lib/risu/parsers/nessus/postprocess/hp_system_mgt_homepage.rb +60 -0
  56. data/lib/risu/parsers/nessus/postprocess/java.rb +49 -198
  57. data/lib/risu/parsers/nessus/postprocess/openssh.rb +65 -0
  58. data/lib/risu/parsers/nessus/postprocess/openssl.rb +54 -0
  59. data/lib/risu/parsers/nessus/postprocess/oracle_database.rb +84 -0
  60. data/lib/risu/parsers/nessus/postprocess/php.rb +62 -0
  61. data/lib/risu/parsers/nessus/postprocess/post_process.rb +178 -0
  62. data/lib/risu/parsers/nessus/postprocess/risk_score.rb +10 -5
  63. data/lib/risu/parsers/nessus/postprocess/root_cause.rb +375 -0
  64. data/lib/risu/parsers/nessus/postprocess/servu.rb +57 -0
  65. data/lib/risu/parsers/nessus/postprocess/shockwave.rb +73 -0
  66. data/lib/risu/parsers/nessus/postprocess/windows.rb +57 -0
  67. data/lib/risu/parsers/nessus/postprocess/wireshark.rb +72 -0
  68. data/lib/risu/parsers/nexpose/nexpose_document.rb +1 -1
  69. data/lib/risu/parsers/nexpose/simple_nexpose.rb +1 -1
  70. data/lib/risu/renderers.rb +3 -1
  71. data/lib/risu/renderers/csvrenderer.rb +53 -0
  72. data/lib/risu/renderers/nilrenderer.rb +1 -1
  73. data/lib/risu/renderers/pdfrenderer.rb +57 -0
  74. data/lib/risu/templates/assets.rb +5 -4
  75. data/lib/risu/templates/cover_sheet.rb +4 -3
  76. data/lib/risu/templates/exec_summary.rb +4 -3
  77. data/lib/risu/templates/executive_summary_detailed.rb +9 -8
  78. data/lib/risu/templates/exploitablity_summary.rb +82 -0
  79. data/lib/risu/templates/failed_audits.rb +98 -0
  80. data/lib/risu/templates/finding_statistics.rb +2 -1
  81. data/lib/risu/templates/findings_host.rb +20 -22
  82. data/lib/risu/templates/findings_summary.rb +11 -9
  83. data/lib/risu/templates/findings_summary_with_pluginid.rb +31 -85
  84. data/lib/risu/templates/graphs.rb +9 -10
  85. data/lib/risu/templates/host_findings_csv.rb +67 -0
  86. data/lib/risu/templates/host_summary.rb +2 -1
  87. data/lib/risu/templates/malicious_process_detection.rb +2 -1
  88. data/lib/risu/templates/missing_root_causes.rb +162 -0
  89. data/lib/risu/templates/ms_patch_summary.rb +3 -2
  90. data/lib/risu/templates/ms_update_summary.rb +5 -4
  91. data/lib/risu/templates/ms_wsus_findings.rb +5 -4
  92. data/lib/risu/templates/notable.rb +7 -11
  93. data/lib/risu/templates/notable_detailed.rb +7 -4
  94. data/lib/risu/templates/pci_compliance.rb +5 -4
  95. data/lib/risu/templates/stig_findings_summary.rb +5 -4
  96. data/lib/risu/templates/talking_points.rb +164 -0
  97. data/lib/risu/templates/technical_findings.rb +8 -4
  98. data/lib/risu/templates/template.rb +3 -2
  99. data/lib/risu/templates/top_25.rb +115 -0
  100. data/risu.gemspec +16 -15
  101. metadata +142 -77
@@ -0,0 +1,164 @@
1
+ # Copyright (c) 2010-2014 Arxopia LLC.
2
+ # All rights reserved.
3
+ #
4
+ # Redistribution and use in source and binary forms, with or without
5
+ # modification, are permitted provided that the following conditions are met:
6
+ #
7
+ # * Redistributions of source code must retain the above copyright
8
+ # notice, this list of conditions and the following disclaimer.
9
+ # * Redistributions in binary form must reproduce the above copyright
10
+ # notice, this list of conditions and the following disclaimer in the
11
+ # documentation and/or other materials provided with the distribution.
12
+ # * Neither the name of the Arxopia LLC nor the names of its contributors
13
+ # may be used to endorse or promote products derived from this software
14
+ # without specific prior written permission.
15
+ #
16
+ # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
17
+ # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18
+ # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19
+ # DISCLAIMED. IN NO EVENT SHALL ARXOPIA LLC BE LIABLE FOR ANY DIRECT, INDIRECT,
20
+ # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
21
+ # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
22
+ # OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
23
+ # LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
24
+ # OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
25
+ # OF THE POSSIBILITY OF SUCH DAMAGE.
26
+
27
+ module Risu
28
+ module Templates
29
+ class TalkingPoints < Risu::Base::TemplateBase
30
+ include TemplateHelper
31
+
32
+ # Initializes the Talking Points Report
33
+ def initialize ()
34
+ @template_info =
35
+ {
36
+ :name => "talking_points",
37
+ :author => "hammackj",
38
+ :version => "0.0.2",
39
+ :renderer => "PDF",
40
+ :description => "Generates a Talking Points Report"
41
+ }
42
+ end
43
+
44
+ # Renders the Talking Points Report
45
+ def render(output)
46
+ report_classification
47
+
48
+ report_title Report.title
49
+ report_subtitle "Talking Points Report"
50
+ report_author "This report was prepared by\n#{Report.author}"
51
+
52
+ @output.text "\n\n\n"
53
+
54
+ @output.text "Scan Date:", :style => :bold
55
+ @output.text "#{Report.scan_date}"
56
+ @output.text "\n"
57
+
58
+ # Number of hosts / score
59
+ @output.text "There were #{Host.count} hosts identified, containing #{Item.critical_risks.to_a.count + Item.high_risks.to_a.count} critical and high risks findings. Of those there were #{Item.critical_risks.to_a.count} Critical risks, and #{Item.high_risks.to_a.count} High risks."
60
+
61
+ @output.text "These critical and highs were discovered on #{Host.unique_hosts_with_critical_and_high_count} unique hosts. #{Item.risk_percent_rounded_text} of the total assessed computers were found to have an critical or high finding."
62
+
63
+ # @todo need vulnerable host count
64
+
65
+ @output.text "\n\n\n"
66
+
67
+ # Top Hosts with Findings
68
+ #@todo need this call
69
+
70
+ @output.text "\n\n\n"
71
+
72
+ # Notable Findings
73
+ Item.top_10_table(@output)
74
+
75
+
76
+ # Plugin_output keyword search?
77
+
78
+ @output.number_pages "<page> of <total>", :at => [output.bounds.right - 75, 0], :width => 150, :page_filter => :all
79
+ end
80
+ end
81
+ end
82
+ end
83
+
84
+
85
+ # # Copyright (c) 2010-2014 Arxopia LLC.
86
+ # # All rights reserved.
87
+ # #
88
+ # # Redistribution and use in source and binary forms, with or without
89
+ # # modification, are permitted provided that the following conditions are met:
90
+ # #
91
+ # # * Redistributions of source code must retain the above copyright
92
+ # # notice, this list of conditions and the following disclaimer.
93
+ # # * Redistributions in binary form must reproduce the above copyright
94
+ # # notice, this list of conditions and the following disclaimer in the
95
+ # # documentation and/or other materials provided with the distribution.
96
+ # # * Neither the name of the Arxopia LLC nor the names of its contributors
97
+ # # may be used to endorse or promote products derived from this software
98
+ # # without specific prior written permission.
99
+ # #
100
+ # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
101
+ # # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
102
+ # # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
103
+ # # DISCLAIMED. IN NO EVENT SHALL ARXOPIA LLC BE LIABLE FOR ANY DIRECT, INDIRECT,
104
+ # # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
105
+ # # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
106
+ # # OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
107
+ # # LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
108
+ # # OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
109
+ # # OF THE POSSIBILITY OF SUCH DAMAGE.
110
+
111
+ # module Risu
112
+ # module Templates
113
+ # class TalkingPoints < Risu::Base::TemplateBase
114
+ # include TemplateHelper
115
+
116
+ # # Initializes the Talking Points Report
117
+ # def initialize ()
118
+ # @template_info =
119
+ # {
120
+ # :name => "talking_points",
121
+ # :author => "hammackj",
122
+ # :version => "0.0.1",
123
+ # :description => "Generates a Talking Points Report"
124
+ # }
125
+ # end
126
+
127
+ # # Renders the Talking Points Report
128
+ # def render(output)
129
+ # report_classification
130
+
131
+ # report_title Report.title
132
+ # report_subtitle "Talking Points Report"
133
+ # report_author "This report was prepared by\n#{Report.author}"
134
+
135
+ # @output.text "\n\n\n"
136
+
137
+ # @output.text "Scan Date:", :style => :bold
138
+ # @output.text "#{Report.scan_date}"
139
+ # @output.text "\n"
140
+
141
+ # # Number of hosts / score
142
+ # @output.text "There were #{Host.count} hosts identified, containing #{Item.critical_risks.to_a.count + Item.high_risks.to_a.count} critical and high risks findings. Of those there were #{Item.critical_risks.to_a.count} Critical risks, and #{Item.high_risks.to_a.count} High risks. were discovered on #{Host.unique_hosts_with_critical.count + Host.unique_hosts_with_high.count
143
+ # #{Item.risk_percent_rounded_text} of the total assessed computers were found to have an critical or high finding."
144
+
145
+ # #need vulnerable host count
146
+
147
+ # @output.text "\n\n\n"
148
+
149
+ # # Top Hosts with Findings
150
+ # #@todo need this call
151
+
152
+ # @output.text "\n\n\n"
153
+
154
+ # # Notable Findings
155
+ # Item.top_10_table(@output)
156
+
157
+
158
+ # # Plugin_output keyword search?
159
+
160
+ # @output.number_pages "<page> of <total>", :at => [output.bounds.right - 75, 0], :width => 150, :page_filter => :all
161
+ # end
162
+ # end
163
+ # end
164
+ # end
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2010-2013 Arxopia LLC.
1
+ # Copyright (c) 2010-2014 Arxopia LLC.
2
2
  # All rights reserved.
3
3
  #
4
4
  # Redistribution and use in source and binary forms, with or without
@@ -34,7 +34,8 @@ module Risu
34
34
  {
35
35
  :name => "technical_findings",
36
36
  :author => "hammackj",
37
- :version => "0.0.6",
37
+ :version => "0.0.8",
38
+ :renderer => "PDF",
38
39
  :description => "Generates a Technical Findings Report"
39
40
  }
40
41
  end
@@ -50,8 +51,11 @@ module Risu
50
51
  text "\n\n\n"
51
52
 
52
53
  unique_risks = Array.new
53
- unique_risks << Hash[:title => "Critical Findings", :color => "9B30FF", :values => Item.critical_risks_unique] if Item.critical_risks_unique.to_a.size != 0
54
- unique_risks << Hash[:title => "High Findings", :color => "FF0000", :values => Item.high_risks_unique] if Item.high_risks_unique.to_a.size != 0
54
+ unique_risks << Hash[:title => "Critical Findings", :color => Risu::GRAPH_COLORS[0], :values => Item.critical_risks_unique] if Item.critical_risks_unique.to_a.size != 0
55
+ unique_risks << Hash[:title => "High Findings", :color => Risu::GRAPH_COLORS[1], :values => Item.high_risks_unique] if Item.high_risks_unique.to_a.size != 0
56
+
57
+ # unique_risks << Hash[:title => "Medium Findings", :color => Risu::GRAPH_COLORS[2], :values => Item.medium_risks_unique_sorted] if Item.medium_risks_unique_sorted.to_a.size != 0
58
+ # unique_risks << Hash[:title => "Low Findings", :color => Risu::GRAPH_COLORS[3], :values => Item.low_risks_unique_sorted] if Item.low_risks_unique_sorted.to_a.size != 0
55
59
 
56
60
  unique_risks.each_with_index do |h, index|
57
61
  if h[:values].length > 0
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2010-2013 Arxopia LLC.
1
+ # Copyright (c) 2010-2014 Arxopia LLC.
2
2
  # All rights reserved.
3
3
  #
4
4
  # Redistribution and use in source and binary forms, with or without
@@ -36,7 +36,8 @@ module Risu
36
36
  {
37
37
  :name => "template",
38
38
  :author => "hammackj",
39
- :version => "0.0.3",
39
+ :version => "0.0.4",
40
+ :renderer => "PDF",
40
41
  :description => "template"
41
42
  }
42
43
  end
@@ -0,0 +1,115 @@
1
+ # Copyright (c) 2010-2014 Arxopia LLC.
2
+ # All rights reserved.
3
+ #
4
+ # Redistribution and use in source and binary forms, with or without
5
+ # modification, are permitted provided that the following conditions are met:
6
+ #
7
+ # * Redistributions of source code must retain the above copyright
8
+ # notice, this list of conditions and the following disclaimer.
9
+ # * Redistributions in binary form must reproduce the above copyright
10
+ # notice, this list of conditions and the following disclaimer in the
11
+ # documentation and/or other materials provided with the distribution.
12
+ # * Neither the name of the Arxopia LLC nor the names of its contributors
13
+ # may be used to endorse or promote products derived from this software
14
+ # without specific prior written permission.
15
+ #
16
+ # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
17
+ # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18
+ # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19
+ # DISCLAIMED. IN NO EVENT SHALL ARXOPIA LLC BE LIABLE FOR ANY DIRECT, INDIRECT,
20
+ # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
21
+ # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
22
+ # OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
23
+ # LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
24
+ #OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
25
+ #OF THE POSSIBILITY OF SUCH DAMAGE.
26
+
27
+ module Risu
28
+ module Templates
29
+ class Top25 < Risu::Base::TemplateBase
30
+ include TemplateHelper
31
+
32
+ #
33
+ #
34
+ def initialize ()
35
+ @template_info =
36
+ {
37
+ :name => "top_25",
38
+ :author => "hammackj",
39
+ :version => "0.0.2",
40
+ :renderer => "PDF",
41
+ :description => "Generates a Top 25 Remediation report"
42
+ }
43
+ end
44
+
45
+ #
46
+ #
47
+ def render(output)
48
+ text Report.classification.upcase, :align => :center
49
+ text "\n"
50
+
51
+ report_title Report.title
52
+ report_subtitle "Top 25 Remediations"
53
+ report_author "This report was prepared by\n#{Report.author}"
54
+ text "\n\n\n"
55
+
56
+ results = Array.new
57
+
58
+ headers = ["Remediations", "Vulns", "Exploitability", "Assets", "RiskScore"]
59
+
60
+ page_width = output.bounds.width
61
+
62
+ #header_widths = {0 => 255, 1 => 56, 2 => 56, 3 => 56, 4 => 57}
63
+ header_widths = {
64
+ 0 => (page_width * 0.50),
65
+ 1 => (page_width * 0.10),
66
+ 2 => (page_width * 0.15),
67
+ 3 => (page_width * 0.10),
68
+ 4 => (page_width * 0.15)
69
+ }
70
+
71
+ Plugin.where(:risk_factor => "Critical").order(:risk_score).limit(25).reverse_order.each do |plugin|
72
+ row = Array.new
73
+
74
+ name = plugin.plugin_name
75
+ vulns = Item.where(:plugin_id => plugin.id).count
76
+
77
+
78
+ if plugin.exploitability_ease == "Exploits are available"
79
+ exploitability = "Yes"
80
+ else
81
+ exploitability = "No"
82
+ end
83
+
84
+ assets = 0
85
+
86
+ if Item.where(:plugin_id => plugin.id).group(:host_id) != nil
87
+ assets = Item.where(:plugin_id => plugin.id).group(:host_id).to_a.count
88
+ end
89
+
90
+ # vuln_pub_days = 1
91
+
92
+ # vuln_pub_days = (DateTime.now.to_date - plugin.vuln_publication_date.to_date).to_i if plugin.vuln_publication_date != nil
93
+
94
+ # risk = (plugin.cvss_base_score.to_f * vuln_pub_days) * assets
95
+ risk = plugin.risk_score
96
+
97
+ row.push(name)
98
+ row.push(vulns)
99
+ row.push(exploitability)
100
+ row.push(assets)
101
+ row.push(risk)
102
+
103
+ results.push(row)
104
+ end
105
+
106
+ output.table([headers] + results, :header => true, :column_widths => header_widths, :row_colors => ['ffffff', 'E5E5E5']) do
107
+ row(0).style(:font_style => :bold, :background_color => 'D0D0D0')
108
+ cells.borders = [:top, :bottom, :left, :right]
109
+ end
110
+
111
+ output.number_pages "<page> of <total>", :at => [output.bounds.right - 75, 0], :width => 150, :page_filter => :all
112
+ end
113
+ end
114
+ end
115
+ end
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2010-2013 Arxopia LLC.
1
+ # Copyright (c) 2010-2014 Arxopia LLC.
2
2
  # All rights reserved.
3
3
  #
4
4
  # Redistribution and use in source and binary forms, with or without
@@ -21,8 +21,8 @@
21
21
  # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
22
22
  # OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
23
23
  # LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
24
- #OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
25
- #OF THE POSSIBILITY OF SUCH DAMAGE.
24
+ # OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
25
+ # OF THE POSSIBILITY OF SUCH DAMAGE.
26
26
 
27
27
  base = __FILE__
28
28
  $:.unshift(File.join(File.dirname(base), 'lib'))
@@ -32,13 +32,13 @@ require 'risu'
32
32
  Gem::Specification.new do |s|
33
33
  s.name = "#{Risu::APP_NAME}"
34
34
  s.version = Risu::VERSION
35
- s.homepage = "http://www.arxopia.com/projects/risu"
35
+ s.homepage = "https://github.com/arxopia/risu"
36
36
  s.summary = "#{Risu::APP_NAME}"
37
37
  s.description = "#{Risu::APP_NAME} is a Nessus .nessus XML parser and report generation tool"
38
38
  s.license = "BSD"
39
39
 
40
40
  s.author = "Jacob Hammack"
41
- s.email = "risu@arxopia.com"
41
+ s.email = "jacob.hammack@hammackj.com"
42
42
 
43
43
  s.files = Dir['[A-Z]*'] + Dir['lib/**/*'] + ['risu.gemspec']
44
44
  s.bindir = "bin"
@@ -50,15 +50,16 @@ Gem::Specification.new do |s|
50
50
  s.required_rubygems_version = ">= 1.8.24"
51
51
  s.rubyforge_project = "#{Risu::APP_NAME}"
52
52
 
53
- s.add_development_dependency("simplecov", [">= 0.7.1"])
54
- s.add_development_dependency("yard", [">= 0.8.3"])
53
+ s.add_development_dependency 'simplecov', '~> 0.7', '>= 0.7.1'
54
+ s.add_development_dependency 'yard', '~> 0.8', '>= 0.8.3'
55
+ s.add_development_dependency 'minitest', '~> 4.3', '>= 4.3.2'
55
56
 
56
- s.add_dependency('rails', ['>= 4.0.0'])
57
- s.add_dependency('libxml-ruby', ['>= 2.4.0'])
58
- s.add_dependency('prawn', ['>= 0.12.0'])
59
- s.add_dependency('gruff', ['>= 0.3.7'])
60
- s.add_dependency('mysql2', ['>= 0.3.11'])
61
- s.add_dependency('rmagick', [">= 2.13.1"])
62
- s.add_dependency('sqlite3', [">= 1.3.7"])
63
- s.add_dependency('nokogiri', [">=1.5.6"])
57
+ s.add_dependency('rails', ['4.0.0'])
58
+ s.add_dependency('libxml-ruby', ['2.4.0'])
59
+ s.add_dependency('prawn', ['0.12.0'])
60
+ s.add_dependency('gruff', ['0.3.7'])
61
+ s.add_dependency('mysql2', ['0.3.11'])
62
+ s.add_dependency('rmagick', ['2.13.2'])
63
+ s.add_dependency('sqlite3', ['1.3.7'])
64
+ s.add_dependency('nokogiri', ['1.6.0'])
64
65
  end
metadata CHANGED
@@ -1,157 +1,189 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: risu
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.6.3
4
+ version: 1.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jacob Hammack
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-10-02 00:00:00.000000000 Z
11
+ date: 2014-09-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: simplecov
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - '>='
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '0.7'
20
+ - - ">="
18
21
  - !ruby/object:Gem::Version
19
22
  version: 0.7.1
20
23
  type: :development
21
24
  prerelease: false
22
25
  version_requirements: !ruby/object:Gem::Requirement
23
26
  requirements:
24
- - - '>='
27
+ - - "~>"
28
+ - !ruby/object:Gem::Version
29
+ version: '0.7'
30
+ - - ">="
25
31
  - !ruby/object:Gem::Version
26
32
  version: 0.7.1
27
33
  - !ruby/object:Gem::Dependency
28
34
  name: yard
29
35
  requirement: !ruby/object:Gem::Requirement
30
36
  requirements:
31
- - - '>='
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '0.8'
40
+ - - ">="
32
41
  - !ruby/object:Gem::Version
33
42
  version: 0.8.3
34
43
  type: :development
35
44
  prerelease: false
36
45
  version_requirements: !ruby/object:Gem::Requirement
37
46
  requirements:
38
- - - '>='
47
+ - - "~>"
48
+ - !ruby/object:Gem::Version
49
+ version: '0.8'
50
+ - - ">="
39
51
  - !ruby/object:Gem::Version
40
52
  version: 0.8.3
53
+ - !ruby/object:Gem::Dependency
54
+ name: minitest
55
+ requirement: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - "~>"
58
+ - !ruby/object:Gem::Version
59
+ version: '4.3'
60
+ - - ">="
61
+ - !ruby/object:Gem::Version
62
+ version: 4.3.2
63
+ type: :development
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - "~>"
68
+ - !ruby/object:Gem::Version
69
+ version: '4.3'
70
+ - - ">="
71
+ - !ruby/object:Gem::Version
72
+ version: 4.3.2
41
73
  - !ruby/object:Gem::Dependency
42
74
  name: rails
43
75
  requirement: !ruby/object:Gem::Requirement
44
76
  requirements:
45
- - - '>='
77
+ - - '='
46
78
  - !ruby/object:Gem::Version
47
79
  version: 4.0.0
48
80
  type: :runtime
49
81
  prerelease: false
50
82
  version_requirements: !ruby/object:Gem::Requirement
51
83
  requirements:
52
- - - '>='
84
+ - - '='
53
85
  - !ruby/object:Gem::Version
54
86
  version: 4.0.0
55
87
  - !ruby/object:Gem::Dependency
56
88
  name: libxml-ruby
57
89
  requirement: !ruby/object:Gem::Requirement
58
90
  requirements:
59
- - - '>='
91
+ - - '='
60
92
  - !ruby/object:Gem::Version
61
93
  version: 2.4.0
62
94
  type: :runtime
63
95
  prerelease: false
64
96
  version_requirements: !ruby/object:Gem::Requirement
65
97
  requirements:
66
- - - '>='
98
+ - - '='
67
99
  - !ruby/object:Gem::Version
68
100
  version: 2.4.0
69
101
  - !ruby/object:Gem::Dependency
70
102
  name: prawn
71
103
  requirement: !ruby/object:Gem::Requirement
72
104
  requirements:
73
- - - '>='
105
+ - - '='
74
106
  - !ruby/object:Gem::Version
75
107
  version: 0.12.0
76
108
  type: :runtime
77
109
  prerelease: false
78
110
  version_requirements: !ruby/object:Gem::Requirement
79
111
  requirements:
80
- - - '>='
112
+ - - '='
81
113
  - !ruby/object:Gem::Version
82
114
  version: 0.12.0
83
115
  - !ruby/object:Gem::Dependency
84
116
  name: gruff
85
117
  requirement: !ruby/object:Gem::Requirement
86
118
  requirements:
87
- - - '>='
119
+ - - '='
88
120
  - !ruby/object:Gem::Version
89
121
  version: 0.3.7
90
122
  type: :runtime
91
123
  prerelease: false
92
124
  version_requirements: !ruby/object:Gem::Requirement
93
125
  requirements:
94
- - - '>='
126
+ - - '='
95
127
  - !ruby/object:Gem::Version
96
128
  version: 0.3.7
97
129
  - !ruby/object:Gem::Dependency
98
130
  name: mysql2
99
131
  requirement: !ruby/object:Gem::Requirement
100
132
  requirements:
101
- - - '>='
133
+ - - '='
102
134
  - !ruby/object:Gem::Version
103
135
  version: 0.3.11
104
136
  type: :runtime
105
137
  prerelease: false
106
138
  version_requirements: !ruby/object:Gem::Requirement
107
139
  requirements:
108
- - - '>='
140
+ - - '='
109
141
  - !ruby/object:Gem::Version
110
142
  version: 0.3.11
111
143
  - !ruby/object:Gem::Dependency
112
144
  name: rmagick
113
145
  requirement: !ruby/object:Gem::Requirement
114
146
  requirements:
115
- - - '>='
147
+ - - '='
116
148
  - !ruby/object:Gem::Version
117
- version: 2.13.1
149
+ version: 2.13.2
118
150
  type: :runtime
119
151
  prerelease: false
120
152
  version_requirements: !ruby/object:Gem::Requirement
121
153
  requirements:
122
- - - '>='
154
+ - - '='
123
155
  - !ruby/object:Gem::Version
124
- version: 2.13.1
156
+ version: 2.13.2
125
157
  - !ruby/object:Gem::Dependency
126
158
  name: sqlite3
127
159
  requirement: !ruby/object:Gem::Requirement
128
160
  requirements:
129
- - - '>='
161
+ - - '='
130
162
  - !ruby/object:Gem::Version
131
163
  version: 1.3.7
132
164
  type: :runtime
133
165
  prerelease: false
134
166
  version_requirements: !ruby/object:Gem::Requirement
135
167
  requirements:
136
- - - '>='
168
+ - - '='
137
169
  - !ruby/object:Gem::Version
138
170
  version: 1.3.7
139
171
  - !ruby/object:Gem::Dependency
140
172
  name: nokogiri
141
173
  requirement: !ruby/object:Gem::Requirement
142
174
  requirements:
143
- - - '>='
175
+ - - '='
144
176
  - !ruby/object:Gem::Version
145
- version: 1.5.6
177
+ version: 1.6.0
146
178
  type: :runtime
147
179
  prerelease: false
148
180
  version_requirements: !ruby/object:Gem::Requirement
149
181
  requirements:
150
- - - '>='
182
+ - - '='
151
183
  - !ruby/object:Gem::Version
152
- version: 1.5.6
184
+ version: 1.6.0
153
185
  description: risu is a Nessus .nessus XML parser and report generation tool
154
- email: risu@arxopia.com
186
+ email: jacob.hammack@hammackj.com
155
187
  executables:
156
188
  - risu
157
189
  extensions: []
@@ -160,73 +192,107 @@ extra_rdoc_files:
160
192
  - LICENSE
161
193
  - NEWS.markdown
162
194
  files:
163
- - Rakefile
164
- - NEWS.markdown
195
+ - Gemfile
165
196
  - Gemfile.ci
166
- - README.markdown
197
+ - Gemfile.lock
167
198
  - LICENSE
199
+ - NEWS.markdown
200
+ - README.markdown
201
+ - Rakefile
202
+ - bin/risu
168
203
  - lib/risu.rb
169
- - lib/risu/models.rb
170
- - lib/risu/base/templater.rb
171
- - lib/risu/base/template_base.rb
204
+ - lib/risu/base.rb
205
+ - lib/risu/base/graph_template_helper.rb
206
+ - lib/risu/base/host_template_helper.rb
207
+ - lib/risu/base/malware_template_helper.rb
208
+ - lib/risu/base/post_process_base.rb
209
+ - lib/risu/base/post_process_manager.rb
172
210
  - lib/risu/base/schema.rb
211
+ - lib/risu/base/shares_template_helper.rb
212
+ - lib/risu/base/template_base.rb
173
213
  - lib/risu/base/template_helper.rb
174
214
  - lib/risu/base/template_manager.rb
215
+ - lib/risu/base/templater.rb
175
216
  - lib/risu/cli.rb
176
- - lib/risu/cli/banner.rb
177
217
  - lib/risu/cli/application.rb
178
- - lib/risu/base.rb
179
- - lib/risu/renderers/nilrenderer.rb
180
- - lib/risu/renderers.rb
218
+ - lib/risu/cli/banner.rb
181
219
  - lib/risu/exceptions.rb
182
- - lib/risu/parsers/nessus/postprocess.rb
220
+ - lib/risu/exceptions/invaliddocument.rb
221
+ - lib/risu/models.rb
222
+ - lib/risu/models/attachment.rb
223
+ - lib/risu/models/familyselection.rb
224
+ - lib/risu/models/host.rb
225
+ - lib/risu/models/hostproperty.rb
226
+ - lib/risu/models/individualpluginselection.rb
227
+ - lib/risu/models/item.rb
228
+ - lib/risu/models/patch.rb
229
+ - lib/risu/models/plugin.rb
230
+ - lib/risu/models/pluginspreference.rb
231
+ - lib/risu/models/policy.rb
232
+ - lib/risu/models/reference.rb
233
+ - lib/risu/models/report.rb
234
+ - lib/risu/models/serverpreference.rb
235
+ - lib/risu/models/servicedescription.rb
236
+ - lib/risu/models/version.rb
237
+ - lib/risu/parsers.rb
183
238
  - lib/risu/parsers/nessus/nessus_document.rb
239
+ - lib/risu/parsers/nessus/nessus_sax_listener.rb
240
+ - lib/risu/parsers/nessus/postprocess.rb
241
+ - lib/risu/parsers/nessus/postprocess/adobe_air.rb
242
+ - lib/risu/parsers/nessus/postprocess/adobe_reader.rb
243
+ - lib/risu/parsers/nessus/postprocess/apache.rb
244
+ - lib/risu/parsers/nessus/postprocess/core_ftp.rb
245
+ - lib/risu/parsers/nessus/postprocess/flash_player.rb
246
+ - lib/risu/parsers/nessus/postprocess/flexnet.rb
247
+ - lib/risu/parsers/nessus/postprocess/google_chrome.rb
248
+ - lib/risu/parsers/nessus/postprocess/hp_system_mgt_homepage.rb
184
249
  - lib/risu/parsers/nessus/postprocess/java.rb
250
+ - lib/risu/parsers/nessus/postprocess/openssh.rb
251
+ - lib/risu/parsers/nessus/postprocess/openssl.rb
252
+ - lib/risu/parsers/nessus/postprocess/oracle_database.rb
253
+ - lib/risu/parsers/nessus/postprocess/php.rb
254
+ - lib/risu/parsers/nessus/postprocess/post_process.rb
185
255
  - lib/risu/parsers/nessus/postprocess/risk_score.rb
186
- - lib/risu/parsers/nessus/nessus_sax_listener.rb
256
+ - lib/risu/parsers/nessus/postprocess/root_cause.rb
257
+ - lib/risu/parsers/nessus/postprocess/servu.rb
258
+ - lib/risu/parsers/nessus/postprocess/shockwave.rb
259
+ - lib/risu/parsers/nessus/postprocess/windows.rb
260
+ - lib/risu/parsers/nessus/postprocess/wireshark.rb
187
261
  - lib/risu/parsers/nexpose/nexpose_document.rb
188
262
  - lib/risu/parsers/nexpose/simple_nexpose.rb
189
- - lib/risu/exceptions/invaliddocument.rb
190
- - lib/risu/templates/graphs.rb
191
- - lib/risu/templates/template.rb
192
- - lib/risu/templates/ms_wsus_findings.rb
193
- - lib/risu/templates/ms_patch_summary.rb
194
- - lib/risu/templates/notable_detailed.rb
195
- - lib/risu/templates/finding_statistics.rb
263
+ - lib/risu/renderers.rb
264
+ - lib/risu/renderers/csvrenderer.rb
265
+ - lib/risu/renderers/nilrenderer.rb
266
+ - lib/risu/renderers/pdfrenderer.rb
196
267
  - lib/risu/templates/assets.rb
197
- - lib/risu/templates/findings_host.rb
198
- - lib/risu/templates/stig_findings_summary.rb
199
- - lib/risu/templates/host_summary.rb
200
- - lib/risu/templates/pci_compliance.rb
201
- - lib/risu/templates/executive_summary_detailed.rb
268
+ - lib/risu/templates/cover_sheet.rb
269
+ - lib/risu/templates/data/nessuslogo.jpg
202
270
  - lib/risu/templates/exec_summary.rb
271
+ - lib/risu/templates/executive_summary_detailed.rb
272
+ - lib/risu/templates/exploitablity_summary.rb
273
+ - lib/risu/templates/failed_audits.rb
274
+ - lib/risu/templates/finding_statistics.rb
275
+ - lib/risu/templates/findings_host.rb
276
+ - lib/risu/templates/findings_summary.rb
203
277
  - lib/risu/templates/findings_summary_with_pluginid.rb
278
+ - lib/risu/templates/graphs.rb
279
+ - lib/risu/templates/host_findings_csv.rb
280
+ - lib/risu/templates/host_summary.rb
204
281
  - lib/risu/templates/malicious_process_detection.rb
205
- - lib/risu/templates/cover_sheet.rb
206
- - lib/risu/templates/data/nessuslogo.jpg
207
- - lib/risu/templates/notable.rb
282
+ - lib/risu/templates/missing_root_causes.rb
283
+ - lib/risu/templates/ms_patch_summary.rb
208
284
  - lib/risu/templates/ms_update_summary.rb
285
+ - lib/risu/templates/ms_wsus_findings.rb
286
+ - lib/risu/templates/notable.rb
287
+ - lib/risu/templates/notable_detailed.rb
288
+ - lib/risu/templates/pci_compliance.rb
289
+ - lib/risu/templates/stig_findings_summary.rb
290
+ - lib/risu/templates/talking_points.rb
209
291
  - lib/risu/templates/technical_findings.rb
210
- - lib/risu/templates/findings_summary.rb
211
- - lib/risu/models/hostproperty.rb
212
- - lib/risu/models/host.rb
213
- - lib/risu/models/item.rb
214
- - lib/risu/models/servicedescription.rb
215
- - lib/risu/models/attachment.rb
216
- - lib/risu/models/pluginspreference.rb
217
- - lib/risu/models/familyselection.rb
218
- - lib/risu/models/report.rb
219
- - lib/risu/models/individualpluginselection.rb
220
- - lib/risu/models/reference.rb
221
- - lib/risu/models/version.rb
222
- - lib/risu/models/plugin.rb
223
- - lib/risu/models/patch.rb
224
- - lib/risu/models/policy.rb
225
- - lib/risu/models/serverpreference.rb
226
- - lib/risu/parsers.rb
292
+ - lib/risu/templates/template.rb
293
+ - lib/risu/templates/top_25.rb
227
294
  - risu.gemspec
228
- - bin/risu
229
- homepage: http://www.arxopia.com/projects/risu
295
+ homepage: https://github.com/arxopia/risu
230
296
  licenses:
231
297
  - BSD
232
298
  metadata: {}
@@ -236,19 +302,18 @@ require_paths:
236
302
  - lib
237
303
  required_ruby_version: !ruby/object:Gem::Requirement
238
304
  requirements:
239
- - - '>='
305
+ - - ">="
240
306
  - !ruby/object:Gem::Version
241
307
  version: '0'
242
308
  required_rubygems_version: !ruby/object:Gem::Requirement
243
309
  requirements:
244
- - - '>='
310
+ - - ">="
245
311
  - !ruby/object:Gem::Version
246
312
  version: 1.8.24
247
313
  requirements: []
248
314
  rubyforge_project: risu
249
- rubygems_version: 2.0.3
315
+ rubygems_version: 2.2.0
250
316
  signing_key:
251
317
  specification_version: 4
252
318
  summary: risu
253
319
  test_files: []
254
- has_rdoc: yard