bettercap 1.5.4 → 1.5.5
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/bettercap/context.rb +14 -0
- data/lib/bettercap/firewalls/base.rb +1 -1
- data/lib/bettercap/monkey/packetfu/utils.rb +1 -1
- data/lib/bettercap/network/network.rb +2 -0
- data/lib/bettercap/network/servers/dnsd.rb +6 -1
- data/lib/bettercap/options/core_options.rb +12 -0
- data/lib/bettercap/proxy/http/streamer.rb +12 -4
- data/lib/bettercap/version.rb +1 -1
- metadata +2 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: ebf307012a9f7a95c84810c21db31d0ca657575f
         | 
| 4 | 
            +
              data.tar.gz: 7aa29333600b9ad15821f2f4ad760dbee5dfcd76
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 65328453bb055e8ddcea4073eac6b0c5c51b3d1a26c8fcab29f5d0a6be517516af1f5d9f7b21aad2877051dd37d3556e8bb457c781c82ab84e34060508995238
         | 
| 7 | 
            +
              data.tar.gz: cff87a74985588e872ac886f5bf9e042bf507cbe911208f56f096eb786cf4783c673d352b8d8d9ddbe3777194dbefe263615171de86c9ab55cba0c8be844bdf5
         | 
    
        data/lib/bettercap/context.rb
    CHANGED
    
    | @@ -67,6 +67,7 @@ class Context | |
| 67 67 | 
             
                @firewall     = Firewalls::Base.get
         | 
| 68 68 | 
             
                @memory       = Memory.new
         | 
| 69 69 | 
             
                @iface        = nil
         | 
| 70 | 
            +
                @original_mac = nil
         | 
| 70 71 | 
             
                @gateway      = nil
         | 
| 71 72 | 
             
                @targets      = []
         | 
| 72 73 | 
             
                @spoofer      = nil
         | 
| @@ -85,6 +86,17 @@ class Context | |
| 85 86 | 
             
                                        'correct network configuration, this could also happen if bettercap '\
         | 
| 86 87 | 
             
                                        'is launched from a virtual environment.' unless Network::Validator.is_ip?(gw)
         | 
| 87 88 |  | 
| 89 | 
            +
                unless @options.core.use_mac.nil?
         | 
| 90 | 
            +
                  cfg = PacketFu::Utils.ifconfig @options.core.iface
         | 
| 91 | 
            +
                  raise BetterCap::Error, "Could not determine IPv4 address of '#{@options.core.iface}', make sure this interface "\
         | 
| 92 | 
            +
                                          'is active and connected.' if cfg[:ip4_obj].nil?
         | 
| 93 | 
            +
             | 
| 94 | 
            +
                  @original_mac = Network::Target.normalized_mac(cfg[:eth_saddr])
         | 
| 95 | 
            +
             | 
| 96 | 
            +
                  Logger.info "Changing interface MAC address to #{@options.core.use_mac}"
         | 
| 97 | 
            +
             | 
| 98 | 
            +
                  Shell.ifconfig( "#{@options.core.iface} ether #{@options.core.use_mac}")
         | 
| 99 | 
            +
                end
         | 
| 88 100 |  | 
| 89 101 | 
             
                cfg = PacketFu::Utils.ifconfig @options.core.iface
         | 
| 90 102 | 
             
                raise BetterCap::Error, "Could not determine IPv4 address of '#{@options.core.iface}', make sure this interface "\
         | 
| @@ -183,6 +195,8 @@ class Context | |
| 183 195 |  | 
| 184 196 | 
             
                @dnsd.stop unless @dnsd.nil?
         | 
| 185 197 | 
             
                @httpd.stop unless @httpd.nil?
         | 
| 198 | 
            +
             | 
| 199 | 
            +
                Shell.ifconfig( "#{@options.core.iface} ether #{@original_mac}") unless @original_mac.nil?
         | 
| 186 200 | 
             
              end
         | 
| 187 201 |  | 
| 188 202 | 
             
              private
         | 
| @@ -22,7 +22,7 @@ class Base | |
| 22 22 | 
             
                def get
         | 
| 23 23 | 
             
                  return @@instance unless @@instance.nil?
         | 
| 24 24 |  | 
| 25 | 
            -
                  if RUBY_PLATFORM =~ / | 
| 25 | 
            +
                  if RUBY_PLATFORM =~ /.+bsd/ or RUBY_PLATFORM =~ /darwin/
         | 
| 26 26 | 
             
                    @@instance = Firewalls::BSD.new
         | 
| 27 27 | 
             
                  elsif RUBY_PLATFORM =~ /linux/
         | 
| 28 28 | 
             
                    @@instance = Firewalls::Linux.new
         | 
| @@ -62,7 +62,12 @@ class DNSD | |
| 62 62 |  | 
| 63 63 | 
             
                block = Proc.new do |transaction|
         | 
| 64 64 | 
             
                  Logger.info "[#{transaction.options[:peer]} > #{'DNS'.green}] Received request for '#{transaction.question.to_s.yellow}', sending spoofed reply #{addr.yellow} ..."
         | 
| 65 | 
            -
                   | 
| 65 | 
            +
                  begin
         | 
| 66 | 
            +
                    transaction.respond!(addr)
         | 
| 67 | 
            +
                  rescue Exception => e
         | 
| 68 | 
            +
                    Logger.warn "[#{'DNS'.green}] #{e.message}"
         | 
| 69 | 
            +
                    Logger.exception e
         | 
| 70 | 
            +
                  end
         | 
| 66 71 | 
             
                end
         | 
| 67 72 |  | 
| 68 73 | 
             
                DnsWrapper.get.rules << RubyDNS::RuleBasedServer::Rule.new( [ Regexp.new(exp), Resolv::DNS::Resource::IN::A ], block )
         | 
| @@ -39,6 +39,8 @@ class CoreOptions | |
| 39 39 | 
             
              attr_accessor :packet_throttle
         | 
| 40 40 | 
             
              # If true, bettercap will check for updates then exit.
         | 
| 41 41 | 
             
              attr_accessor :check_updates
         | 
| 42 | 
            +
              # If not nil, the interface MAC address will be changed to this value.
         | 
| 43 | 
            +
              attr_accessor :use_mac
         | 
| 42 44 |  | 
| 43 45 | 
             
              def initialize( iface )
         | 
| 44 46 | 
             
                @iface           = iface
         | 
| @@ -53,6 +55,7 @@ class CoreOptions | |
| 53 55 | 
             
                @no_target_nbns  = false
         | 
| 54 56 | 
             
                @packet_throttle = 0.0
         | 
| 55 57 | 
             
                @check_updates   = false
         | 
| 58 | 
            +
                @use_mac         = nil
         | 
| 56 59 | 
             
              end
         | 
| 57 60 |  | 
| 58 61 | 
             
              def parse!( ctx, opts )
         | 
| @@ -64,6 +67,15 @@ class CoreOptions | |
| 64 67 | 
             
                  @iface = v
         | 
| 65 68 | 
             
                end
         | 
| 66 69 |  | 
| 70 | 
            +
                opts.on( '--use-mac ADDRESS', 'Change the interface MAC address to this value before performing the attack.' ) do |v|
         | 
| 71 | 
            +
                  @use_mac = v
         | 
| 72 | 
            +
                  raise BetterCap::Error, "Invalid MAC address specified." unless Network::Validator.is_mac?(@use_mac)
         | 
| 73 | 
            +
                end
         | 
| 74 | 
            +
             | 
| 75 | 
            +
                opts.on( '--random-mac', 'Change the interface MAC address to a random one before performing the attack.' ) do |v|
         | 
| 76 | 
            +
                  @use_mac = [format('%0.2x', rand(256) & ~1), (1..5).map { format('%0.2x', rand(256)) }].join(':')
         | 
| 77 | 
            +
                end
         | 
| 78 | 
            +
             | 
| 67 79 | 
             
                opts.on( '-G', '--gateway ADDRESS', 'Manually specify the gateway address, if not specified the current gateway will be retrieved and used. ' ) do |v|
         | 
| 68 80 | 
             
                  @gateway = v
         | 
| 69 81 | 
             
                  raise BetterCap::Error, "The specified gateway '#{v}' is not a valid IPv4 address." unless Network::Validator.is_ip?(v)
         | 
| @@ -56,9 +56,13 @@ class Streamer | |
| 56 56 |  | 
| 57 57 | 
             
                  if r.nil?
         | 
| 58 58 | 
             
                    # call modules on_pre_request
         | 
| 59 | 
            -
                    process( request )
         | 
| 60 | 
            -
             | 
| 61 | 
            -
             | 
| 59 | 
            +
                    r = process( request )
         | 
| 60 | 
            +
                    if r.nil?
         | 
| 61 | 
            +
                      self.send( "do_#{request.method}", request, response )
         | 
| 62 | 
            +
                    else
         | 
| 63 | 
            +
                      Logger.info "[#{'PROXY'.green}] Module returned crafted response."
         | 
| 64 | 
            +
                      response = r
         | 
| 65 | 
            +
                    end
         | 
| 62 66 | 
             
                  else
         | 
| 63 67 | 
             
                    response = r
         | 
| 64 68 | 
             
                  end
         | 
| @@ -107,7 +111,10 @@ class Streamer | |
| 107 111 |  | 
| 108 112 | 
             
                    begin
         | 
| 109 113 | 
             
                      if response.nil?
         | 
| 110 | 
            -
                        mod.on_pre_request request
         | 
| 114 | 
            +
                        r = mod.on_pre_request request
         | 
| 115 | 
            +
                        # the handler returned a response, do not execute
         | 
| 116 | 
            +
                        # the request
         | 
| 117 | 
            +
                        response = r unless r.nil?
         | 
| 111 118 | 
             
                      else
         | 
| 112 119 | 
             
                        mod.on_request request, response
         | 
| 113 120 | 
             
                      end
         | 
| @@ -119,6 +126,7 @@ class Streamer | |
| 119 126 | 
             
                    end
         | 
| 120 127 | 
             
                  end
         | 
| 121 128 | 
             
                end
         | 
| 129 | 
            +
                return response
         | 
| 122 130 | 
             
              end
         | 
| 123 131 |  | 
| 124 132 | 
             
              # List of security headers to remove/patch from any response.
         | 
    
        data/lib/bettercap/version.rb
    CHANGED
    
    | @@ -12,7 +12,7 @@ This project is released under the GPL 3 license. | |
| 12 12 | 
             
            =end
         | 
| 13 13 | 
             
            module BetterCap
         | 
| 14 14 | 
             
              # Current version of bettercap.
         | 
| 15 | 
            -
              VERSION = '1.5. | 
| 15 | 
            +
              VERSION = '1.5.5'
         | 
| 16 16 | 
             
              # Program banner.
         | 
| 17 17 | 
             
              BANNER = File.read( File.dirname(__FILE__) + '/banner' ).gsub( '#VERSION#', "v#{VERSION}")
         | 
| 18 18 | 
             
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: bettercap
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 1.5. | 
| 4 | 
            +
              version: 1.5.5
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Simone Margaritelli
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2016- | 
| 11 | 
            +
            date: 2016-05-25 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: colorize
         |