bettercap 1.1.9 → 1.1.10

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 (69) hide show
  1. checksums.yaml +4 -4
  2. data/CONTRIBUTING.md +2 -2
  3. data/TODO.md +5 -2
  4. data/bin/bettercap +19 -11
  5. data/lib/bettercap.rb +5 -1
  6. data/lib/bettercap/base/ifirewall.rb +2 -0
  7. data/lib/bettercap/base/ispoofer.rb +2 -0
  8. data/lib/bettercap/context.rb +5 -2
  9. data/lib/bettercap/discovery/{arp.rb → agents/arp.rb} +15 -14
  10. data/lib/bettercap/discovery/{base.rb → agents/base.rb} +4 -4
  11. data/lib/bettercap/discovery/{icmp.rb → agents/icmp.rb} +2 -3
  12. data/lib/bettercap/discovery/{udp.rb → agents/udp.rb} +2 -2
  13. data/lib/bettercap/{discovery.rb → discovery/discovery.rb} +8 -1
  14. data/lib/bettercap/factories/firewall_factory.rb +2 -0
  15. data/lib/bettercap/factories/parser_factory.rb +11 -5
  16. data/lib/bettercap/factories/spoofer_factory.rb +3 -1
  17. data/lib/bettercap/firewalls/linux.rb +2 -0
  18. data/lib/bettercap/firewalls/osx.rb +2 -0
  19. data/lib/bettercap/firewalls/redirection.rb +2 -1
  20. data/lib/bettercap/httpd/server.rb +2 -3
  21. data/lib/bettercap/logger.rb +27 -10
  22. data/lib/bettercap/monkey/packetfu/utils.rb +5 -5
  23. data/lib/bettercap/network.rb +26 -16
  24. data/lib/bettercap/options.rb +27 -6
  25. data/lib/bettercap/proxy/certstore.rb +4 -3
  26. data/lib/bettercap/proxy/module.rb +2 -2
  27. data/lib/bettercap/proxy/proxy.rb +5 -5
  28. data/lib/bettercap/proxy/request.rb +2 -2
  29. data/lib/bettercap/proxy/response.rb +2 -0
  30. data/lib/bettercap/proxy/stream_logger.rb +15 -3
  31. data/lib/bettercap/proxy/streamer.rb +3 -1
  32. data/lib/bettercap/proxy/thread_pool.rb +4 -2
  33. data/lib/bettercap/shell.rb +2 -0
  34. data/lib/bettercap/sniffer/parsers/base.rb +3 -12
  35. data/lib/bettercap/sniffer/parsers/custom.rb +21 -0
  36. data/lib/bettercap/sniffer/parsers/ftp.rb +2 -0
  37. data/lib/bettercap/sniffer/parsers/httpauth.rb +4 -5
  38. data/lib/bettercap/sniffer/parsers/https.rb +3 -4
  39. data/lib/bettercap/sniffer/parsers/irc.rb +2 -0
  40. data/lib/bettercap/sniffer/parsers/mail.rb +2 -0
  41. data/lib/bettercap/sniffer/parsers/ntlmss.rb +3 -3
  42. data/lib/bettercap/sniffer/parsers/post.rb +7 -7
  43. data/lib/bettercap/sniffer/parsers/url.rb +11 -11
  44. data/lib/bettercap/sniffer/sniffer.rb +8 -2
  45. data/lib/bettercap/spoofers/arp.rb +15 -5
  46. data/lib/bettercap/spoofers/none.rb +2 -0
  47. data/lib/bettercap/target.rb +29 -10
  48. data/lib/bettercap/update_checker.rb +2 -0
  49. data/lib/bettercap/version.rb +1 -1
  50. metadata +8 -40
  51. data/Rakefile +0 -7
  52. data/test/factories/firewall_factory_test.rb +0 -54
  53. data/test/factories/parser_factory_test.rb +0 -36
  54. data/test/factories/spoofer_factory_test.rb +0 -15
  55. data/test/firewalls/linux_firewall_test.rb +0 -72
  56. data/test/firewalls/osx_firewall_test.rb +0 -72
  57. data/test/helpers/mock_shell.rb +0 -17
  58. data/test/logger_test.rb +0 -12
  59. data/test/network_test.rb +0 -14
  60. data/test/pcap/ftp.pcap +0 -0
  61. data/test/pcap/http.pcap +0 -0
  62. data/test/pcap/packets.pcap +0 -0
  63. data/test/proxy/response_test.rb +0 -56
  64. data/test/shell_test.rb +0 -15
  65. data/test/sniffer/parsers/base_parser_test.rb +0 -20
  66. data/test/sniffer/parsers/ftp_parser_test.rb +0 -27
  67. data/test/sniffer/parsers/url_parser_test.rb +0 -25
  68. data/test/target_test.rb +0 -24
  69. data/test/test_helper.rb +0 -47
@@ -1,15 +0,0 @@
1
- require 'minitest/autorun'
2
- require 'shell'
3
-
4
- class ShellTest < MiniTest::Test
5
- def test_successful_command_execution
6
- result = Shell.execute "echo 'BetterCap is awesome!'"
7
- assert_equal result, "BetterCap is awesome!\n"
8
- end
9
-
10
- def test_failed_command_execution
11
- assert_raises BetterCap::Error do
12
- Shell.execute 'false'
13
- end
14
- end
15
- end
@@ -1,20 +0,0 @@
1
- require 'minitest/autorun'
2
- require 'test_helper'
3
- require 'sniffer/parsers/ftp'
4
- require 'packetfu'
5
-
6
- class BaseParserTest < MiniTest::Test
7
- def setup
8
- @packets = parsed_packets
9
- @parser = BaseParser.new
10
- end
11
-
12
- # The base parser has no parsers by default, so it shouldn't be writing
13
- # anything to STDOUT.
14
- def test_parsing_packets
15
- silence do |output|
16
- @parser.on_packet @packets.first
17
- assert output.length == 0
18
- end
19
- end
20
- end
@@ -1,27 +0,0 @@
1
- require 'minitest/autorun'
2
- require 'test_helper'
3
- require 'packetfu'
4
- require 'sniffer/parsers/ftp'
5
-
6
- class FtpParserTest < MiniTest::Test
7
- def setup
8
- # The pcap file for the FTP tests was taken from the Practical Packet
9
- # Analysis GitHub repo: https://github.com/markofu/pcaps
10
- @packets = ftp_packets
11
- @parser = FtpParser.new
12
- end
13
-
14
- def test_parsing_ftp_packets_with_no_user_data
15
- silence do |output|
16
- @parser.on_packet @packets[0]
17
- assert output.length == 0
18
- end
19
- end
20
-
21
- def test_parsing_ftp_packets_with_user_data
22
- silence do |output|
23
- @parser.on_packet @packets[4]
24
- refute output.length == 0
25
- end
26
- end
27
- end
@@ -1,25 +0,0 @@
1
- require 'minitest/autorun'
2
- require 'test_helper'
3
- require 'packetfu'
4
- require 'sniffer/parsers/url'
5
-
6
- class UrlParserTest < MiniTest::Test
7
- def setup
8
- @packets = http_packets
9
- @parser = UrlParser.new
10
- end
11
-
12
- def test_parsing_http_packets
13
- silence do |output|
14
- @parser.on_packet @packets[3]
15
- refute output.length == 0
16
- end
17
- end
18
-
19
- def test_parsing_http_packets_without_any_urls
20
- silence do |output|
21
- @parser.on_packet @packets[0]
22
- assert output.length == 0
23
- end
24
- end
25
- end
@@ -1,24 +0,0 @@
1
- require 'minitest/autorun'
2
- require 'target'
3
-
4
- class TestTarget < MiniTest::Test
5
- def setup
6
- @target = Target.new('127.0.0.1', '08:00:20')
7
- end
8
-
9
- def test_initialization
10
- assert_equal @target.ip, '127.0.0.1'
11
- assert_equal @target.mac, '08:00:20'
12
- assert_equal @target.vendor, 'Oracle'
13
- end
14
-
15
- def test_setting_mac
16
- @target.mac = '7F:D0:BD:8B:60:DA'
17
- assert_equal @target.mac, '7F:D0:BD:8B:60:DA'
18
- end
19
-
20
- def test_string_coercion
21
- @target.mac = '08:00:20'
22
- assert_equal @target.to_s, '127.0.0.1 : 08:00:20 ( Oracle )'
23
- end
24
- end
@@ -1,47 +0,0 @@
1
- require 'helpers/mock_shell'
2
- require 'securerandom'
3
-
4
- # Override the `shell` private method of the firewall to return the mock
5
- # shell. The mock shell's purpose is to capture any system calls made and
6
- # verify that they were received.
7
- def stubbed_firewall(target)
8
- Class.new(target) do
9
- define_method(:shell) do
10
- MockShell
11
- end
12
- end
13
- end
14
-
15
- # Allow for a way to silence calls during test runs.
16
- #
17
- # This redirects STDOUT to /dev/null for any methods
18
- # called inside the block of this method.
19
- def silence(output_file_name = SecureRandom.hex)
20
- captured_output = Tempfile.new output_file_name
21
- Logger.logfile = captured_output
22
-
23
- $stdout = File.new('/dev/null', 'w')
24
- yield captured_output
25
- ensure
26
- $stdout = STDOUT
27
- end
28
-
29
- # Methods for getting PacketFu::Packet objects out of pcap files.
30
-
31
- def parsed_packets
32
- packets_with_filename 'packets'
33
- end
34
-
35
- def ftp_packets
36
- packets_with_filename 'ftp'
37
- end
38
-
39
- def http_packets
40
- packets_with_filename 'http'
41
- end
42
-
43
- private
44
-
45
- def packets_with_filename(filename)
46
- PacketFu::PcapFile.read_packets(File.join(File.dirname(__FILE__),"pcap/#{filename}.pcap"))
47
- end