From 537d0b04189f69a911ba3607a12491a2cc2a7b7b Mon Sep 17 00:00:00 2001 From: Matt Miller Date: Fri, 30 Dec 2005 04:57:52 +0000 Subject: [PATCH] execution time encoder testing git-svn-id: file:///home/svn/incoming/trunk@3270 4d416f70-5f16-0410-b530-b9f4589650da --- modules/encoders/encoder_test.rb.ut.rb | 39 ++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 modules/encoders/encoder_test.rb.ut.rb diff --git a/modules/encoders/encoder_test.rb.ut.rb b/modules/encoders/encoder_test.rb.ut.rb new file mode 100644 index 0000000000..dc72b8d5af --- /dev/null +++ b/modules/encoders/encoder_test.rb.ut.rb @@ -0,0 +1,39 @@ +#!/usr/bin/env ruby +# +# This file tests all x86 encoders to ensure that they execute correctly. +# + +$:.unshift(File.join(File.dirname(__FILE__), '..', '..', 'lib')) +$:.unshift(File.join(File.dirname(__FILE__), '..', '..', 'dev', 'machinetest')) + +require 'rex' +require 'msf/core' +require 'msf/base' +require 'machinetest' + +$framework = Msf::Simple::Framework.create + +$framework.encoders.each_module { |name, mod| + e = mod.new + h = {} + failed = 0 + passed = 0 + + next if (e.arch?(ARCH_X86) == false) + + 1000.times { + + if (MachineTest.testraw(buf = e.encode("\xcc"))) + failed += 1 + $stderr.puts("#{name.ljust(25)}: failure: #{Rex::Text.to_hex(buf)}") + else + passed += 1 + end + + h[buf] = true + + } + + $stderr.puts("#{name.ljust(25)}: Passed: #{passed}, Failed: #{failed}, Unique: #{h.keys.length}") + +}