From 1c4258fd1e4acd6da66407f467b178cf52a5cbdb Mon Sep 17 00:00:00 2001 From: Dean Welch Date: Tue, 16 Jan 2024 13:31:51 +0000 Subject: [PATCH] Fix encoded payloads test --- lib/msf/core/encoded_payload.rb | 2 +- spec/lib/msf/core/encoded_payload_spec.rb | 5 +++++ spec/lib/msf/core/module_set_spec.rb | 2 +- test/modules/post/test/all.rb | 2 +- tools/modules/module_ports.rb | 2 +- 5 files changed, 9 insertions(+), 4 deletions(-) diff --git a/lib/msf/core/encoded_payload.rb b/lib/msf/core/encoded_payload.rb index 9e473f9d90..95a650de90 100644 --- a/lib/msf/core/encoded_payload.rb +++ b/lib/msf/core/encoded_payload.rb @@ -237,7 +237,7 @@ class EncodedPayload begin eout = self.encoder.encode(eout, reqs['BadChars'], nil, pinst.platform) - rescue EncodingError + rescue EncodingError => e wlog("#{err_start}: Encoder #{encoder.refname} failed: #{$!}", 'core', LEV_1) dlog("#{err_start}: Call stack\n#{$@.join("\n")}", 'core', LEV_3) next_encoder = true diff --git a/spec/lib/msf/core/encoded_payload_spec.rb b/spec/lib/msf/core/encoded_payload_spec.rb index a0ee4886ff..88f9dcb823 100644 --- a/spec/lib/msf/core/encoded_payload_spec.rb +++ b/spec/lib/msf/core/encoded_payload_spec.rb @@ -17,6 +17,11 @@ RSpec.describe Msf::EncodedPayload do module_type: 'encoder', modules_path: modules_path, ) + allow(framework.encoders).to receive(:each_module_ranked) + .and_yield('x86/shikata_ga_nai', framework.encoders['x86/shikata_ga_nai']) + .and_yield('x86/xor_dynamic', framework.encoders['x86/xor_dynamic']) + .and_yield('x86/call4_dword_xor', framework.encoders['x86/call4_dword_xor']) + .and_yield('generic/none', framework.encoders['generic/none']) end let(:ancestor_reference_names) { diff --git a/spec/lib/msf/core/module_set_spec.rb b/spec/lib/msf/core/module_set_spec.rb index 5d9980ec87..1e339c0461 100644 --- a/spec/lib/msf/core/module_set_spec.rb +++ b/spec/lib/msf/core/module_set_spec.rb @@ -250,7 +250,7 @@ RSpec.describe Msf::ModuleSet do end end - describe 'create' do + describe '#create' do let(:module_refname) { 'module_refname' } let(:framework) { instance_double(Msf::Framework) } let(:module_manager) { instance_double(Msf::ModuleManager) } diff --git a/test/modules/post/test/all.rb b/test/modules/post/test/all.rb index 13172be517..01c395a8ab 100644 --- a/test/modules/post/test/all.rb +++ b/test/modules/post/test/all.rb @@ -40,7 +40,7 @@ class MetasploitModule < Msf::Post session_type = session.type module_results = [] - framework.modules.post.module_refnames.each do | refname | + framework.modules.post.module_refnames.each do |refname| next unless refname.start_with?('test/') && refname != self.refname mod = framework.modules.create(refname) diff --git a/tools/modules/module_ports.rb b/tools/modules/module_ports.rb index bb249c0d41..3524425663 100755 --- a/tools/modules/module_ports.rb +++ b/tools/modules/module_ports.rb @@ -23,7 +23,7 @@ require 'rex' # Initialize the simplified framework instance. $framework = Msf::Simple::Framework.create('DisableDatabase' => true) -# TODO: this is weird, merging module sets together for different module types could lead to unforseen issues +# XXX: this is weird, merging module sets together for different module types could lead to unforseen issues all_modules = $framework.exploits.merge($framework.auxiliary) all_ports = {}