l-tools 0.1.1 → 0.1.2
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/lib/core/opts.rb +37 -0
- data/lib/{tools → core}/tool.rb +17 -2
- data/lib/l-tools.rb +5 -3
- data/lib/tools/nmap.rb +38 -5
- data/lib/tools/tshark.rb +5 -3
- data/lib/version.rb +1 -1
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ccdd5035905c71206c23c250d80cc02537f20e77f261c1857b8fcba1e1267002
|
4
|
+
data.tar.gz: 77d587a78592e701095ed8c028a33b66bf0914ecb4f8b28f885d98d97f874ed3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f06fc28f33a40886f6b69a174b4c2bc58045c09c729c1f00973c0c960103065b1e14cef3a4797eafc14b709a3aa13234cea36c13d0b314f804d981f9340a1c75
|
7
|
+
data.tar.gz: 95cd3a893be065f6d9afaadbf38fbd6e96870483e073a087651bf9afff127873a92b7c0e08e153759f36829a07d6151ec9aa906cb0a3914a2428f4922356964a
|
data/lib/core/opts.rb
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
|
2
|
+
module LTools
|
3
|
+
class Tool
|
4
|
+
class ToolOpts
|
5
|
+
def self.build(&block)
|
6
|
+
new(&block).to_s
|
7
|
+
end
|
8
|
+
|
9
|
+
def initialize
|
10
|
+
@args = []
|
11
|
+
yield self if block_given?
|
12
|
+
end
|
13
|
+
|
14
|
+
def on(opt, value, &block)
|
15
|
+
if value
|
16
|
+
value = block.call(value) if block
|
17
|
+
if value
|
18
|
+
@args << opt if opt
|
19
|
+
@args << value
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def to_s
|
25
|
+
to_str
|
26
|
+
end
|
27
|
+
|
28
|
+
def to_str
|
29
|
+
" #{Shellwords.join(@args)} "
|
30
|
+
end
|
31
|
+
|
32
|
+
def to_a
|
33
|
+
@args
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
data/lib/{tools → core}/tool.rb
RENAMED
@@ -7,11 +7,12 @@ ChildProcess.posix_spawn = true
|
|
7
7
|
|
8
8
|
module LTools
|
9
9
|
autoload :Shellwords, 'shellwords'
|
10
|
+
autoload :Tempfile, 'tempfile'
|
10
11
|
|
11
12
|
class Tool
|
12
13
|
extend Forwardable
|
13
14
|
|
14
|
-
attr_reader :stdin, :stdout, :stderr
|
15
|
+
attr_reader :stdin, :stdout, :stderr, :cmd
|
15
16
|
attr_accessor :verbose
|
16
17
|
|
17
18
|
def_delegators :@process, :stop, :pid, :exited?, \
|
@@ -53,7 +54,7 @@ module LTools
|
|
53
54
|
@stdin = @process.io.stdin unless @inherit
|
54
55
|
if @verbose
|
55
56
|
puts "[#{'+'.light_green.bold}] #{self.class.to_s.light_yellow} (pid: #{pid})"
|
56
|
-
puts " #{?$.light_red.bold} #{
|
57
|
+
puts " #{?$.light_red.bold} #{command}"
|
57
58
|
puts
|
58
59
|
end
|
59
60
|
end
|
@@ -70,6 +71,20 @@ module LTools
|
|
70
71
|
@stderr_w.close
|
71
72
|
end
|
72
73
|
|
74
|
+
def command
|
75
|
+
@cmd.map{|str|
|
76
|
+
if str.include?(' ')
|
77
|
+
if str.include? '"'
|
78
|
+
"'#{str}'"
|
79
|
+
else
|
80
|
+
"\"#{str}\""
|
81
|
+
end
|
82
|
+
else
|
83
|
+
str
|
84
|
+
end
|
85
|
+
}.join ' '
|
86
|
+
end
|
87
|
+
|
73
88
|
def io_inherit!
|
74
89
|
@inherit = true
|
75
90
|
@process.io.inherit!
|
data/lib/l-tools.rb
CHANGED
@@ -1,9 +1,11 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
3
|
module LTools
|
4
|
-
autoload :Tool,
|
5
|
-
autoload :
|
6
|
-
|
4
|
+
autoload :Tool, 'core/tool'
|
5
|
+
autoload :ToolOpts, 'core/opts'
|
6
|
+
|
7
|
+
autoload :Tshark, 'tools/tshark'
|
8
|
+
autoload :Nmap, 'tools/nmap'
|
7
9
|
|
8
10
|
@tools = []
|
9
11
|
|
data/lib/tools/nmap.rb
CHANGED
@@ -3,13 +3,46 @@ module LTools
|
|
3
3
|
class Nmap < Tool
|
4
4
|
@name = 'nmap'
|
5
5
|
|
6
|
-
|
6
|
+
# TODO 非正常退出的情况, Root权限问题
|
7
|
+
def self.portscan(targets, ports: nil, mode: 'S', speed: 5, xml_report: nil, append: nil)
|
7
8
|
cmd = "nmap -Pn -n -T#{speed} -s#{mode}"
|
8
|
-
cmd <<
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
cmd << ToolOpts.build {|opts|
|
10
|
+
opts.on('-p', ports)
|
11
|
+
opts.on('-oX', xml_report){ |file|
|
12
|
+
break file unless file == :auto
|
13
|
+
@nmap_xml_report = Tempfile.new('ltools-nmap-xml-report')
|
14
|
+
@nmap_xml_report.close
|
15
|
+
@nmap_xml_report.to_path
|
16
|
+
}
|
17
|
+
}
|
18
|
+
cmd << self.targets_cmd(targets)
|
19
|
+
cmd << append if append
|
12
20
|
new cmd
|
13
21
|
end
|
22
|
+
|
23
|
+
def self.targets_cmd(targets)
|
24
|
+
case targets
|
25
|
+
when Array
|
26
|
+
if targets.size < 8
|
27
|
+
targets.join ' '
|
28
|
+
else
|
29
|
+
infile = Tempfile.new('ltools-nmap-')
|
30
|
+
infile.puts targets
|
31
|
+
infile.close
|
32
|
+
"-iL #{infile.to_path}"
|
33
|
+
end
|
34
|
+
when String
|
35
|
+
File.file?(targets) ? "-iL #{targets}" : targets
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
def xml_report
|
40
|
+
require 'nmap/xml'
|
41
|
+
if index = @cmd.index('-oX')
|
42
|
+
file = @cmd[index+1]
|
43
|
+
puts File.binread(file)
|
44
|
+
::Nmap::XML.new(file)
|
45
|
+
end
|
46
|
+
end
|
14
47
|
end
|
15
48
|
end
|
data/lib/tools/tshark.rb
CHANGED
@@ -5,9 +5,11 @@ module LTools
|
|
5
5
|
|
6
6
|
def self.capture(interface: nil, bpf: nil, fields:nil, filter: nil, append: nil)
|
7
7
|
cmd = 'tshark'
|
8
|
-
cmd <<
|
9
|
-
|
10
|
-
|
8
|
+
cmd << ToolOpts.build {|opts|
|
9
|
+
opts.on('-i', interface)
|
10
|
+
opts.on('-f', bpf)
|
11
|
+
opts.on('-Y', filter)
|
12
|
+
}
|
11
13
|
if fields
|
12
14
|
fields = fields.split if fields.is_a? String
|
13
15
|
fields.unshift ' -T fields'
|
data/lib/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: l-tools
|
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
|
- L
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-12-
|
11
|
+
date: 2018-12-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: childprocess
|
@@ -62,9 +62,10 @@ files:
|
|
62
62
|
- ".gitignore"
|
63
63
|
- Gemfile
|
64
64
|
- l-tools.gemspec
|
65
|
+
- lib/core/opts.rb
|
66
|
+
- lib/core/tool.rb
|
65
67
|
- lib/l-tools.rb
|
66
68
|
- lib/tools/nmap.rb
|
67
|
-
- lib/tools/tool.rb
|
68
69
|
- lib/tools/tshark.rb
|
69
70
|
- lib/version.rb
|
70
71
|
homepage: https://github.com/l-codes/l-tools
|