From 27283183587f180c3794f86782d9166ba17b8383 Mon Sep 17 00:00:00 2001 From: jvazquez-r7 Date: Mon, 15 Sep 2014 15:26:13 -0500 Subject: [PATCH 01/11] Add specs for Rex::Encoder::Alpha2::Generic --- spec/lib/rex/encoder/alpha2/generic_spec.rb | 104 ++++++++++++++++++++ 1 file changed, 104 insertions(+) create mode 100644 spec/lib/rex/encoder/alpha2/generic_spec.rb diff --git a/spec/lib/rex/encoder/alpha2/generic_spec.rb b/spec/lib/rex/encoder/alpha2/generic_spec.rb new file mode 100644 index 0000000000..496027affc --- /dev/null +++ b/spec/lib/rex/encoder/alpha2/generic_spec.rb @@ -0,0 +1,104 @@ +# -*- coding:binary -*- +require 'spec_helper' + +require 'rex/encoder/alpha2/generic' + +describe Rex::Encoder::Alpha2::Generic do + + describe ".default_accepted_chars" do + subject { described_class.default_accepted_chars } + + it { is_expected.to eq(('a' .. 'z').to_a + ('B' .. 'Z').to_a + ('0' .. '9').to_a) } + end + + describe ".gen_decoder_prefix" do + subject { described_class.gen_decoder_prefix(reg, offset) } + let(:reg) { 'ECX' } + let(:offset) { 0 } + + it { is_expected.to eq('') } + end + + describe ".gen_decoder" do + subject { described_class.gen_decoder(reg, offset) } + let(:reg) { 'ECX' } + let(:offset) { 0 } + + it { is_expected.to eq('') } + end + + describe ".gen_second" do + subject { described_class.gen_second(block, base) } + let(:block) { 0xaf } + let(:base) { 0xfa } + + it "returns block ^ base" do + expect(subject ^ base).to eq(block) + end + end + + describe ".encode_byte" do + subject { described_class.encode_byte(block, badchars) } + + context "when too many badchars" do + let(:block) { 0x41 } + let(:badchars) { (0x00..0xff).to_a.pack("C*") } + + it "raises an error" do + expect { subject }.to raise_error(RuntimeError) + end + end + + context "when encoding is possible" do + let(:block) { 0x41 } + let(:badchars) { 'B' } + + it "returns two-bytes encoding" do + expect(subject.length).to eq(2) + end + + it "returns encoding without badchars" do + badchars.each_char do |b| + is_expected.to_not include(badchars) + end + end + end + + end + + describe ".encode" do + subject { described_class.encode(buf, reg, offset, badchars) } + let(:buf) { 'ABCD' } + let(:reg) { 'ECX' } + let(:offset) { 0 } + + context "when too many badchars" do + let(:badchars) { (0x00..0xff).to_a.pack("C*") } + + it "raises an error" do + expect { subject }.to raise_error(RuntimeError) + end + end + + context "when encoding is possible" do + let(:badchars) { 'B' } + + it "returns encoding without badchars" do + badchars.each_char do |b| + is_expected.to_not include(b) + end + end + + it "returns encoding ending with terminator" do + is_expected.to end_with(described_class.add_terminator) + end + end + end + + describe ".add_terminator" do + subject { described_class.add_terminator } + + it { is_expected.to eq('AA') } + end + +end From 4064fb60ef26a3687bb5bbec9411c1f42d356294 Mon Sep 17 00:00:00 2001 From: jvazquez-r7 Date: Mon, 15 Sep 2014 15:43:31 -0500 Subject: [PATCH 02/11] Refactor specs for Rex::Encoder::Alpha2::Generic --- spec/lib/rex/encoder/alpha2/generic_spec.rb | 64 ------------------ .../examples/rex/encoder/alpha2/generic.rb | 67 +++++++++++++++++++ 2 files changed, 67 insertions(+), 64 deletions(-) create mode 100644 spec/support/shared/examples/rex/encoder/alpha2/generic.rb diff --git a/spec/lib/rex/encoder/alpha2/generic_spec.rb b/spec/lib/rex/encoder/alpha2/generic_spec.rb index 496027affc..342e6f7621 100644 --- a/spec/lib/rex/encoder/alpha2/generic_spec.rb +++ b/spec/lib/rex/encoder/alpha2/generic_spec.rb @@ -37,68 +37,4 @@ describe Rex::Encoder::Alpha2::Generic do end end - describe ".encode_byte" do - subject { described_class.encode_byte(block, badchars) } - - context "when too many badchars" do - let(:block) { 0x41 } - let(:badchars) { (0x00..0xff).to_a.pack("C*") } - - it "raises an error" do - expect { subject }.to raise_error(RuntimeError) - end - end - - context "when encoding is possible" do - let(:block) { 0x41 } - let(:badchars) { 'B' } - - it "returns two-bytes encoding" do - expect(subject.length).to eq(2) - end - - it "returns encoding without badchars" do - badchars.each_char do |b| - is_expected.to_not include(badchars) - end - end - end - - end - - describe ".encode" do - subject { described_class.encode(buf, reg, offset, badchars) } - let(:buf) { 'ABCD' } - let(:reg) { 'ECX' } - let(:offset) { 0 } - - context "when too many badchars" do - let(:badchars) { (0x00..0xff).to_a.pack("C*") } - - it "raises an error" do - expect { subject }.to raise_error(RuntimeError) - end - end - - context "when encoding is possible" do - let(:badchars) { 'B' } - - it "returns encoding without badchars" do - badchars.each_char do |b| - is_expected.to_not include(b) - end - end - - it "returns encoding ending with terminator" do - is_expected.to end_with(described_class.add_terminator) - end - end - end - - describe ".add_terminator" do - subject { described_class.add_terminator } - - it { is_expected.to eq('AA') } - end - end diff --git a/spec/support/shared/examples/rex/encoder/alpha2/generic.rb b/spec/support/shared/examples/rex/encoder/alpha2/generic.rb new file mode 100644 index 0000000000..226e345752 --- /dev/null +++ b/spec/support/shared/examples/rex/encoder/alpha2/generic.rb @@ -0,0 +1,67 @@ +shared_examples_for 'Rex::Encoder::Alpha2::Generic' do + + describe ".encode_byte" do + subject { described_class.encode_byte(block, badchars) } + + context "when too many badchars" do + let(:block) { 0x41 } + let(:badchars) { (0x00..0xff).to_a.pack("C*") } + + it "raises an error" do + expect { subject }.to raise_error(RuntimeError) + end + end + + context "when encoding is possible" do + let(:block) { 0x41 } + let(:badchars) { 'B' } + + it "returns two-bytes encoding" do + expect(subject.length).to eq(2) + end + + it "returns encoding without badchars" do + badchars.each_char do |b| + is_expected.to_not include(badchars) + end + end + end + + end + + describe ".encode" do + subject { described_class.encode(buf, reg, offset, badchars) } + let(:buf) { 'ABCD' } + let(:reg) { 'ECX' } + let(:offset) { 0 } + + context "when too many badchars" do + let(:badchars) { (0x00..0xff).to_a.pack("C*") } + + it "raises an error" do + expect { subject }.to raise_error(RuntimeError) + end + end + + context "when encoding is possible" do + let(:badchars) { 'B' } + + it "returns encoding without badchars" do + badchars.each_char do |b| + is_expected.to_not include(b) + end + end + + it "returns encoding ending with terminator" do + is_expected.to end_with(described_class.add_terminator) + end + end + end + + describe ".add_terminator" do + subject { described_class.add_terminator } + + it { is_expected.to eq('AA') } + end + +end From 2e126b6a6803ac47c82d633e876e93bd5402b2eb Mon Sep 17 00:00:00 2001 From: jvazquez-r7 Date: Mon, 15 Sep 2014 15:46:53 -0500 Subject: [PATCH 03/11] Include it_behaves_like --- spec/lib/rex/encoder/alpha2/generic_spec.rb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/spec/lib/rex/encoder/alpha2/generic_spec.rb b/spec/lib/rex/encoder/alpha2/generic_spec.rb index 342e6f7621..a5dc5cc07c 100644 --- a/spec/lib/rex/encoder/alpha2/generic_spec.rb +++ b/spec/lib/rex/encoder/alpha2/generic_spec.rb @@ -5,6 +5,8 @@ require 'rex/encoder/alpha2/generic' describe Rex::Encoder::Alpha2::Generic do + it_behaves_like 'Rex::Encoder::Alpha2::Generic' + describe ".default_accepted_chars" do subject { described_class.default_accepted_chars } From 36e5dcd149b33cc5d51098621caeab9ee4d74440 Mon Sep 17 00:00:00 2001 From: jvazquez-r7 Date: Mon, 15 Sep 2014 15:56:19 -0500 Subject: [PATCH 04/11] Fix shared examples --- .../support/shared/examples/rex/encoder/alpha2/generic.rb | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/spec/support/shared/examples/rex/encoder/alpha2/generic.rb b/spec/support/shared/examples/rex/encoder/alpha2/generic.rb index 226e345752..e3192ded93 100644 --- a/spec/support/shared/examples/rex/encoder/alpha2/generic.rb +++ b/spec/support/shared/examples/rex/encoder/alpha2/generic.rb @@ -22,7 +22,7 @@ shared_examples_for 'Rex::Encoder::Alpha2::Generic' do it "returns encoding without badchars" do badchars.each_char do |b| - is_expected.to_not include(badchars) + is_expected.to_not include(b) end end end @@ -46,10 +46,8 @@ shared_examples_for 'Rex::Encoder::Alpha2::Generic' do context "when encoding is possible" do let(:badchars) { 'B' } - it "returns encoding without badchars" do - badchars.each_char do |b| - is_expected.to_not include(b) - end + it "returns encoding starting with the decoder stub" do + is_expected.to start_with(described_class.gen_decoder(reg, offset)) end it "returns encoding ending with terminator" do From 0e1ba8fb5ea9a8fb28997f4a302982776810b907 Mon Sep 17 00:00:00 2001 From: jvazquez-r7 Date: Mon, 15 Sep 2014 15:59:18 -0500 Subject: [PATCH 05/11] Use non aphanumeric badchar --- spec/support/shared/examples/rex/encoder/alpha2/generic.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/support/shared/examples/rex/encoder/alpha2/generic.rb b/spec/support/shared/examples/rex/encoder/alpha2/generic.rb index e3192ded93..070b60b208 100644 --- a/spec/support/shared/examples/rex/encoder/alpha2/generic.rb +++ b/spec/support/shared/examples/rex/encoder/alpha2/generic.rb @@ -44,7 +44,7 @@ shared_examples_for 'Rex::Encoder::Alpha2::Generic' do end context "when encoding is possible" do - let(:badchars) { 'B' } + let(:badchars) { '\n' } it "returns encoding starting with the decoder stub" do is_expected.to start_with(described_class.gen_decoder(reg, offset)) From e8dce6ac590d102b8d39ff35f0c25d569b2f35a1 Mon Sep 17 00:00:00 2001 From: jvazquez-r7 Date: Mon, 15 Sep 2014 16:35:54 -0500 Subject: [PATCH 06/11] Add specs for Rex::Encoder::Alpha2::AlphaUpper --- .../rex/encoder/alpha2/alpha_upper_spec.rb | 94 +++++++++++++++++++ 1 file changed, 94 insertions(+) create mode 100644 spec/lib/rex/encoder/alpha2/alpha_upper_spec.rb diff --git a/spec/lib/rex/encoder/alpha2/alpha_upper_spec.rb b/spec/lib/rex/encoder/alpha2/alpha_upper_spec.rb new file mode 100644 index 0000000000..a0acc062e6 --- /dev/null +++ b/spec/lib/rex/encoder/alpha2/alpha_upper_spec.rb @@ -0,0 +1,94 @@ +# -*- coding:binary -*- +require 'spec_helper' + +require 'rex/encoder/alpha2/alpha_upper' + +describe Rex::Encoder::Alpha2::AlphaUpper do + + it_behaves_like 'Rex::Encoder::Alpha2::Generic' + + let(:decoder_stub) do + "VTX30VX4AP0A3HH0A00ABAABTAAQ2AB2BB0BBXP8ACJJI" + end + + let(:reg_signature) do + { + 'EAX' => 'PY', + 'ECX' => 'I', + 'EDX' => 'RY', + 'EBX' => 'SY', + 'ESP' => 'TY', + 'EBP' => 'UY', + 'ESI' => 'VY', + 'EDI' => 'WY' + } + end + + describe ".default_accepted_chars" do + subject { described_class.default_accepted_chars } + + it { is_expected.to eq(('B' .. 'Z').to_a + ('0' .. '9').to_a) } + end + + describe ".gen_decoder_prefix" do + subject { described_class.gen_decoder_prefix(reg, offset) } + let(:reg) { 'ECX' } + let(:offset) { 5 } + + it "returns decoder prefix" do + is_expected.to include(reg_signature[reg]) + end + + context "when invalid reg name" do + let(:reg) { 'NON EXISTENT' } + let(:offset) { 0 } + + it "raises an error" do + expect { subject }.to raise_error(ArgumentError) + end + end + + context "when offset is bigger than 20" do + let(:reg) { 'ECX' } + let(:offset) { 25 } + + it "raises an error" do + expect { subject }.to raise_error + end + end + end + + + describe ".gen_decoder" do + subject { described_class.gen_decoder(reg, offset) } + let(:reg) { 'ECX' } + let(:offset) { 5 } + + it "returns the alpha upper decoder" do + is_expected.to include(decoder_stub) + end + + it "uses the correct decoder prefix" do + is_expected.to include(reg_signature[reg]) + end + + context "when invalid reg name" do + let(:reg) { 'NON EXISTENT' } + let(:offset) { 0 } + + it "raises an error" do + expect { subject }.to raise_error(ArgumentError) + end + end + + context "when offset is bigger than 20" do + let(:reg) { 'ECX' } + let(:offset) { 25 } + + it "raises an error" do + expect { subject }.to raise_error + end + end + end + +end From 3dc53cd0136adbdce471e0a10b631b07b73f3700 Mon Sep 17 00:00:00 2001 From: jvazquez-r7 Date: Mon, 15 Sep 2014 16:43:40 -0500 Subject: [PATCH 07/11] Add specs for Rex::Encoder::Alpha2::AlphaMixed --- .../rex/encoder/alpha2/alpha_mixed_spec.rb | 88 +++++++++++++++++++ 1 file changed, 88 insertions(+) create mode 100644 spec/lib/rex/encoder/alpha2/alpha_mixed_spec.rb diff --git a/spec/lib/rex/encoder/alpha2/alpha_mixed_spec.rb b/spec/lib/rex/encoder/alpha2/alpha_mixed_spec.rb new file mode 100644 index 0000000000..f84f67f445 --- /dev/null +++ b/spec/lib/rex/encoder/alpha2/alpha_mixed_spec.rb @@ -0,0 +1,88 @@ +# -*- coding:binary -*- +require 'spec_helper' + +require 'rex/encoder/alpha2/alpha_mixed' + +describe Rex::Encoder::Alpha2::AlphaMixed do + + it_behaves_like 'Rex::Encoder::Alpha2::Generic' + + let(:decoder_stub) do + "jAXP0A0AkAAQ2AB2BB0BBABXP8ABuJI" + end + + let(:reg_signature) do + { + 'EAX' => 'PY', + 'ECX' => 'I', + 'EDX' => '7RY', + 'EBX' => 'SY', + 'ESP' => 'TY', + 'EBP' => 'UY', + 'ESI' => 'VY', + 'EDI' => 'WY' + } + end + + describe ".gen_decoder_prefix" do + subject { described_class.gen_decoder_prefix(reg, offset) } + let(:reg) { 'ECX' } + let(:offset) { 5 } + + it "returns decoder prefix" do + is_expected.to include(reg_signature[reg]) + end + + context "when invalid reg name" do + let(:reg) { 'NON EXISTENT' } + let(:offset) { 0 } + + it "raises an error" do + expect { subject }.to raise_error(ArgumentError) + end + end + + context "when offset is bigger than 32" do + let(:reg) { 'ECX' } + let(:offset) { 33 } + + it "raises an error" do + expect { subject }.to raise_error + end + end + end + + + describe ".gen_decoder" do + subject { described_class.gen_decoder(reg, offset) } + let(:reg) { 'ECX' } + let(:offset) { 5 } + + it "returns the alpha upper decoder" do + is_expected.to include(decoder_stub) + end + + it "uses the correct decoder prefix" do + is_expected.to include(reg_signature[reg]) + end + + context "when invalid reg name" do + let(:reg) { 'NON EXISTENT' } + let(:offset) { 0 } + + it "raises an error" do + expect { subject }.to raise_error(ArgumentError) + end + end + + context "when offset is bigger than 32" do + let(:reg) { 'ECX' } + let(:offset) { 33 } + + it "raises an error" do + expect { subject }.to raise_error + end + end + end + +end From ee45056827071a987880f0f86de4276d5a52b675 Mon Sep 17 00:00:00 2001 From: jvazquez-r7 Date: Mon, 15 Sep 2014 16:57:26 -0500 Subject: [PATCH 08/11] Add specs for Rex::Encoder::Alpha2::UnicodeUpper --- .../rex/encoder/alpha2/unicode_upper_spec.rb | 94 +++++++++++++++++++ 1 file changed, 94 insertions(+) create mode 100644 spec/lib/rex/encoder/alpha2/unicode_upper_spec.rb diff --git a/spec/lib/rex/encoder/alpha2/unicode_upper_spec.rb b/spec/lib/rex/encoder/alpha2/unicode_upper_spec.rb new file mode 100644 index 0000000000..d230ad289b --- /dev/null +++ b/spec/lib/rex/encoder/alpha2/unicode_upper_spec.rb @@ -0,0 +1,94 @@ +# -*- coding:binary -*- +require 'spec_helper' + +require 'rex/encoder/alpha2/unicode_upper' + +describe Rex::Encoder::Alpha2::UnicodeUpper do + + it_behaves_like 'Rex::Encoder::Alpha2::Generic' + + let(:decoder_stub) do + "QATAXAZAPU3QADAZABARALAYAIAQAIAQAPA5AAAPAZ1AI1AIAIAJ11AIAIAXA58AAPAZABABQI1AIQIAIQI1111AIAJQI1AYAZBABABABAB30APB944JB" + end + + let(:reg_signature) do + { + 'EAX' => 'PPYA', + 'ECX' => '4444', + 'EDX' => 'RRYA', + 'EBX' => 'SSYA', + 'ESP' => 'TUYA', + 'EBP' => 'UUYA', + 'ESI' => 'VVYA', + 'EDI' => 'WWYA' + } + end + + describe ".default_accepted_chars" do + subject { described_class.default_accepted_chars } + + it { is_expected.to eq(('B' .. 'Z').to_a + ('0' .. '9').to_a) } + end + + describe ".gen_decoder_prefix" do + subject { described_class.gen_decoder_prefix(reg, offset) } + let(:reg) { 'ECX' } + let(:offset) { 5 } + + it "returns decoder prefix" do + is_expected.to include(reg_signature[reg]) + end + + context "when invalid reg name" do + let(:reg) { 'NON EXISTENT' } + let(:offset) { 0 } + + it "raises an error" do + expect(subject).to be_nil + end + end + + context "when offset is bigger than 6" do + let(:reg) { 'ECX' } + let(:offset) { 7 } + + it "raises an error" do + expect { subject }.to raise_error(RuntimeError) + end + end + end + + + describe ".gen_decoder" do + subject { described_class.gen_decoder(reg, offset) } + let(:reg) { 'ECX' } + let(:offset) { 5 } + + it "returns the alpha upper decoder" do + is_expected.to include(decoder_stub) + end + + it "uses the correct decoder prefix" do + is_expected.to include(reg_signature[reg]) + end + + context "when invalid reg name" do + let(:reg) { 'NON EXISTENT' } + let(:offset) { 0 } + + it "raises an error" do + expect { subject }.to raise_error(NoMethodError) + end + end + + context "when offset is bigger than 6" do + let(:reg) { 'ECX' } + let(:offset) { 7 } + + it "raises an error" do + expect { subject }.to raise_error(RuntimeError) + end + end + end + +end From ca4c4f55bd254921d0c908e11ef7460ff17cfa43 Mon Sep 17 00:00:00 2001 From: jvazquez-r7 Date: Mon, 15 Sep 2014 17:05:08 -0500 Subject: [PATCH 09/11] Add specs for Rex::Encoder::Alpha2::UnicodeMixed --- .../rex/encoder/alpha2/unicode_mixed_spec.rb | 88 +++++++++++++++++++ 1 file changed, 88 insertions(+) create mode 100644 spec/lib/rex/encoder/alpha2/unicode_mixed_spec.rb diff --git a/spec/lib/rex/encoder/alpha2/unicode_mixed_spec.rb b/spec/lib/rex/encoder/alpha2/unicode_mixed_spec.rb new file mode 100644 index 0000000000..b9069de417 --- /dev/null +++ b/spec/lib/rex/encoder/alpha2/unicode_mixed_spec.rb @@ -0,0 +1,88 @@ +# -*- coding:binary -*- +require 'spec_helper' + +require 'rex/encoder/alpha2/unicode_mixed' + +describe Rex::Encoder::Alpha2::UnicodeMixed do + + it_behaves_like 'Rex::Encoder::Alpha2::Generic' + + let(:decoder_stub) do + "jXAQADAZABARALAYAIAQAIAQAIAhAAAZ1AIAIAJ11AIAIABABABQI1AIQIAIQI111AIAJQYAZBABABABABkMAGB9u4JB" + end + + let(:reg_signature) do + { + 'EAX' => 'PPYA', + 'ECX' => '4444', + 'EDX' => 'RRYA', + 'EBX' => 'SSYA', + 'ESP' => 'TUYA', + 'EBP' => 'UUYAs', + 'ESI' => 'VVYA', + 'EDI' => 'WWYA' + } + end + + describe ".gen_decoder_prefix" do + subject { described_class.gen_decoder_prefix(reg, offset) } + let(:reg) { 'ECX' } + let(:offset) { 5 } + + it "returns decoder prefix" do + is_expected.to include(reg_signature[reg]) + end + + context "when invalid reg name" do + let(:reg) { 'NON EXISTENT' } + let(:offset) { 0 } + + it "raises an error" do + expect { subject }.to raise_error(RuntimeError) + end + end + + context "when offset is bigger than 21" do + let(:reg) { 'ECX' } + let(:offset) { 22 } + + it "raises an error" do + expect { subject }.to raise_error + end + end + end + + + describe ".gen_decoder" do + subject { described_class.gen_decoder(reg, offset) } + let(:reg) { 'ECX' } + let(:offset) { 5 } + + it "returns the alpha upper decoder" do + is_expected.to include(decoder_stub) + end + + it "uses the correct decoder prefix" do + is_expected.to include(reg_signature[reg]) + end + + context "when invalid reg name" do + let(:reg) { 'NON EXISTENT' } + let(:offset) { 0 } + + it "raises an error" do + expect { subject }.to raise_error(RuntimeError) + end + end + + context "when offset is bigger than 21" do + let(:reg) { 'ECX' } + let(:offset) { 22 } + + it "raises an error" do + expect { subject }.to raise_error + end + end + end + +end From e4a702515790e658b47a367eace369755f02cd0a Mon Sep 17 00:00:00 2001 From: jvazquez-r7 Date: Mon, 13 Oct 2014 10:41:12 -0500 Subject: [PATCH 10/11] Avoid explicit use of subject --- spec/lib/rex/encoder/alpha2/alpha_mixed_spec.rb | 12 ++++++------ spec/lib/rex/encoder/alpha2/alpha_upper_spec.rb | 12 ++++++------ spec/lib/rex/encoder/alpha2/generic_spec.rb | 10 +++++----- spec/lib/rex/encoder/alpha2/unicode_mixed_spec.rb | 12 ++++++------ spec/lib/rex/encoder/alpha2/unicode_upper_spec.rb | 14 +++++++------- 5 files changed, 30 insertions(+), 30 deletions(-) diff --git a/spec/lib/rex/encoder/alpha2/alpha_mixed_spec.rb b/spec/lib/rex/encoder/alpha2/alpha_mixed_spec.rb index f84f67f445..4f44000bc4 100644 --- a/spec/lib/rex/encoder/alpha2/alpha_mixed_spec.rb +++ b/spec/lib/rex/encoder/alpha2/alpha_mixed_spec.rb @@ -25,7 +25,7 @@ describe Rex::Encoder::Alpha2::AlphaMixed do end describe ".gen_decoder_prefix" do - subject { described_class.gen_decoder_prefix(reg, offset) } + subject(:decoder_prefix) { described_class.gen_decoder_prefix(reg, offset) } let(:reg) { 'ECX' } let(:offset) { 5 } @@ -38,7 +38,7 @@ describe Rex::Encoder::Alpha2::AlphaMixed do let(:offset) { 0 } it "raises an error" do - expect { subject }.to raise_error(ArgumentError) + expect { decoder_prefix }.to raise_error(ArgumentError) end end @@ -47,14 +47,14 @@ describe Rex::Encoder::Alpha2::AlphaMixed do let(:offset) { 33 } it "raises an error" do - expect { subject }.to raise_error + expect { decoder_prefix }.to raise_error end end end describe ".gen_decoder" do - subject { described_class.gen_decoder(reg, offset) } + subject(:decoder) { described_class.gen_decoder(reg, offset) } let(:reg) { 'ECX' } let(:offset) { 5 } @@ -71,7 +71,7 @@ describe Rex::Encoder::Alpha2::AlphaMixed do let(:offset) { 0 } it "raises an error" do - expect { subject }.to raise_error(ArgumentError) + expect { decoder }.to raise_error(ArgumentError) end end @@ -80,7 +80,7 @@ describe Rex::Encoder::Alpha2::AlphaMixed do let(:offset) { 33 } it "raises an error" do - expect { subject }.to raise_error + expect { decoder }.to raise_error end end end diff --git a/spec/lib/rex/encoder/alpha2/alpha_upper_spec.rb b/spec/lib/rex/encoder/alpha2/alpha_upper_spec.rb index a0acc062e6..41a63780ef 100644 --- a/spec/lib/rex/encoder/alpha2/alpha_upper_spec.rb +++ b/spec/lib/rex/encoder/alpha2/alpha_upper_spec.rb @@ -31,7 +31,7 @@ describe Rex::Encoder::Alpha2::AlphaUpper do end describe ".gen_decoder_prefix" do - subject { described_class.gen_decoder_prefix(reg, offset) } + subject(:decoder_prefix) { described_class.gen_decoder_prefix(reg, offset) } let(:reg) { 'ECX' } let(:offset) { 5 } @@ -44,7 +44,7 @@ describe Rex::Encoder::Alpha2::AlphaUpper do let(:offset) { 0 } it "raises an error" do - expect { subject }.to raise_error(ArgumentError) + expect { decoder_prefix }.to raise_error(ArgumentError) end end @@ -53,14 +53,14 @@ describe Rex::Encoder::Alpha2::AlphaUpper do let(:offset) { 25 } it "raises an error" do - expect { subject }.to raise_error + expect { decoder_prefix }.to raise_error end end end describe ".gen_decoder" do - subject { described_class.gen_decoder(reg, offset) } + subject(:decoder) { described_class.gen_decoder(reg, offset) } let(:reg) { 'ECX' } let(:offset) { 5 } @@ -77,7 +77,7 @@ describe Rex::Encoder::Alpha2::AlphaUpper do let(:offset) { 0 } it "raises an error" do - expect { subject }.to raise_error(ArgumentError) + expect { decoder }.to raise_error(ArgumentError) end end @@ -86,7 +86,7 @@ describe Rex::Encoder::Alpha2::AlphaUpper do let(:offset) { 25 } it "raises an error" do - expect { subject }.to raise_error + expect { decoder }.to raise_error end end end diff --git a/spec/lib/rex/encoder/alpha2/generic_spec.rb b/spec/lib/rex/encoder/alpha2/generic_spec.rb index a5dc5cc07c..60e24472ef 100644 --- a/spec/lib/rex/encoder/alpha2/generic_spec.rb +++ b/spec/lib/rex/encoder/alpha2/generic_spec.rb @@ -8,13 +8,13 @@ describe Rex::Encoder::Alpha2::Generic do it_behaves_like 'Rex::Encoder::Alpha2::Generic' describe ".default_accepted_chars" do - subject { described_class.default_accepted_chars } + subject(:accepted_chars) { described_class.default_accepted_chars } it { is_expected.to eq(('a' .. 'z').to_a + ('B' .. 'Z').to_a + ('0' .. '9').to_a) } end describe ".gen_decoder_prefix" do - subject { described_class.gen_decoder_prefix(reg, offset) } + subject(:decoder_prefix) { described_class.gen_decoder_prefix(reg, offset) } let(:reg) { 'ECX' } let(:offset) { 0 } @@ -22,7 +22,7 @@ describe Rex::Encoder::Alpha2::Generic do end describe ".gen_decoder" do - subject { described_class.gen_decoder(reg, offset) } + subject(:decoder) { described_class.gen_decoder(reg, offset) } let(:reg) { 'ECX' } let(:offset) { 0 } @@ -30,12 +30,12 @@ describe Rex::Encoder::Alpha2::Generic do end describe ".gen_second" do - subject { described_class.gen_second(block, base) } + subject(:second) { described_class.gen_second(block, base) } let(:block) { 0xaf } let(:base) { 0xfa } it "returns block ^ base" do - expect(subject ^ base).to eq(block) + expect(second ^ base).to eq(block) end end diff --git a/spec/lib/rex/encoder/alpha2/unicode_mixed_spec.rb b/spec/lib/rex/encoder/alpha2/unicode_mixed_spec.rb index b9069de417..9ace965dd5 100644 --- a/spec/lib/rex/encoder/alpha2/unicode_mixed_spec.rb +++ b/spec/lib/rex/encoder/alpha2/unicode_mixed_spec.rb @@ -25,7 +25,7 @@ describe Rex::Encoder::Alpha2::UnicodeMixed do end describe ".gen_decoder_prefix" do - subject { described_class.gen_decoder_prefix(reg, offset) } + subject(:decoder_prefix) { described_class.gen_decoder_prefix(reg, offset) } let(:reg) { 'ECX' } let(:offset) { 5 } @@ -38,7 +38,7 @@ describe Rex::Encoder::Alpha2::UnicodeMixed do let(:offset) { 0 } it "raises an error" do - expect { subject }.to raise_error(RuntimeError) + expect { decoder_prefix }.to raise_error(RuntimeError) end end @@ -47,14 +47,14 @@ describe Rex::Encoder::Alpha2::UnicodeMixed do let(:offset) { 22 } it "raises an error" do - expect { subject }.to raise_error + expect { decoder_prefix }.to raise_error end end end describe ".gen_decoder" do - subject { described_class.gen_decoder(reg, offset) } + subject(:decoder) { described_class.gen_decoder(reg, offset) } let(:reg) { 'ECX' } let(:offset) { 5 } @@ -71,7 +71,7 @@ describe Rex::Encoder::Alpha2::UnicodeMixed do let(:offset) { 0 } it "raises an error" do - expect { subject }.to raise_error(RuntimeError) + expect { decoder }.to raise_error(RuntimeError) end end @@ -80,7 +80,7 @@ describe Rex::Encoder::Alpha2::UnicodeMixed do let(:offset) { 22 } it "raises an error" do - expect { subject }.to raise_error + expect { decoder }.to raise_error end end end diff --git a/spec/lib/rex/encoder/alpha2/unicode_upper_spec.rb b/spec/lib/rex/encoder/alpha2/unicode_upper_spec.rb index d230ad289b..29f80b7ee7 100644 --- a/spec/lib/rex/encoder/alpha2/unicode_upper_spec.rb +++ b/spec/lib/rex/encoder/alpha2/unicode_upper_spec.rb @@ -25,13 +25,13 @@ describe Rex::Encoder::Alpha2::UnicodeUpper do end describe ".default_accepted_chars" do - subject { described_class.default_accepted_chars } + subject(:accepted_chars) { described_class.default_accepted_chars } it { is_expected.to eq(('B' .. 'Z').to_a + ('0' .. '9').to_a) } end describe ".gen_decoder_prefix" do - subject { described_class.gen_decoder_prefix(reg, offset) } + subject(:decoder_prefix) { described_class.gen_decoder_prefix(reg, offset) } let(:reg) { 'ECX' } let(:offset) { 5 } @@ -44,7 +44,7 @@ describe Rex::Encoder::Alpha2::UnicodeUpper do let(:offset) { 0 } it "raises an error" do - expect(subject).to be_nil + expect(decoder_prefix).to be_nil end end @@ -53,14 +53,14 @@ describe Rex::Encoder::Alpha2::UnicodeUpper do let(:offset) { 7 } it "raises an error" do - expect { subject }.to raise_error(RuntimeError) + expect { decoder_prefix }.to raise_error(RuntimeError) end end end describe ".gen_decoder" do - subject { described_class.gen_decoder(reg, offset) } + subject(:decoder) { described_class.gen_decoder(reg, offset) } let(:reg) { 'ECX' } let(:offset) { 5 } @@ -77,7 +77,7 @@ describe Rex::Encoder::Alpha2::UnicodeUpper do let(:offset) { 0 } it "raises an error" do - expect { subject }.to raise_error(NoMethodError) + expect { decoder }.to raise_error(NoMethodError) end end @@ -86,7 +86,7 @@ describe Rex::Encoder::Alpha2::UnicodeUpper do let(:offset) { 7 } it "raises an error" do - expect { subject }.to raise_error(RuntimeError) + expect { decoder }.to raise_error(RuntimeError) end end end From eb190a5a78441cc9e1a3861368d4d17589190433 Mon Sep 17 00:00:00 2001 From: jvazquez-r7 Date: Mon, 13 Oct 2014 10:43:53 -0500 Subject: [PATCH 11/11] Avoid explicit use of subject on shared examples --- .../shared/examples/rex/encoder/alpha2/generic.rb | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/spec/support/shared/examples/rex/encoder/alpha2/generic.rb b/spec/support/shared/examples/rex/encoder/alpha2/generic.rb index 070b60b208..84dcd96ae2 100644 --- a/spec/support/shared/examples/rex/encoder/alpha2/generic.rb +++ b/spec/support/shared/examples/rex/encoder/alpha2/generic.rb @@ -1,14 +1,14 @@ shared_examples_for 'Rex::Encoder::Alpha2::Generic' do describe ".encode_byte" do - subject { described_class.encode_byte(block, badchars) } + subject(:encoded_byte) { described_class.encode_byte(block, badchars) } context "when too many badchars" do let(:block) { 0x41 } let(:badchars) { (0x00..0xff).to_a.pack("C*") } it "raises an error" do - expect { subject }.to raise_error(RuntimeError) + expect { encoded_byte }.to raise_error(RuntimeError) end end @@ -17,7 +17,7 @@ shared_examples_for 'Rex::Encoder::Alpha2::Generic' do let(:badchars) { 'B' } it "returns two-bytes encoding" do - expect(subject.length).to eq(2) + expect(encoded_byte.length).to eq(2) end it "returns encoding without badchars" do @@ -30,7 +30,7 @@ shared_examples_for 'Rex::Encoder::Alpha2::Generic' do end describe ".encode" do - subject { described_class.encode(buf, reg, offset, badchars) } + subject(:encoded_result) { described_class.encode(buf, reg, offset, badchars) } let(:buf) { 'ABCD' } let(:reg) { 'ECX' } let(:offset) { 0 } @@ -39,7 +39,7 @@ shared_examples_for 'Rex::Encoder::Alpha2::Generic' do let(:badchars) { (0x00..0xff).to_a.pack("C*") } it "raises an error" do - expect { subject }.to raise_error(RuntimeError) + expect { encoded_result }.to raise_error(RuntimeError) end end @@ -57,7 +57,7 @@ shared_examples_for 'Rex::Encoder::Alpha2::Generic' do end describe ".add_terminator" do - subject { described_class.add_terminator } + subject(:terminator) { described_class.add_terminator } it { is_expected.to eq('AA') } end