bettercap 1.3.5 → 1.3.6

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.
Files changed (40) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +9 -10
  3. data/lib/bettercap.rb +28 -3
  4. data/lib/bettercap/context.rb +2 -2
  5. data/lib/bettercap/discovery/agents/icmp.rb +1 -1
  6. data/lib/bettercap/firewalls/base.rb +25 -0
  7. data/lib/bettercap/monkey/packetfu/utils.rb +70 -10
  8. data/lib/bettercap/network/network.rb +11 -3
  9. data/lib/bettercap/network/packet_queue.rb +1 -1
  10. data/lib/bettercap/network/protos/base.rb +97 -0
  11. data/lib/bettercap/network/protos/dhcp.rb +350 -0
  12. data/lib/bettercap/options.rb +4 -4
  13. data/lib/bettercap/proxy/stream_logger.rb +7 -3
  14. data/lib/bettercap/shell.rb +23 -1
  15. data/lib/bettercap/sniffer/parsers/base.rb +52 -0
  16. data/lib/bettercap/sniffer/parsers/cookie.rb +45 -0
  17. data/lib/bettercap/sniffer/parsers/custom.rb +0 -1
  18. data/lib/bettercap/sniffer/parsers/dhcp.rb +48 -0
  19. data/lib/bettercap/sniffer/parsers/dict.rb +0 -1
  20. data/lib/bettercap/sniffer/parsers/ftp.rb +0 -1
  21. data/lib/bettercap/sniffer/parsers/httpauth.rb +0 -2
  22. data/lib/bettercap/sniffer/parsers/https.rb +0 -2
  23. data/lib/bettercap/sniffer/parsers/irc.rb +0 -1
  24. data/lib/bettercap/sniffer/parsers/mail.rb +0 -1
  25. data/lib/bettercap/sniffer/parsers/mpd.rb +0 -1
  26. data/lib/bettercap/sniffer/parsers/nntp.rb +0 -1
  27. data/lib/bettercap/sniffer/parsers/ntlmss.rb +0 -2
  28. data/lib/bettercap/sniffer/parsers/post.rb +5 -3
  29. data/lib/bettercap/sniffer/parsers/redis.rb +0 -1
  30. data/lib/bettercap/sniffer/parsers/rlogin.rb +0 -1
  31. data/lib/bettercap/sniffer/parsers/snpp.rb +0 -1
  32. data/lib/bettercap/sniffer/parsers/url.rb +0 -2
  33. data/lib/bettercap/sniffer/parsers/whatsapp.rb +33 -0
  34. data/lib/bettercap/sniffer/sniffer.rb +6 -6
  35. data/lib/bettercap/spoofers/base.rb +23 -0
  36. data/lib/bettercap/version.rb +1 -1
  37. metadata +7 -5
  38. data/lib/bettercap/factories/firewall.rb +0 -43
  39. data/lib/bettercap/factories/parser.rb +0 -74
  40. data/lib/bettercap/factories/spoofer.rb +0 -53
@@ -14,6 +14,29 @@ module BetterCap
14
14
  module Spoofers
15
15
  # Base class for BetterCap::Spoofers modules.
16
16
  class Base
17
+ # Hash of available spoofers ( spoofer name -> class name )
18
+ @@loaded = {}
19
+
20
+ class << self
21
+ # Called when this base class is inherited from one of the spoofers.
22
+ def inherited(subclass)
23
+ name = subclass.name.split('::')[2].upcase
24
+ @@loaded[name] = subclass.name
25
+ end
26
+
27
+ # Return a list of available spoofers names.
28
+ def available
29
+ @@loaded.keys
30
+ end
31
+
32
+ # Create an instance of a BetterCap::Spoofers object given its +name+.
33
+ # Will raise a BetterCap::Error if +name+ is not valid.
34
+ def get_by_name(name)
35
+ raise BetterCap::Error, "Invalid spoofer name '#{name}'!" unless available.include? name
36
+ BetterCap::Loader.load(@@loaded[name]).new
37
+ end
38
+ end
39
+
17
40
  # Will raise NotImplementedError .
18
41
  def initialize
19
42
  not_implemented_method!
@@ -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.3.5'
15
+ VERSION = '1.3.6'
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.3.5
4
+ version: 1.3.6
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-01-31 00:00:00.000000000 Z
11
+ date: 2016-02-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: colorize
@@ -128,9 +128,6 @@ files:
128
128
  - lib/bettercap/discovery/agents/udp.rb
129
129
  - lib/bettercap/discovery/thread.rb
130
130
  - lib/bettercap/error.rb
131
- - lib/bettercap/factories/firewall.rb
132
- - lib/bettercap/factories/parser.rb
133
- - lib/bettercap/factories/spoofer.rb
134
131
  - lib/bettercap/firewalls/base.rb
135
132
  - lib/bettercap/firewalls/linux.rb
136
133
  - lib/bettercap/firewalls/osx.rb
@@ -142,6 +139,8 @@ files:
142
139
  - lib/bettercap/network/hw-prefixes
143
140
  - lib/bettercap/network/network.rb
144
141
  - lib/bettercap/network/packet_queue.rb
142
+ - lib/bettercap/network/protos/base.rb
143
+ - lib/bettercap/network/protos/dhcp.rb
145
144
  - lib/bettercap/network/servers/dnsd.rb
146
145
  - lib/bettercap/network/servers/httpd.rb
147
146
  - lib/bettercap/network/target.rb
@@ -163,7 +162,9 @@ files:
163
162
  - lib/bettercap/proxy/thread_pool.rb
164
163
  - lib/bettercap/shell.rb
165
164
  - lib/bettercap/sniffer/parsers/base.rb
165
+ - lib/bettercap/sniffer/parsers/cookie.rb
166
166
  - lib/bettercap/sniffer/parsers/custom.rb
167
+ - lib/bettercap/sniffer/parsers/dhcp.rb
167
168
  - lib/bettercap/sniffer/parsers/dict.rb
168
169
  - lib/bettercap/sniffer/parsers/ftp.rb
169
170
  - lib/bettercap/sniffer/parsers/httpauth.rb
@@ -178,6 +179,7 @@ files:
178
179
  - lib/bettercap/sniffer/parsers/rlogin.rb
179
180
  - lib/bettercap/sniffer/parsers/snpp.rb
180
181
  - lib/bettercap/sniffer/parsers/url.rb
182
+ - lib/bettercap/sniffer/parsers/whatsapp.rb
181
183
  - lib/bettercap/sniffer/sniffer.rb
182
184
  - lib/bettercap/spoofers/arp.rb
183
185
  - lib/bettercap/spoofers/base.rb
@@ -1,43 +0,0 @@
1
- # encoding: UTF-8
2
- =begin
3
-
4
- BETTERCAP
5
-
6
- Author : Simone 'evilsocket' Margaritelli
7
- Email : evilsocket@gmail.com
8
- Blog : http://www.evilsocket.net/
9
-
10
- This project is released under the GPL 3 license.
11
-
12
- =end
13
- require 'bettercap/error'
14
- require 'bettercap/firewalls/osx'
15
- require 'bettercap/firewalls/linux'
16
-
17
- module BetterCap
18
- module Factories
19
- # Factory class responsible of creating the correct object for the current
20
- # operating system of the user.
21
- class Firewall
22
- @@instance = nil
23
- # Save and return an instance of the appropriate BetterCap::Firewalls object.
24
- def self.get
25
- return @@instance unless @@instance.nil?
26
-
27
- if RUBY_PLATFORM =~ /darwin/
28
- @@instance = Firewalls::OSX.new
29
- elsif RUBY_PLATFORM =~ /linux/
30
- @@instance = Firewalls::Linux.new
31
- else
32
- raise BetterCap::Error, 'Unsupported operating system'
33
- end
34
-
35
- @@instance
36
- end
37
- # Clear the instance of the BetterCap::Firewalls object.
38
- def self.clear
39
- @@instance = nil
40
- end
41
- end
42
- end
43
- end
@@ -1,74 +0,0 @@
1
- # encoding: UTF-8
2
- =begin
3
-
4
- BETTERCAP
5
-
6
- Author : Simone 'evilsocket' Margaritelli
7
- Email : evilsocket@gmail.com
8
- Blog : http://www.evilsocket.net/
9
-
10
- This project is released under the GPL 3 license.
11
-
12
- =end
13
-
14
- require 'bettercap/error'
15
- require 'bettercap/logger'
16
-
17
- module BetterCap
18
- module Factories
19
- # Factory class responsible for listing, parsing and creating BetterCap::Parsers
20
- # object instances.
21
- class Parser
22
- @@path = File.dirname(__FILE__) + '/../sniffer/parsers/'
23
-
24
- class << self
25
- # Return a list of available parsers.
26
- def available
27
- avail = []
28
- Dir.foreach( @@path ) do |file|
29
- if file =~ /.rb/ and file != 'base.rb' and file != 'custom.rb'
30
- avail << file.gsub('.rb','').upcase
31
- end
32
- end
33
- avail
34
- end
35
-
36
- # Parse the +v+ command line argument and return a list of parser names.
37
- # Will raise BetterCap::Error if one or more parser names are not valid.
38
- def from_cmdline(v)
39
- raise BetterCap::Error, "No parser names provided" if v.nil?
40
-
41
- avail = available
42
- list = v.split(',').collect(&:strip).collect(&:upcase).reject{ |c| c.empty? }
43
- list.each do |parser|
44
- raise BetterCap::Error, "Invalid parser name '#{parser}'." unless avail.include?(parser) or parser == '*'
45
- end
46
- list
47
- end
48
-
49
- # Return a list of BetterCap::Parsers instances by their +parsers+ names.
50
- def load_by_names(parsers)
51
- loaded = []
52
- Dir.foreach( @@path ) do |file|
53
- cname = file.gsub('.rb','').upcase
54
- if file =~ /.rb/ and file != 'base.rb' and file != 'custom.rb' and ( parsers.include?(cname) or parsers == ['*'] )
55
- Logger.debug "Loading parser #{cname} ..."
56
-
57
- require_relative "#{@@path}#{file}"
58
-
59
- loaded << BetterCap::Loader.load("BetterCap::Parsers::#{cname.capitalize}").new
60
- end
61
- end
62
- loaded
63
- end
64
-
65
- # Load and return an instance of the BetterCap::Parsers::Custom parser
66
- # given the +expression+ Regex object.
67
- def load_custom(expression)
68
- require_relative "#{@@path}custom.rb"
69
- [ BetterCap::Parsers::Custom.new(expression) ]
70
- end
71
- end
72
- end
73
- end
74
- end
@@ -1,53 +0,0 @@
1
- # encoding: UTF-8
2
- =begin
3
-
4
- BETTERCAP
5
-
6
- Author : Simone 'evilsocket' Margaritelli
7
- Email : evilsocket@gmail.com
8
- Blog : http://www.evilsocket.net/
9
-
10
- This project is released under the GPL 3 license.
11
-
12
- =end
13
- require 'bettercap/error'
14
-
15
- module BetterCap
16
- module Factories
17
- # Factory class responsible for listing, parsing and creating BetterCap::Spoofers
18
- # object instances.
19
- class Spoofer
20
- class << self
21
- # Return a list of available spoofers.
22
- def available
23
- avail = []
24
- Dir.foreach( File.dirname(__FILE__) + '/../spoofers/') do |file|
25
- if file =~ /.rb/ and file != 'base.rb'
26
- avail << file.gsub('.rb','').upcase
27
- end
28
- end
29
- avail
30
- end
31
-
32
- # Create an instance of a BetterCap::Spoofers object given its +name+.
33
- # Will raise a BetterCap::Error if +name+ is not valid.
34
- def get_by_name(name)
35
- raise BetterCap::Error, "Invalid spoofer name '#{name}'!" unless available? name
36
-
37
- name.downcase!
38
-
39
- require_relative "../spoofers/#{name}"
40
-
41
- BetterCap::Loader.load("BetterCap::Spoofers::#{name.capitalize}").new
42
- end
43
-
44
- private
45
-
46
- # Return true if +name+ is a valid spoofer name, otherwise false.
47
- def available?(name)
48
- available.include?(name)
49
- end
50
- end
51
- end
52
- end
53
- end