From 5c406a2aa5d65866c9f59dbc4089f90f15544e2a Mon Sep 17 00:00:00 2001 From: James Lee Date: Mon, 7 Jul 2014 12:33:15 -0500 Subject: [PATCH 1/2] Remove successes and failures No reason to store them and they could fill a ton of unnecessary memory. --- lib/metasploit/framework/login_scanner/base.rb | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/lib/metasploit/framework/login_scanner/base.rb b/lib/metasploit/framework/login_scanner/base.rb index 9d1003020c..bba193fe25 100644 --- a/lib/metasploit/framework/login_scanner/base.rb +++ b/lib/metasploit/framework/login_scanner/base.rb @@ -18,9 +18,6 @@ module Metasploit # @!attribute cred_details # @return [CredentialCollection] Collection of Credential objects attr_accessor :cred_details - # @!attribute failures - # @return [Array] Array of failing {Result results} - attr_accessor :failures # @!attribute host # @return [String] The IP address or hostname to connect to attr_accessor :host @@ -33,9 +30,6 @@ module Metasploit # @!attribute stop_on_success # @return [Boolean] Whether the scanner should stop when it has found one working Credential attr_accessor :stop_on_success - # @!attribute successes - # @return [Array] Array of successful {Result results} - attr_accessor :successes validates :connection_timeout, presence: true, @@ -68,8 +62,6 @@ module Metasploit attributes.each do |attribute, value| public_send("#{attribute}=", value) end - self.successes = [] - self.failures = [] set_sane_defaults end @@ -88,8 +80,6 @@ module Metasploit # Attempt to login with every {Credential credential} in # {#cred_details}, by calling {#attempt_login} once for each. # - # All {Result results} are stored in {#successes} and {#failures}. - # # @yieldparam result [Result] The {Result} object for each attempt # @yieldreturn [void] # @return [void] @@ -109,11 +99,9 @@ module Metasploit yield result if block_given? if result.success? - successes << result consecutive_error_count = 0 break if stop_on_success else - failures << result if result.status == :connection_error consecutive_error_count += 1 total_error_count += 1 From cff2e1a1c1241b4d2d2401ac3b2424c1a1f8908b Mon Sep 17 00:00:00 2001 From: James Lee Date: Mon, 7 Jul 2014 12:37:14 -0500 Subject: [PATCH 2/2] And remove specs referencing obsolete accessors --- .../login_scanner/login_scanner_base.rb | 32 ------------------- 1 file changed, 32 deletions(-) diff --git a/spec/support/shared/examples/metasploit/framework/login_scanner/login_scanner_base.rb b/spec/support/shared/examples/metasploit/framework/login_scanner/login_scanner_base.rb index ad1c6f8333..48c2d05b71 100644 --- a/spec/support/shared/examples/metasploit/framework/login_scanner/login_scanner_base.rb +++ b/spec/support/shared/examples/metasploit/framework/login_scanner/login_scanner_base.rb @@ -44,12 +44,10 @@ shared_examples_for 'Metasploit::Framework::LoginScanner::Base' do it { should respond_to :connection_timeout } it { should respond_to :cred_details } - it { should respond_to :failures } it { should respond_to :host } it { should respond_to :port } it { should respond_to :proxies } it { should respond_to :stop_on_success } - it { should respond_to :successes } context 'validations' do context 'port' do @@ -238,14 +236,6 @@ shared_examples_for 'Metasploit::Framework::LoginScanner::Base' do ) } - let(:failure) { - ::Metasploit::Framework::LoginScanner::Result.new( - credential: pub_pri, - proof: nil, - status: :failed - ) - } - before(:each) do login_scanner.host = '127.0.0.1' login_scanner.port = 22 @@ -270,27 +260,6 @@ shared_examples_for 'Metasploit::Framework::LoginScanner::Base' do my_scanner.scan! end - it 'adds the failed results to the failures attribute' do - my_scanner = login_scanner - my_scanner.should_receive(:valid!) - my_scanner.should_receive(:attempt_login).once.with(pub_blank).and_return failure_blank - my_scanner.should_receive(:attempt_login).once.with(pub_pub).and_return success - my_scanner.should_receive(:attempt_login).once.with(pub_pri).and_return failure - my_scanner.scan! - expect(my_scanner.failures).to include failure_blank - expect(my_scanner.failures).to include failure - end - - it 'adds the success results to the successes attribute' do - my_scanner = login_scanner - my_scanner.should_receive(:valid!) - my_scanner.should_receive(:attempt_login).once.with(pub_blank).and_return failure_blank - my_scanner.should_receive(:attempt_login).once.with(pub_pub).and_return success - my_scanner.should_receive(:attempt_login).once.with(pub_pri).and_return failure - my_scanner.scan! - expect(my_scanner.successes).to include success - end - context 'when stop_on_success is true' do before(:each) do login_scanner.host = '127.0.0.1' @@ -307,7 +276,6 @@ shared_examples_for 'Metasploit::Framework::LoginScanner::Base' do my_scanner.should_receive(:attempt_login).once.with(pub_pub).and_return success my_scanner.should_not_receive(:attempt_login).with(pub_pri) my_scanner.scan! - expect(my_scanner.failures).to_not include failure end end