peplum-nmap 0.2.0 → 0.2.1
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 +4 -4
- data/examples/rest.rb +3 -0
- data/examples/rpc.rb +4 -1
- data/lib/peplum/nmap/payload.rb +16 -3
- data/lib/peplum/nmap/services/info.rb +26 -0
- data/lib/peplum/nmap/services/rest_proxy.rb +17 -0
- data/lib/peplum/nmap/version.rb +1 -1
- data/lib/peplum/nmap.rb +7 -0
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 77102d2b6c314e3b3f3585bb3d892338b81080087289b11631e2295cf4711499
|
4
|
+
data.tar.gz: cf41927ba26efe42963c4064522c3e68735f5deb3163e6067dbb863b5470daa3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ad0e5f023991b6b8c95ae46621fbb4ce55f64dabc1a6509abc6b7767571facdff926077b8e23213d5f362e38dec82f926cd97f9fc5d1a5bcb65cdacdbfd8fce8
|
7
|
+
data.tar.gz: 866b15d443a8a0b7bb33a57548fb460bff9fec8bf3b4120aee08e27730e62caf24041bcf58c464f327557a5c3d1bbd3c293a8d70114ff18996fed3d788a0b23b
|
data/examples/rest.rb
CHANGED
@@ -39,6 +39,9 @@ request :post, 'instances', {
|
|
39
39
|
instance_id = response_data['id']
|
40
40
|
|
41
41
|
while sleep( 1 )
|
42
|
+
request :get, "instances/#{instance_id}/info/progress"
|
43
|
+
ap response_data
|
44
|
+
|
42
45
|
# Continue looping while instance status is 'busy'.
|
43
46
|
request :get, "instances/#{instance_id}"
|
44
47
|
break if !response_data['busy']
|
data/examples/rpc.rb
CHANGED
data/lib/peplum/nmap/payload.rb
CHANGED
@@ -21,8 +21,16 @@ module Payload
|
|
21
21
|
end
|
22
22
|
|
23
23
|
def run( targets, options )
|
24
|
-
|
25
|
-
|
24
|
+
# Do it this way so we'll be able to have progress reports per scanned host.
|
25
|
+
merge( targets.map do |target|
|
26
|
+
_run options.merge( targets: target, output_xml: SCAN_REPORT )
|
27
|
+
|
28
|
+
report = report_from_xml( SCAN_REPORT )
|
29
|
+
next if !report.include?('hosts')
|
30
|
+
|
31
|
+
Nmap::Application.master.info.update report
|
32
|
+
report
|
33
|
+
end.compact )
|
26
34
|
end
|
27
35
|
|
28
36
|
def group( targets, chunks )
|
@@ -45,7 +53,12 @@ module Payload
|
|
45
53
|
ping: true,
|
46
54
|
output_xml: PING_REPORT
|
47
55
|
|
48
|
-
hosts_from_xml( PING_REPORT )
|
56
|
+
hosts = hosts_from_xml( PING_REPORT )
|
57
|
+
|
58
|
+
# Seed the progress data with the live hosts
|
59
|
+
hosts.each { |h| Services::Info.progress_data['hosts'][h] ||= {} }
|
60
|
+
|
61
|
+
hosts
|
49
62
|
end
|
50
63
|
|
51
64
|
def set_default_options( nmap )
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module Peplum
|
2
|
+
class Nmap
|
3
|
+
module Services
|
4
|
+
|
5
|
+
class Info
|
6
|
+
|
7
|
+
class <<self
|
8
|
+
def progress_data
|
9
|
+
@progress_data ||= { 'hosts' => {} }
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
def progress
|
14
|
+
self.class.progress_data
|
15
|
+
end
|
16
|
+
|
17
|
+
def update( data )
|
18
|
+
self.class.progress_data['hosts'].merge! Payload.merge( [self.class.progress_data, data] )['hosts']
|
19
|
+
nil
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Peplum
|
2
|
+
class Nmap
|
3
|
+
module Services
|
4
|
+
module RESTProxy
|
5
|
+
def self.registered( app )
|
6
|
+
|
7
|
+
app.get '/progress' do
|
8
|
+
instance_for( params[:instance] ) do |instance|
|
9
|
+
json instance.info.progress
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
data/lib/peplum/nmap/version.rb
CHANGED
data/lib/peplum/nmap.rb
CHANGED
@@ -11,6 +11,13 @@ class Nmap
|
|
11
11
|
class Error < Peplum::Error; end
|
12
12
|
|
13
13
|
class Application < Peplum::Application
|
14
|
+
|
15
|
+
require_relative "nmap/services/info"
|
16
|
+
instance_service_for :info, Services::Info
|
17
|
+
|
18
|
+
require_relative "nmap/services/rest_proxy"
|
19
|
+
rest_service_for :info, Services::RESTProxy
|
20
|
+
|
14
21
|
def payload
|
15
22
|
Payload
|
16
23
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: peplum-nmap
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tasos Laskos
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-05-
|
11
|
+
date: 2023-05-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: peplum
|
@@ -53,6 +53,8 @@ files:
|
|
53
53
|
- examples/rpc.rb
|
54
54
|
- lib/peplum/nmap.rb
|
55
55
|
- lib/peplum/nmap/payload.rb
|
56
|
+
- lib/peplum/nmap/services/info.rb
|
57
|
+
- lib/peplum/nmap/services/rest_proxy.rb
|
56
58
|
- lib/peplum/nmap/version.rb
|
57
59
|
- peplum-nmap.gemspec
|
58
60
|
homepage: http://ecsypno.com/
|