From 374c6532facce13798896ff518c4c556b7d7f469 Mon Sep 17 00:00:00 2001 From: David Maloney Date: Thu, 31 Jul 2014 18:10:48 -0500 Subject: [PATCH] add to_hash to Credential begining of the chain to DRYing up credential reporting in the loginscanner --- lib/metasploit/framework/credential.rb | 10 +++++++ .../metasploit/framework/credential_spec.rb | 27 ++++++++++++++++--- 2 files changed, 33 insertions(+), 4 deletions(-) diff --git a/lib/metasploit/framework/credential.rb b/lib/metasploit/framework/credential.rb index c78af1baf5..1caa38cc53 100644 --- a/lib/metasploit/framework/credential.rb +++ b/lib/metasploit/framework/credential.rb @@ -90,6 +90,16 @@ module Metasploit self end + def to_hash + { + private_data: private, + private_type: private_type, + username: public, + realm_key: realm_key, + realm_value: realm + } + end + private def at_realm diff --git a/spec/lib/metasploit/framework/credential_spec.rb b/spec/lib/metasploit/framework/credential_spec.rb index 2856966b96..2e45726e36 100644 --- a/spec/lib/metasploit/framework/credential_spec.rb +++ b/spec/lib/metasploit/framework/credential_spec.rb @@ -7,6 +7,12 @@ describe Metasploit::Framework::Credential do described_class.new } + let(:public) { "public" } + let(:private) { "private" } + let(:realm) { "realm" } + let(:realm_type) { Metasploit::Model::Realm::Key::ACTIVE_DIRECTORY_DOMAIN } + let(:private_type) { :password } + it { should respond_to :paired } it { should respond_to :private } it { should respond_to :private_type } @@ -76,10 +82,7 @@ describe Metasploit::Framework::Credential do end - describe ".to_credential" do - let(:public) { "public" } - let(:private) { "private" } - let(:realm) { "realm" } + describe "#to_credential" do subject(:cred_detail) do described_class.new(public: public, private: private, realm: realm) end @@ -139,4 +142,20 @@ describe Metasploit::Framework::Credential do end end end + + describe '#to_hash' do + subject(:cred_detail) do + described_class.new(public: public, private: private, realm: realm, realm_key: realm_type, private_type: private_type) + end + it 'returns a hash in the format expect for create_credential' do + cred_hash = { + private_data: private, + private_type: private_type, + username: public, + realm_key: realm_type, + realm_value: realm + } + expect(cred_detail.to_hash).to eq cred_hash + end + end end