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
         
     |