ruby-nessus 0.1.1 → 0.1.2
Sign up to get free protection for your applications and to get access to all the features.
- data/README.rdoc +2 -2
- data/VERSION +1 -1
- data/examples/example.rb +1 -1
- data/examples/pdf_example.rb +88 -0
- data/examples/ruby-nessus-example.pdf +529 -0
- data/lib/ruby-nessus/host.rb +30 -22
- data/lib/ruby-nessus/scan.rb +13 -0
- data/lib/ruby-nessus/xml.rb +7 -7
- metadata +6 -2
data/README.rdoc
CHANGED
@@ -54,7 +54,7 @@ You also have the ability to search for particular hostnames. In the near future
|
|
54
54
|
|
55
55
|
puts host.scan_start_time
|
56
56
|
puts host.scan_stop_time
|
57
|
-
puts host.
|
57
|
+
puts host.scan_runtime
|
58
58
|
|
59
59
|
host.events do |event|
|
60
60
|
puts event.severity.in_words
|
@@ -85,7 +85,7 @@ There are a bunch of convenient methods added to make reporting a bit easier to
|
|
85
85
|
scan.hosts do |host|
|
86
86
|
puts host.hostname
|
87
87
|
|
88
|
-
# high_severity_events, medium_severity_events
|
88
|
+
# high_severity_events, medium_severity_events and low_severity_events
|
89
89
|
host.high_severity_events do |high|
|
90
90
|
puts high.port
|
91
91
|
puts high.name if high.name
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.2
|
data/examples/example.rb
CHANGED
@@ -20,7 +20,7 @@ Nessus::XML.new("example.nessus") do |scan|
|
|
20
20
|
|
21
21
|
scan.hosts do |host|
|
22
22
|
puts "Hostname: #{host.hostname}"
|
23
|
-
puts "Open Ports: #{host.
|
23
|
+
puts "Open Ports: #{host.open_ports}"
|
24
24
|
puts "High Severity Events: #{host.high_severity_events}"
|
25
25
|
puts "Medium Severity Events: #{host.medium_severity_events}"
|
26
26
|
puts "Low Severity Events: #{host.low_severity_events}"
|
@@ -0,0 +1,88 @@
|
|
1
|
+
$LOAD_PATH << File.expand_path(File.join(File.dirname(__FILE__),'..','lib'))
|
2
|
+
|
3
|
+
require 'rubygems'
|
4
|
+
require 'ruby-nessus'
|
5
|
+
require 'prawn'
|
6
|
+
require 'prawn/layout'
|
7
|
+
|
8
|
+
@pdf = Prawn::Document.new
|
9
|
+
|
10
|
+
Nessus::XML.new("example.nessus") do |scan|
|
11
|
+
|
12
|
+
@pdf.font_size = 9
|
13
|
+
|
14
|
+
@pdf.footer [@pdf.margin_box.left, @pdf.margin_box.bottom + 25] do
|
15
|
+
@pdf.font "Helvetica" do
|
16
|
+
@pdf.stroke_horizontal_rule
|
17
|
+
@pdf.move_down(10)
|
18
|
+
@pdf.text "Ruby-Nessus - http://github.com/mephux/ruby-nessus", :size => 9, :align => :center
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
@pdf.text("#{scan.title.split(' - ')[1]}", :size => 20)
|
23
|
+
|
24
|
+
@pdf.move_down 2
|
25
|
+
|
26
|
+
@pdf.text("Policy: #{scan.policy_name}")
|
27
|
+
@pdf.text("Policy Description: #{scan.policy_name}")
|
28
|
+
@pdf.text("Runtime: #{scan.runtime}")
|
29
|
+
|
30
|
+
@pdf.move_down 10
|
31
|
+
|
32
|
+
@pdf.bounding_box [0,@pdf.cursor], :width => 490 do
|
33
|
+
|
34
|
+
@pdf.move_down 10
|
35
|
+
|
36
|
+
data = [["#{scan.host_count}", "#{scan.low_severity_count}", "#{scan.medium_severity_count}", "#{scan.high_severity_count}", "#{scan.open_ports_count}", "#{scan.total_event_count}"]]
|
37
|
+
|
38
|
+
@pdf.table data,
|
39
|
+
:position => :left,
|
40
|
+
:border_style => :grid,
|
41
|
+
:headers => ['Host Count', 'Low Severity Events', 'Medium Severity Events', 'High Severity Events', 'Open Ports', 'Total Event Count'],
|
42
|
+
:align => :left,
|
43
|
+
:font_size => 9,
|
44
|
+
:row_colors => :pdf_writer,
|
45
|
+
:align_headers => :left
|
46
|
+
|
47
|
+
@pdf.move_down 10
|
48
|
+
|
49
|
+
@pdf.stroke do
|
50
|
+
@pdf.line @pdf.bounds.top_left, @pdf.bounds.top_right
|
51
|
+
@pdf.line @pdf.bounds.bottom_left, @pdf.bounds.bottom_right
|
52
|
+
end
|
53
|
+
|
54
|
+
end
|
55
|
+
|
56
|
+
scan.hosts do |host|
|
57
|
+
|
58
|
+
@pdf.move_down(20)
|
59
|
+
|
60
|
+
@pdf.bounding_box [0,@pdf.cursor], :width => 490 do
|
61
|
+
@pdf.move_down(10)
|
62
|
+
@pdf.text("#{host.hostname}", :size => 18)
|
63
|
+
@pdf.text("Scan Time: #{host.scan_runtime}")
|
64
|
+
@pdf.text("Low: #{host.low_severity_events} Medium: #{host.medium_severity_events} High: #{host.high_severity_events} Total: #{host.event_count}")
|
65
|
+
@pdf.text("Operating System: #{host.operating_system}")
|
66
|
+
@pdf.move_down 10
|
67
|
+
@pdf.stroke do
|
68
|
+
@pdf.line @pdf.bounds.bottom_left, @pdf.bounds.bottom_right
|
69
|
+
end
|
70
|
+
end
|
71
|
+
@pdf.move_down(10)
|
72
|
+
|
73
|
+
@i = 0
|
74
|
+
host.events do |event|
|
75
|
+
|
76
|
+
next if event.severity.to_i <= 1
|
77
|
+
@pdf.text("#{@i+=1}. #{event.name}", :size => 11)
|
78
|
+
@pdf.text("\t\t\t- #{event.severity.in_words}")
|
79
|
+
@pdf.text("\t\t\t- #{event.port}")
|
80
|
+
@pdf.move_down(10)
|
81
|
+
end
|
82
|
+
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
puts "PDF Created Successfully!"
|
87
|
+
|
88
|
+
@pdf.render_file('ruby-nessus-example.pdf')
|
@@ -0,0 +1,529 @@
|
|
1
|
+
%PDF-1.3
|
2
|
+
����
|
3
|
+
1 0 obj
|
4
|
+
<< /Creator (Prawn)
|
5
|
+
/Producer (Prawn)
|
6
|
+
>>
|
7
|
+
endobj
|
8
|
+
2 0 obj
|
9
|
+
<< /Type /Pages
|
10
|
+
/Count 1
|
11
|
+
/Kids [5 0 R]
|
12
|
+
>>
|
13
|
+
endobj
|
14
|
+
3 0 obj
|
15
|
+
<< /Pages 2 0 R
|
16
|
+
/Type /Catalog
|
17
|
+
>>
|
18
|
+
endobj
|
19
|
+
4 0 obj
|
20
|
+
<< /Length 6720
|
21
|
+
>>
|
22
|
+
stream
|
23
|
+
0.000 0.000 0.000 rg
|
24
|
+
0.000 0.000 0.000 RG
|
25
|
+
q
|
26
|
+
|
27
|
+
BT
|
28
|
+
36 741.64 Td
|
29
|
+
/F1.0 20 Tf
|
30
|
+
[<527562> 20 <792d4e6573737573204578616d706c652050> 50 <6f6c696379>] TJ
|
31
|
+
ET
|
32
|
+
|
33
|
+
|
34
|
+
BT
|
35
|
+
36 724.418 Td
|
36
|
+
/F1.0 9 Tf
|
37
|
+
[<50> 50 <6f6c6963793a> 50 <20527562> 20 <792d4e6573737573204578616d706c652050> 50 <6f6c696379>] TJ
|
38
|
+
ET
|
39
|
+
|
40
|
+
|
41
|
+
BT
|
42
|
+
36 714.014 Td
|
43
|
+
/F1.0 9 Tf
|
44
|
+
[<50> 50 <6f6c696379204465736372> -15 <697074696f6e3a> 50 <20527562> 20 <792d4e6573737573204578616d706c652050> 50 <6f6c696379>] TJ
|
45
|
+
ET
|
46
|
+
|
47
|
+
|
48
|
+
BT
|
49
|
+
36 703.61 Td
|
50
|
+
/F1.0 9 Tf
|
51
|
+
[<52756e74696d653a> 50 <203020686f757273203130206d696e> 10 <7574657320616e642036207365636f6e6473>] TJ
|
52
|
+
ET
|
53
|
+
|
54
|
+
1.000 1.000 1.000 rg
|
55
|
+
36.500 659.764 55.000 19.404 re
|
56
|
+
f
|
57
|
+
0.000 0.000 0.000 rg
|
58
|
+
1 w
|
59
|
+
36.000 680.168 m
|
60
|
+
36.000 658.764 l
|
61
|
+
S
|
62
|
+
92.000 680.168 m
|
63
|
+
92.000 658.764 l
|
64
|
+
S
|
65
|
+
36.500 679.668 m
|
66
|
+
91.500 679.668 l
|
67
|
+
S
|
68
|
+
36.000 659.264 m
|
69
|
+
92.000 659.264 l
|
70
|
+
S
|
71
|
+
0.000 0.000 0.000 RG
|
72
|
+
1 w
|
73
|
+
|
74
|
+
BT
|
75
|
+
41 666.235 Td
|
76
|
+
/F1.0 9 Tf
|
77
|
+
[<486f737420436f756e74>] TJ
|
78
|
+
ET
|
79
|
+
|
80
|
+
0.000 0.000 0.000 rg
|
81
|
+
1.000 1.000 1.000 rg
|
82
|
+
92.500 659.764 91.000 19.404 re
|
83
|
+
f
|
84
|
+
0.000 0.000 0.000 rg
|
85
|
+
1 w
|
86
|
+
92.000 680.168 m
|
87
|
+
92.000 658.764 l
|
88
|
+
S
|
89
|
+
184.000 680.168 m
|
90
|
+
184.000 658.764 l
|
91
|
+
S
|
92
|
+
92.500 679.668 m
|
93
|
+
183.500 679.668 l
|
94
|
+
S
|
95
|
+
92.000 659.264 m
|
96
|
+
184.000 659.264 l
|
97
|
+
S
|
98
|
+
0.000 0.000 0.000 RG
|
99
|
+
1 w
|
100
|
+
|
101
|
+
BT
|
102
|
+
97 666.235 Td
|
103
|
+
/F1.0 9 Tf
|
104
|
+
[<4c6f> 15 <77205365> 30 <76> 25 <6572> -15 <697479204576> 25 <656e7473>] TJ
|
105
|
+
ET
|
106
|
+
|
107
|
+
0.000 0.000 0.000 rg
|
108
|
+
1.000 1.000 1.000 rg
|
109
|
+
184.500 659.764 107.000 19.404 re
|
110
|
+
f
|
111
|
+
0.000 0.000 0.000 rg
|
112
|
+
1 w
|
113
|
+
184.000 680.168 m
|
114
|
+
184.000 658.764 l
|
115
|
+
S
|
116
|
+
292.000 680.168 m
|
117
|
+
292.000 658.764 l
|
118
|
+
S
|
119
|
+
184.500 679.668 m
|
120
|
+
291.500 679.668 l
|
121
|
+
S
|
122
|
+
184.000 659.264 m
|
123
|
+
292.000 659.264 l
|
124
|
+
S
|
125
|
+
0.000 0.000 0.000 RG
|
126
|
+
1 w
|
127
|
+
|
128
|
+
BT
|
129
|
+
189 666.235 Td
|
130
|
+
/F1.0 9 Tf
|
131
|
+
[<4d656469756d205365> 30 <76> 25 <6572> -15 <697479204576> 25 <656e7473>] TJ
|
132
|
+
ET
|
133
|
+
|
134
|
+
0.000 0.000 0.000 rg
|
135
|
+
1.000 1.000 1.000 rg
|
136
|
+
292.500 659.764 93.000 19.404 re
|
137
|
+
f
|
138
|
+
0.000 0.000 0.000 rg
|
139
|
+
1 w
|
140
|
+
292.000 680.168 m
|
141
|
+
292.000 658.764 l
|
142
|
+
S
|
143
|
+
386.000 680.168 m
|
144
|
+
386.000 658.764 l
|
145
|
+
S
|
146
|
+
292.500 679.668 m
|
147
|
+
385.500 679.668 l
|
148
|
+
S
|
149
|
+
292.000 659.264 m
|
150
|
+
386.000 659.264 l
|
151
|
+
S
|
152
|
+
0.000 0.000 0.000 RG
|
153
|
+
1 w
|
154
|
+
|
155
|
+
BT
|
156
|
+
297 666.235 Td
|
157
|
+
/F1.0 9 Tf
|
158
|
+
[<48696768205365> 30 <76> 25 <6572> -15 <697479204576> 25 <656e7473>] TJ
|
159
|
+
ET
|
160
|
+
|
161
|
+
0.000 0.000 0.000 rg
|
162
|
+
1.000 1.000 1.000 rg
|
163
|
+
386.500 659.764 55.000 19.404 re
|
164
|
+
f
|
165
|
+
0.000 0.000 0.000 rg
|
166
|
+
1 w
|
167
|
+
386.000 680.168 m
|
168
|
+
386.000 658.764 l
|
169
|
+
S
|
170
|
+
442.000 680.168 m
|
171
|
+
442.000 658.764 l
|
172
|
+
S
|
173
|
+
386.500 679.668 m
|
174
|
+
441.500 679.668 l
|
175
|
+
S
|
176
|
+
386.000 659.264 m
|
177
|
+
442.000 659.264 l
|
178
|
+
S
|
179
|
+
0.000 0.000 0.000 RG
|
180
|
+
1 w
|
181
|
+
|
182
|
+
BT
|
183
|
+
391 666.235 Td
|
184
|
+
/F1.0 9 Tf
|
185
|
+
[<4f70656e2050> 50 <6f72> -40 <7473>] TJ
|
186
|
+
ET
|
187
|
+
|
188
|
+
0.000 0.000 0.000 rg
|
189
|
+
1.000 1.000 1.000 rg
|
190
|
+
442.500 659.764 82.000 19.404 re
|
191
|
+
f
|
192
|
+
0.000 0.000 0.000 rg
|
193
|
+
1 w
|
194
|
+
442.000 680.168 m
|
195
|
+
442.000 658.764 l
|
196
|
+
S
|
197
|
+
525.000 680.168 m
|
198
|
+
525.000 658.764 l
|
199
|
+
S
|
200
|
+
442.500 679.668 m
|
201
|
+
524.500 679.668 l
|
202
|
+
S
|
203
|
+
442.000 659.264 m
|
204
|
+
525.000 659.264 l
|
205
|
+
S
|
206
|
+
0.000 0.000 0.000 RG
|
207
|
+
1 w
|
208
|
+
|
209
|
+
BT
|
210
|
+
447 666.235 Td
|
211
|
+
/F1.0 9 Tf
|
212
|
+
[<54> 120 <6f74616c204576> 25 <656e7420436f756e74>] TJ
|
213
|
+
ET
|
214
|
+
|
215
|
+
0.000 0.000 0.000 rg
|
216
|
+
0.800 0.800 0.800 rg
|
217
|
+
36.500 639.360 55.000 19.404 re
|
218
|
+
f
|
219
|
+
0.000 0.000 0.000 rg
|
220
|
+
1 w
|
221
|
+
36.000 659.764 m
|
222
|
+
36.000 638.360 l
|
223
|
+
S
|
224
|
+
92.000 659.764 m
|
225
|
+
92.000 638.360 l
|
226
|
+
S
|
227
|
+
36.500 659.264 m
|
228
|
+
91.500 659.264 l
|
229
|
+
S
|
230
|
+
36.000 638.860 m
|
231
|
+
92.000 638.860 l
|
232
|
+
S
|
233
|
+
0.000 0.000 0.000 RG
|
234
|
+
1 w
|
235
|
+
|
236
|
+
BT
|
237
|
+
41 645.831 Td
|
238
|
+
/F1.0 9 Tf
|
239
|
+
[<31>] TJ
|
240
|
+
ET
|
241
|
+
|
242
|
+
0.000 0.000 0.000 rg
|
243
|
+
0.800 0.800 0.800 rg
|
244
|
+
92.500 639.360 91.000 19.404 re
|
245
|
+
f
|
246
|
+
0.000 0.000 0.000 rg
|
247
|
+
1 w
|
248
|
+
92.000 659.764 m
|
249
|
+
92.000 638.360 l
|
250
|
+
S
|
251
|
+
184.000 659.764 m
|
252
|
+
184.000 638.360 l
|
253
|
+
S
|
254
|
+
92.500 659.264 m
|
255
|
+
183.500 659.264 l
|
256
|
+
S
|
257
|
+
92.000 638.860 m
|
258
|
+
184.000 638.860 l
|
259
|
+
S
|
260
|
+
0.000 0.000 0.000 RG
|
261
|
+
1 w
|
262
|
+
|
263
|
+
BT
|
264
|
+
97 645.831 Td
|
265
|
+
/F1.0 9 Tf
|
266
|
+
[<3139>] TJ
|
267
|
+
ET
|
268
|
+
|
269
|
+
0.000 0.000 0.000 rg
|
270
|
+
0.800 0.800 0.800 rg
|
271
|
+
184.500 639.360 107.000 19.404 re
|
272
|
+
f
|
273
|
+
0.000 0.000 0.000 rg
|
274
|
+
1 w
|
275
|
+
184.000 659.764 m
|
276
|
+
184.000 638.360 l
|
277
|
+
S
|
278
|
+
292.000 659.764 m
|
279
|
+
292.000 638.360 l
|
280
|
+
S
|
281
|
+
184.500 659.264 m
|
282
|
+
291.500 659.264 l
|
283
|
+
S
|
284
|
+
184.000 638.860 m
|
285
|
+
292.000 638.860 l
|
286
|
+
S
|
287
|
+
0.000 0.000 0.000 RG
|
288
|
+
1 w
|
289
|
+
|
290
|
+
BT
|
291
|
+
189 645.831 Td
|
292
|
+
/F1.0 9 Tf
|
293
|
+
[<33>] TJ
|
294
|
+
ET
|
295
|
+
|
296
|
+
0.000 0.000 0.000 rg
|
297
|
+
0.800 0.800 0.800 rg
|
298
|
+
292.500 639.360 93.000 19.404 re
|
299
|
+
f
|
300
|
+
0.000 0.000 0.000 rg
|
301
|
+
1 w
|
302
|
+
292.000 659.764 m
|
303
|
+
292.000 638.360 l
|
304
|
+
S
|
305
|
+
386.000 659.764 m
|
306
|
+
386.000 638.360 l
|
307
|
+
S
|
308
|
+
292.500 659.264 m
|
309
|
+
385.500 659.264 l
|
310
|
+
S
|
311
|
+
292.000 638.860 m
|
312
|
+
386.000 638.860 l
|
313
|
+
S
|
314
|
+
0.000 0.000 0.000 RG
|
315
|
+
1 w
|
316
|
+
|
317
|
+
BT
|
318
|
+
297 645.831 Td
|
319
|
+
/F1.0 9 Tf
|
320
|
+
[<30>] TJ
|
321
|
+
ET
|
322
|
+
|
323
|
+
0.000 0.000 0.000 rg
|
324
|
+
0.800 0.800 0.800 rg
|
325
|
+
386.500 639.360 55.000 19.404 re
|
326
|
+
f
|
327
|
+
0.000 0.000 0.000 rg
|
328
|
+
1 w
|
329
|
+
386.000 659.764 m
|
330
|
+
386.000 638.360 l
|
331
|
+
S
|
332
|
+
442.000 659.764 m
|
333
|
+
442.000 638.360 l
|
334
|
+
S
|
335
|
+
386.500 659.264 m
|
336
|
+
441.500 659.264 l
|
337
|
+
S
|
338
|
+
386.000 638.860 m
|
339
|
+
442.000 638.860 l
|
340
|
+
S
|
341
|
+
0.000 0.000 0.000 RG
|
342
|
+
1 w
|
343
|
+
|
344
|
+
BT
|
345
|
+
391 645.831 Td
|
346
|
+
/F1.0 9 Tf
|
347
|
+
[<35>] TJ
|
348
|
+
ET
|
349
|
+
|
350
|
+
0.000 0.000 0.000 rg
|
351
|
+
0.800 0.800 0.800 rg
|
352
|
+
442.500 639.360 82.000 19.404 re
|
353
|
+
f
|
354
|
+
0.000 0.000 0.000 rg
|
355
|
+
1 w
|
356
|
+
442.000 659.764 m
|
357
|
+
442.000 638.360 l
|
358
|
+
S
|
359
|
+
525.000 659.764 m
|
360
|
+
525.000 638.360 l
|
361
|
+
S
|
362
|
+
442.500 659.264 m
|
363
|
+
524.500 659.264 l
|
364
|
+
S
|
365
|
+
442.000 638.860 m
|
366
|
+
525.000 638.860 l
|
367
|
+
S
|
368
|
+
0.000 0.000 0.000 RG
|
369
|
+
1 w
|
370
|
+
|
371
|
+
BT
|
372
|
+
447 645.831 Td
|
373
|
+
/F1.0 9 Tf
|
374
|
+
[<3232>] TJ
|
375
|
+
ET
|
376
|
+
|
377
|
+
0.000 0.000 0.000 rg
|
378
|
+
36.000 689.668 m
|
379
|
+
526.000 689.668 l
|
380
|
+
36.000 628.860 m
|
381
|
+
526.000 628.860 l
|
382
|
+
S
|
383
|
+
|
384
|
+
BT
|
385
|
+
36 585.936 Td
|
386
|
+
/F1.0 18 Tf
|
387
|
+
[<7363616e6d65> 15 <2e696e736563757265> 15 <2e6f7267>] TJ
|
388
|
+
ET
|
389
|
+
|
390
|
+
|
391
|
+
BT
|
392
|
+
36 571.59 Td
|
393
|
+
/F1.0 9 Tf
|
394
|
+
[<5363616e20> 50 <54696d653a> 50 <203020686f757273203130206d696e> 10 <7574657320616e642034207365636f6e6473>] TJ
|
395
|
+
ET
|
396
|
+
|
397
|
+
|
398
|
+
BT
|
399
|
+
36 561.186 Td
|
400
|
+
/F1.0 9 Tf
|
401
|
+
[<4c6f> 15 <773a> 50 <203139204d656469756d3a> 50 <203320486967683a> 50 <203020> 50 <54> 120 <6f74616c3a> 50 <203232>] TJ
|
402
|
+
ET
|
403
|
+
|
404
|
+
|
405
|
+
BT
|
406
|
+
36 550.782 Td
|
407
|
+
/F1.0 9 Tf
|
408
|
+
[<4f706572> 10 <6174696e672053797374656d3a> 50 <204c696e> 10 <7578204b> 40 <6572> -25 <6e656c20322e36206f6e205265642048617420456e746572> -30 <7072> -15 <697365204c696e> 10 <75782035>] TJ
|
409
|
+
ET
|
410
|
+
|
411
|
+
36.000 536.840 m
|
412
|
+
526.000 536.840 l
|
413
|
+
S
|
414
|
+
|
415
|
+
BT
|
416
|
+
36 518.942 Td
|
417
|
+
/F1.0 11 Tf
|
418
|
+
[<312e> 60 <20444e5320536572> -30 <76> 25 <657220436163686520536e6f6f70696e6720496e66> 30 <6f72> -25 <6d6174696f6e20446973636c6f73757265>] TJ
|
419
|
+
ET
|
420
|
+
|
421
|
+
|
422
|
+
BT
|
423
|
+
36 507.662 Td
|
424
|
+
/F1.0 9 Tf
|
425
|
+
[<0909092d204d656469756d205365> 30 <76> 25 <6572> -15 <697479>] TJ
|
426
|
+
ET
|
427
|
+
|
428
|
+
|
429
|
+
BT
|
430
|
+
36 497.258 Td
|
431
|
+
/F1.0 9 Tf
|
432
|
+
[<0909092d20646f6d61696e202835332f75647029>] TJ
|
433
|
+
ET
|
434
|
+
|
435
|
+
|
436
|
+
BT
|
437
|
+
36 475.418 Td
|
438
|
+
/F1.0 11 Tf
|
439
|
+
[<322e> 60 <20444e5320536572> -30 <76> 25 <6572205265637572736976> 25 <652051756572> -30 <792043616368652050> 50 <6f69736f6e696e6720> 40 <57> 30 <65616b6e657373>] TJ
|
440
|
+
ET
|
441
|
+
|
442
|
+
|
443
|
+
BT
|
444
|
+
36 464.138 Td
|
445
|
+
/F1.0 9 Tf
|
446
|
+
[<0909092d204d656469756d205365> 30 <76> 25 <6572> -15 <697479>] TJ
|
447
|
+
ET
|
448
|
+
|
449
|
+
|
450
|
+
BT
|
451
|
+
36 453.734 Td
|
452
|
+
/F1.0 9 Tf
|
453
|
+
[<0909092d20646f6d61696e202835332f75647029>] TJ
|
454
|
+
ET
|
455
|
+
|
456
|
+
|
457
|
+
BT
|
458
|
+
36 431.894 Td
|
459
|
+
/F1.0 11 Tf
|
460
|
+
[<332e> 60 <204854545020> 50 <545241> 30 <4345202f20> 50 <545241> 30 <434b204d6574686f647320416c6c6f> 15 <77> 10 <6564>] TJ
|
461
|
+
ET
|
462
|
+
|
463
|
+
|
464
|
+
BT
|
465
|
+
36 420.614 Td
|
466
|
+
/F1.0 9 Tf
|
467
|
+
[<0909092d204d656469756d205365> 30 <76> 25 <6572> -15 <697479>] TJ
|
468
|
+
ET
|
469
|
+
|
470
|
+
|
471
|
+
BT
|
472
|
+
36 410.21 Td
|
473
|
+
/F1.0 9 Tf
|
474
|
+
[<0909092d2068747470202838302f74637029>] TJ
|
475
|
+
ET
|
476
|
+
|
477
|
+
36.000 61.000 m
|
478
|
+
576.000 61.000 l
|
479
|
+
S
|
480
|
+
|
481
|
+
BT
|
482
|
+
199.0035 44.538 Td
|
483
|
+
/F1.0 9 Tf
|
484
|
+
[<527562> 20 <792d4e6573737573202d20687474703a2f2f676974687562> 40 <2e636f6d2f6d65706875782f72> -15 <7562> 20 <792d6e6573737573>] TJ
|
485
|
+
ET
|
486
|
+
|
487
|
+
Q
|
488
|
+
|
489
|
+
endstream
|
490
|
+
endobj
|
491
|
+
5 0 obj
|
492
|
+
<< /Resources << /Font << /F1.0 7 0 R
|
493
|
+
>>
|
494
|
+
>>
|
495
|
+
/Type /Page
|
496
|
+
/Parent 2 0 R
|
497
|
+
/MediaBox [0 0 612.0 792.0]
|
498
|
+
/ProcSet 6 0 R
|
499
|
+
/Contents 4 0 R
|
500
|
+
>>
|
501
|
+
endobj
|
502
|
+
6 0 obj
|
503
|
+
[/PDF /Text]
|
504
|
+
endobj
|
505
|
+
7 0 obj
|
506
|
+
<< /Encoding /WinAnsiEncoding
|
507
|
+
/Type /Font
|
508
|
+
/BaseFont /Helvetica
|
509
|
+
/Subtype /Type1
|
510
|
+
>>
|
511
|
+
endobj
|
512
|
+
xref
|
513
|
+
0 8
|
514
|
+
0000000000 65535 f
|
515
|
+
0000000014 00000 n
|
516
|
+
0000000070 00000 n
|
517
|
+
0000000127 00000 n
|
518
|
+
0000000176 00000 n
|
519
|
+
0000006948 00000 n
|
520
|
+
0000007095 00000 n
|
521
|
+
0000007123 00000 n
|
522
|
+
trailer
|
523
|
+
<< /Size 8
|
524
|
+
/Root 3 0 R
|
525
|
+
/Info 1 0 R
|
526
|
+
>>
|
527
|
+
startxref
|
528
|
+
7220
|
529
|
+
%%EOF
|
data/lib/ruby-nessus/host.rb
CHANGED
@@ -43,7 +43,7 @@ module Nessus
|
|
43
43
|
# The Host Scan Run Time
|
44
44
|
# @example
|
45
45
|
# scan.scan_run_time #=> '2 hours 5 minutes and 16 seconds'
|
46
|
-
def
|
46
|
+
def scan_runtime
|
47
47
|
if scan_start_time.empty? | scan_stop_time.empty?; return "N/A"; end
|
48
48
|
h = ("#{Time.parse(scan_stop_time).strftime('%H').to_i - Time.parse(scan_start_time).strftime('%H').to_i}").gsub('-', '')
|
49
49
|
m = ("#{Time.parse(scan_stop_time).strftime('%M').to_i - Time.parse(scan_start_time).strftime('%M').to_i}").gsub('-', '')
|
@@ -68,6 +68,7 @@ module Nessus
|
|
68
68
|
def mac_addr
|
69
69
|
@mac_addr ||= @host.at('mac_addr').inner_text
|
70
70
|
end
|
71
|
+
alias mac_address mac_addr
|
71
72
|
|
72
73
|
# Return the Host DNS Name.
|
73
74
|
# @return [String]
|
@@ -86,13 +87,14 @@ module Nessus
|
|
86
87
|
def os_name
|
87
88
|
@os_name ||= @host.at('os_name').inner_text
|
88
89
|
end
|
90
|
+
alias operating_system os_name
|
89
91
|
|
90
|
-
# Return the
|
92
|
+
# Return the open ports for a given host object.
|
91
93
|
# @return [Integer]
|
92
|
-
# Return the
|
94
|
+
# Return the open ports for a given host object.
|
93
95
|
# @example
|
94
|
-
# host.
|
95
|
-
def
|
96
|
+
# host.open_ports #=> 213
|
97
|
+
def open_ports
|
96
98
|
@scanned_ports ||= @host.at('num_ports').inner_text.to_i
|
97
99
|
end
|
98
100
|
|
@@ -103,25 +105,25 @@ module Nessus
|
|
103
105
|
# @return [Integer]
|
104
106
|
# Return The Informational Event Count For A Given Host.
|
105
107
|
# @example
|
106
|
-
# host.
|
107
|
-
# puts info.
|
108
|
+
# host.informational_events do |info|
|
109
|
+
# puts info.port
|
110
|
+
# puts info.data if info.data
|
108
111
|
# end
|
109
|
-
def
|
110
|
-
unless @
|
111
|
-
@
|
112
|
-
@
|
112
|
+
def informational_events(&block)
|
113
|
+
unless @informational_events
|
114
|
+
@informational_events = []
|
115
|
+
@informational_event_count = 0
|
113
116
|
|
114
117
|
@host.xpath("//ReportItem").each do |event|
|
115
118
|
next if event.at('severity').inner_text.to_i != 0
|
116
|
-
@
|
117
|
-
@
|
119
|
+
@informational_events << Event.new(event)
|
120
|
+
@informational_event_count += 1
|
118
121
|
end
|
119
|
-
|
120
|
-
@informational_severity_count = @host.at('num_lo').inner_text.to_i
|
122
|
+
|
121
123
|
end
|
122
124
|
|
123
|
-
@
|
124
|
-
return @
|
125
|
+
@informational_events.each(&block)
|
126
|
+
return @informational_event_count
|
125
127
|
end
|
126
128
|
|
127
129
|
# Returns All Low Event Objects For A Given Host.
|
@@ -135,6 +137,9 @@ module Nessus
|
|
135
137
|
# puts low.name if low.name
|
136
138
|
# end
|
137
139
|
def low_severity_events(&block)
|
140
|
+
|
141
|
+
@low_severity_count = @host.at('num_lo').inner_text.to_i
|
142
|
+
|
138
143
|
unless @low_severity_events
|
139
144
|
@low_severity_events = []
|
140
145
|
|
@@ -143,7 +148,6 @@ module Nessus
|
|
143
148
|
@low_severity_events << Event.new(event)
|
144
149
|
end
|
145
150
|
|
146
|
-
@low_severity_count = @host.at('num_lo').inner_text.to_i
|
147
151
|
end
|
148
152
|
|
149
153
|
@low_severity_events.each(&block)
|
@@ -161,6 +165,9 @@ module Nessus
|
|
161
165
|
# puts medium.name if medium.name
|
162
166
|
# end
|
163
167
|
def medium_severity_events(&block)
|
168
|
+
|
169
|
+
@high_severity_count = @host.at('num_med').inner_text.to_i
|
170
|
+
|
164
171
|
unless @medium_severity_events
|
165
172
|
@medium_severity_events = []
|
166
173
|
|
@@ -169,7 +176,6 @@ module Nessus
|
|
169
176
|
@medium_severity_events << Event.new(event)
|
170
177
|
end
|
171
178
|
|
172
|
-
@high_severity_count = @host.at('num_med').inner_text.to_i
|
173
179
|
end
|
174
180
|
|
175
181
|
@medium_severity_events.each(&block)
|
@@ -187,6 +193,9 @@ module Nessus
|
|
187
193
|
# puts high.name if high.name
|
188
194
|
# end
|
189
195
|
def high_severity_events(&block)
|
196
|
+
|
197
|
+
@high_severity_count = @host.at('num_hi').inner_text.to_i
|
198
|
+
|
190
199
|
unless @high_severity_events
|
191
200
|
@high_severity_events = []
|
192
201
|
|
@@ -194,8 +203,7 @@ module Nessus
|
|
194
203
|
next if event.at('severity').inner_text.to_i != 3
|
195
204
|
@high_severity_events << Event.new(event)
|
196
205
|
end
|
197
|
-
|
198
|
-
@high_severity_count = @host.at('num_hi').inner_text.to_i
|
206
|
+
|
199
207
|
end
|
200
208
|
|
201
209
|
@high_severity_events.each(&block)
|
@@ -208,7 +216,7 @@ module Nessus
|
|
208
216
|
# @example
|
209
217
|
# host.event_count #=> 3456
|
210
218
|
def event_count
|
211
|
-
(
|
219
|
+
((low_severity_events.to_i) + (medium_severity_events.to_i) + (high_severity_events.to_i)).to_i
|
212
220
|
end
|
213
221
|
|
214
222
|
# Creates a new Event object to be parser
|
data/lib/ruby-nessus/xml.rb
CHANGED
@@ -165,8 +165,8 @@ module Nessus
|
|
165
165
|
# The Informational Severity Count
|
166
166
|
# @example
|
167
167
|
# scan.informational_severity_count #=> 1203
|
168
|
-
def
|
169
|
-
count_severity[:
|
168
|
+
def open_ports_count
|
169
|
+
count_severity[:open_ports].to_i
|
170
170
|
end
|
171
171
|
|
172
172
|
# Return the High severity count.
|
@@ -215,7 +215,7 @@ module Nessus
|
|
215
215
|
# scan.event_percentage_for("low", true) #=> 11%
|
216
216
|
def event_percentage_for(type, round_percentage=false)
|
217
217
|
@sc ||= count_severity
|
218
|
-
if %W(high medium low
|
218
|
+
if %W(high medium low all).include?(type)
|
219
219
|
calc = ((@sc[:"#{type}"].to_f / @sc[:all].to_f) * 100)
|
220
220
|
if round_percentage
|
221
221
|
return "#{calc.round}"
|
@@ -252,7 +252,7 @@ module Nessus
|
|
252
252
|
def count_severity
|
253
253
|
unless @count
|
254
254
|
@count = {}
|
255
|
-
@
|
255
|
+
@open_ports = 0
|
256
256
|
@low = 0
|
257
257
|
@medium = 0
|
258
258
|
@high = 0
|
@@ -260,7 +260,7 @@ module Nessus
|
|
260
260
|
@xml.xpath("//ReportItem//severity").each do |s|
|
261
261
|
case s.inner_text.to_i
|
262
262
|
when 0
|
263
|
-
@
|
263
|
+
@open_ports += 1
|
264
264
|
when 1
|
265
265
|
@low += 1
|
266
266
|
when 2
|
@@ -270,11 +270,11 @@ module Nessus
|
|
270
270
|
end
|
271
271
|
end
|
272
272
|
|
273
|
-
@count = { :
|
273
|
+
@count = { :open_ports => @open_ports,
|
274
274
|
:low => @low,
|
275
275
|
:medium => @medium,
|
276
276
|
:high => @high,
|
277
|
-
:all => (@
|
277
|
+
:all => (@low + @medium + @high) }
|
278
278
|
end
|
279
279
|
|
280
280
|
return @count
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby-nessus
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dustin Willis Webber
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-11-
|
12
|
+
date: 2009-11-09 00:00:00 -06:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -59,12 +59,15 @@ files:
|
|
59
59
|
- VERSION
|
60
60
|
- examples/example.nessus
|
61
61
|
- examples/example.rb
|
62
|
+
- examples/pdf_example.rb
|
63
|
+
- examples/ruby-nessus-example.pdf
|
62
64
|
- lib/ruby-nessus.rb
|
63
65
|
- lib/ruby-nessus/core_ext/helpers.rb
|
64
66
|
- lib/ruby-nessus/event.rb
|
65
67
|
- lib/ruby-nessus/host.rb
|
66
68
|
- lib/ruby-nessus/nessus.rb
|
67
69
|
- lib/ruby-nessus/port.rb
|
70
|
+
- lib/ruby-nessus/scan.rb
|
68
71
|
- lib/ruby-nessus/xml.rb
|
69
72
|
- spec/ruby-nessus_spec.rb
|
70
73
|
- spec/spec.opts
|
@@ -103,3 +106,4 @@ test_files:
|
|
103
106
|
- spec/ruby-nessus_spec.rb
|
104
107
|
- spec/spec_helper.rb
|
105
108
|
- examples/example.rb
|
109
|
+
- examples/pdf_example.rb
|