ronin-exploits 1.0.0.beta2 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (72) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ruby.yml +1 -0
  3. data/README.md +29 -13
  4. data/gemspec.yml +10 -8
  5. data/lib/ronin/exploits/cli/commands/new.rb +1 -1
  6. data/lib/ronin/exploits/cli/commands/run.rb +55 -5
  7. data/lib/ronin/exploits/exploit.rb +7 -5
  8. data/lib/ronin/exploits/lfi.rb +1 -1
  9. data/lib/ronin/exploits/metadata/arch.rb +1 -1
  10. data/lib/ronin/exploits/metadata/default_filename.rb +1 -1
  11. data/lib/ronin/exploits/metadata/default_port.rb +1 -1
  12. data/lib/ronin/exploits/mixins/file_builder.rb +2 -2
  13. data/lib/ronin/exploits/mixins/nops.rb +1 -1
  14. data/lib/ronin/exploits/params/base_url.rb +1 -1
  15. data/lib/ronin/exploits/version.rb +1 -1
  16. data/ronin-exploits.gemspec +2 -1
  17. metadata +24 -129
  18. data/spec/advisory_spec.rb +0 -71
  19. data/spec/cli/exploit_command_spec.rb +0 -68
  20. data/spec/cli/exploit_methods_spec.rb +0 -208
  21. data/spec/cli/ruby_shell_spec.rb +0 -14
  22. data/spec/client_side_web_vuln_spec.rb +0 -117
  23. data/spec/exploit_spec.rb +0 -538
  24. data/spec/exploits_spec.rb +0 -8
  25. data/spec/heap_overflow_spec.rb +0 -14
  26. data/spec/lfi_spec.rb +0 -162
  27. data/spec/loot/file_spec.rb +0 -131
  28. data/spec/loot_spec.rb +0 -138
  29. data/spec/memory_corruption_spec.rb +0 -22
  30. data/spec/metadata/arch_spec.rb +0 -82
  31. data/spec/metadata/cookie_param_spec.rb +0 -67
  32. data/spec/metadata/default_filename_spec.rb +0 -62
  33. data/spec/metadata/default_port_spec.rb +0 -62
  34. data/spec/metadata/header_name_spec.rb +0 -67
  35. data/spec/metadata/os_spec.rb +0 -164
  36. data/spec/metadata/shouts_spec.rb +0 -100
  37. data/spec/metadata/url_path_spec.rb +0 -67
  38. data/spec/metadata/url_query_param_spec.rb +0 -67
  39. data/spec/mixins/binary_spec.rb +0 -129
  40. data/spec/mixins/build_dir.rb +0 -66
  41. data/spec/mixins/file_builder_spec.rb +0 -67
  42. data/spec/mixins/format_string_spec.rb +0 -44
  43. data/spec/mixins/has_payload_spec.rb +0 -333
  44. data/spec/mixins/has_targets_spec.rb +0 -434
  45. data/spec/mixins/html_spec.rb +0 -772
  46. data/spec/mixins/http_spec.rb +0 -1227
  47. data/spec/mixins/loot_spec.rb +0 -20
  48. data/spec/mixins/nops_spec.rb +0 -165
  49. data/spec/mixins/remote_tcp_spec.rb +0 -217
  50. data/spec/mixins/remote_udp_spec.rb +0 -217
  51. data/spec/mixins/seh_spec.rb +0 -89
  52. data/spec/mixins/stack_overflow_spec.rb +0 -87
  53. data/spec/mixins/text_spec.rb +0 -43
  54. data/spec/open_redirect_spec.rb +0 -71
  55. data/spec/params/base_url_spec.rb +0 -71
  56. data/spec/params/bind_host_spec.rb +0 -34
  57. data/spec/params/bind_port_spec.rb +0 -35
  58. data/spec/params/filename_spec.rb +0 -77
  59. data/spec/params/host_spec.rb +0 -34
  60. data/spec/params/port_spec.rb +0 -77
  61. data/spec/rfi_spec.rb +0 -107
  62. data/spec/seh_overflow_spec.rb +0 -18
  63. data/spec/spec_helper.rb +0 -8
  64. data/spec/sqli_spec.rb +0 -306
  65. data/spec/ssti_spec.rb +0 -121
  66. data/spec/stack_overflow_spec.rb +0 -18
  67. data/spec/target_spec.rb +0 -92
  68. data/spec/test_result_spec.rb +0 -32
  69. data/spec/use_after_free_spec.rb +0 -14
  70. data/spec/web_spec.rb +0 -12
  71. data/spec/web_vuln_spec.rb +0 -854
  72. data/spec/xss_spec.rb +0 -69
@@ -1,62 +0,0 @@
1
- require 'spec_helper'
2
- require 'ronin/exploits/metadata/default_port'
3
-
4
- describe Ronin::Exploits::Metadata::DefaultPort do
5
- module TestMetadataDefaultPort
6
- class WithNoDefaultPortSet
7
- include Ronin::Exploits::Metadata::DefaultPort
8
- end
9
-
10
- class WithDefaultPortSet
11
- include Ronin::Exploits::Metadata::DefaultPort
12
-
13
- default_port 111
14
- end
15
-
16
- class InheritsItsDefaultPort < WithDefaultPortSet
17
- include Ronin::Exploits::Metadata::DefaultPort
18
- end
19
-
20
- class OverridesItsInheritedDefaultPort < WithDefaultPortSet
21
- include Ronin::Exploits::Metadata::DefaultPort
22
-
23
- default_port 222
24
- end
25
- end
26
-
27
- describe ".default_port" do
28
- subject { test_class }
29
-
30
- context "and when default port is not set in the class" do
31
- let(:test_class) { TestMetadataDefaultPort::WithNoDefaultPortSet }
32
-
33
- it "must default to nil" do
34
- expect(subject.default_port).to be(nil)
35
- end
36
- end
37
-
38
- context "and when default port is set in the class" do
39
- let(:test_class) { TestMetadataDefaultPort::WithDefaultPortSet }
40
-
41
- it "must return the set default_port" do
42
- expect(subject.default_port).to eq(111)
43
- end
44
- end
45
-
46
- context "but when the default port was set in the superclass" do
47
- let(:test_class) { TestMetadataDefaultPort::InheritsItsDefaultPort }
48
-
49
- it "must return the default port set in the superclass" do
50
- expect(subject.default_port).to eq(111)
51
- end
52
-
53
- context "but the default port is overridden in the sub-class" do
54
- let(:test_class) { TestMetadataDefaultPort::OverridesItsInheritedDefaultPort }
55
-
56
- it "must return the default port set in the sub-class" do
57
- expect(subject.default_port).to eq(222)
58
- end
59
- end
60
- end
61
- end
62
- end
@@ -1,67 +0,0 @@
1
- require 'spec_helper'
2
- require 'ronin/exploits/metadata/header_name'
3
-
4
- describe Ronin::Exploits::Metadata::HeaderName do
5
- describe ".header_name" do
6
- subject { test_class }
7
-
8
- context "and when header_name is not set in the class" do
9
- module TestMetadataHeaderName
10
- class WithNoHeaderNameSet
11
- include Ronin::Exploits::Metadata::HeaderName
12
- end
13
- end
14
-
15
- let(:test_class) { TestMetadataHeaderName::WithNoHeaderNameSet }
16
-
17
- it "must default to nil" do
18
- expect(subject.header_name).to be(nil)
19
- end
20
- end
21
-
22
- context "and when header_name is set in the class" do
23
- module TestMetadataHeaderName
24
- class WithHeaderNameSet
25
- include Ronin::Exploits::Metadata::HeaderName
26
-
27
- header_name 'test'
28
- end
29
- end
30
-
31
- let(:test_class) { TestMetadataHeaderName::WithHeaderNameSet }
32
-
33
- it "must return the set header_name" do
34
- expect(subject.header_name).to eq("test")
35
- end
36
- end
37
-
38
- context "but when the header_name was set in the superclass" do
39
- module TestMetadataHeaderName
40
- class InheritsItsHeaderName < WithHeaderNameSet
41
- end
42
- end
43
-
44
- let(:test_class) { TestMetadataHeaderName::InheritsItsHeaderName }
45
-
46
- it "must return the header_name set in the superclass" do
47
- expect(subject.header_name).to eq("test")
48
- end
49
-
50
- context "but the header_name is overridden in the sub-class" do
51
- module TestMetadataHeaderName
52
- class OverridesItsInheritedHeaderName < WithHeaderNameSet
53
- header_name "test2"
54
- end
55
- end
56
-
57
- let(:test_class) do
58
- TestMetadataHeaderName::OverridesItsInheritedHeaderName
59
- end
60
-
61
- it "must return the header_name set in the sub-class" do
62
- expect(subject.header_name).to eq("test2")
63
- end
64
- end
65
- end
66
- end
67
- end
@@ -1,164 +0,0 @@
1
- require 'spec_helper'
2
- require 'ronin/exploits/metadata/os'
3
-
4
- describe Ronin::Exploits::Metadata::OS do
5
- module TestMetadataOS
6
- class WithNoOSSet
7
- include Ronin::Exploits::Metadata::OS
8
- end
9
-
10
- class WithOSSet
11
- include Ronin::Exploits::Metadata::OS
12
-
13
- os :linux
14
- end
15
-
16
- class InheritsItsOS < WithOSSet
17
- include Ronin::Exploits::Metadata::OS
18
- end
19
-
20
- class OverridesItsInheritedOS < WithOSSet
21
- include Ronin::Exploits::Metadata::OS
22
-
23
- os :macos
24
- end
25
-
26
- class WithNoOSVersionSet
27
- include Ronin::Exploits::Metadata::OS
28
-
29
- os :linux
30
- end
31
-
32
- class WithOSVersionSet
33
- include Ronin::Exploits::Metadata::OS
34
-
35
- os :linux
36
- os_version '5.x'
37
- end
38
-
39
- class InheritsItsOSVersion < WithOSVersionSet
40
- include Ronin::Exploits::Metadata::OS
41
- end
42
-
43
- class OverridesItsInheritedOSVersion < WithOSVersionSet
44
- include Ronin::Exploits::Metadata::OS
45
-
46
- os :macos
47
- os_version '13'
48
- end
49
- end
50
-
51
- describe ".os" do
52
- subject { test_class }
53
-
54
- context "and when os is not set in the class" do
55
- let(:test_class) { TestMetadataOS::WithNoOSSet }
56
-
57
- it "must default to nil" do
58
- expect(subject.os).to be(nil)
59
- end
60
- end
61
-
62
- context "and when os is set in the class" do
63
- let(:test_class) { TestMetadataOS::WithOSSet }
64
-
65
- it "must return the set os" do
66
- expect(subject.os).to eq(:linux)
67
- end
68
- end
69
-
70
- context "but when the os was set in the superclass" do
71
- let(:test_class) { TestMetadataOS::InheritsItsOS }
72
-
73
- it "must return the os set in the superclass" do
74
- expect(subject.os).to eq(:linux)
75
- end
76
-
77
- context "but the os is overridden in the sub-class" do
78
- let(:test_class) { TestMetadataOS::OverridesItsInheritedOS }
79
-
80
- it "must return the os set in the sub-class" do
81
- expect(subject.os).to eq(:macos)
82
- end
83
- end
84
- end
85
- end
86
-
87
- describe ".os_version" do
88
- subject { test_class }
89
-
90
- context "and when os is not set in the class" do
91
- let(:test_class) { TestMetadataOS::WithNoOSVersionSet }
92
-
93
- it "must default to nil" do
94
- expect(subject.os_version).to be(nil)
95
- end
96
- end
97
-
98
- context "and when os_version is set in the class" do
99
- let(:test_class) { TestMetadataOS::WithOSVersionSet }
100
-
101
- it "must return the set os_version" do
102
- expect(subject.os_version).to eq('5.x')
103
- end
104
- end
105
-
106
- context "but when the os was set in the superclass" do
107
- let(:test_class) { TestMetadataOS::InheritsItsOSVersion }
108
-
109
- it "must return the os_version set in the superclass" do
110
- expect(subject.os_version).to eq('5.x')
111
- end
112
-
113
- context "but the os is overridden in the sub-class" do
114
- let(:test_class) do
115
- TestMetadataOS::OverridesItsInheritedOSVersion
116
- end
117
-
118
- it "must return the os_version set in the sub-class" do
119
- expect(subject.os_version).to eq('13')
120
- end
121
- end
122
- end
123
- end
124
-
125
- describe "#os" do
126
- subject { test_class.new }
127
-
128
- context "when the Exploit class has .os set" do
129
- let(:test_class) { TestMetadataOS::WithOSSet }
130
-
131
- it "must return the Exploit classes .os" do
132
- expect(subject.os).to eq(test_class.os)
133
- end
134
- end
135
-
136
- context "when the Exploit class does not have .os set" do
137
- let(:test_class) { TestMetadataOS::WithNoOSSet }
138
-
139
- it "must return nil" do
140
- expect(subject.os).to be(nil)
141
- end
142
- end
143
- end
144
-
145
- describe "#os_version" do
146
- subject { test_class.new }
147
-
148
- context "when the Exploit class has .os_version set" do
149
- let(:test_class) { TestMetadataOS::WithOSVersionSet }
150
-
151
- it "must return the Exploit classes .os_version" do
152
- expect(subject.os_version).to eq(test_class.os_version)
153
- end
154
- end
155
-
156
- context "when the Exploit class does not have .os_version set" do
157
- let(:test_class) { TestMetadataOS::WithNoOSVersionSet }
158
-
159
- it "must return nil" do
160
- expect(subject.os_version).to be(nil)
161
- end
162
- end
163
- end
164
- end
@@ -1,100 +0,0 @@
1
- require 'spec_helper'
2
- require 'ronin/exploits/metadata/shouts'
3
-
4
- describe Ronin::Exploits::Metadata::Shouts do
5
- describe ".shouts" do
6
- subject { test_class }
7
-
8
- context "and when shouts is not set in the class" do
9
- module TestMetadataShouts
10
- class WithNoShoutsSet
11
- include Ronin::Exploits::Metadata::Shouts
12
- end
13
- end
14
-
15
- let(:test_class) { TestMetadataShouts::WithNoShoutsSet }
16
-
17
- it "must default to []" do
18
- expect(subject.shouts).to eq([])
19
- end
20
- end
21
-
22
- context "and when shouts is set in the class" do
23
- module TestMetadataShouts
24
- class WithShoutsSet
25
- include Ronin::Exploits::Metadata::Shouts
26
-
27
- shouts [
28
- 'https://example.com/link1',
29
- 'https://example.com/link2'
30
- ]
31
- end
32
- end
33
-
34
- let(:test_class) { TestMetadataShouts::WithShoutsSet }
35
-
36
- it "must return the set shouts" do
37
- expect(subject.shouts).to eq(
38
- [
39
- 'https://example.com/link1',
40
- 'https://example.com/link2'
41
- ]
42
- )
43
- end
44
- end
45
-
46
- context "but when the shouts was set in the superclass" do
47
- module TestMetadataShouts
48
- class InheritsItsShouts < WithShoutsSet
49
- include Ronin::Exploits::Metadata::Shouts
50
- end
51
- end
52
-
53
- let(:test_class) { TestMetadataShouts::InheritsItsShouts }
54
-
55
- it "must return the shouts set in the superclass" do
56
- expect(subject.shouts).to eq(
57
- [
58
- 'https://example.com/link1',
59
- 'https://example.com/link2'
60
- ]
61
- )
62
- end
63
-
64
- context "but the shouts is overridden in the sub-class" do
65
- module TestMetadataShouts
66
- class OverridesItsInheritedShouts < WithShoutsSet
67
- include Ronin::Exploits::Metadata::Shouts
68
-
69
- shouts [
70
- 'https://example.com/link3'
71
- ]
72
- end
73
- end
74
-
75
- let(:test_class) do
76
- TestMetadataShouts::OverridesItsInheritedShouts
77
- end
78
-
79
- it "must return the shouts in the sub-class and the superclass" do
80
- expect(subject.shouts).to eq(
81
- [
82
- 'https://example.com/link1',
83
- 'https://example.com/link2',
84
- 'https://example.com/link3'
85
- ]
86
- )
87
- end
88
-
89
- it "must not modify the superclass'es shouts" do
90
- expect(subject.superclass.shouts).to eq(
91
- [
92
- 'https://example.com/link1',
93
- 'https://example.com/link2'
94
- ]
95
- )
96
- end
97
- end
98
- end
99
- end
100
- end
@@ -1,67 +0,0 @@
1
- require 'spec_helper'
2
- require 'ronin/exploits/metadata/url_path'
3
-
4
- describe Ronin::Exploits::Metadata::URLPath do
5
- describe ".url_path" do
6
- subject { test_class }
7
-
8
- context "and when url_path is not set in the class" do
9
- module TestMetadataURLPath
10
- class WithNoURLPathSet
11
- include Ronin::Exploits::Metadata::URLPath
12
- end
13
- end
14
-
15
- let(:test_class) { TestMetadataURLPath::WithNoURLPathSet }
16
-
17
- it "must default to '/'" do
18
- expect(subject.url_path).to eq('/')
19
- end
20
- end
21
-
22
- context "and when url_path is set in the class" do
23
- module TestMetadataURLPath
24
- class WithURLPathSet
25
- include Ronin::Exploits::Metadata::URLPath
26
-
27
- url_path '/test'
28
- end
29
- end
30
-
31
- let(:test_class) { TestMetadataURLPath::WithURLPathSet }
32
-
33
- it "must return the set url_path" do
34
- expect(subject.url_path).to eq("/test")
35
- end
36
- end
37
-
38
- context "but when the url_path was set in the superclass" do
39
- module TestMetadataURLPath
40
- class InheritsItsURLPath < WithURLPathSet
41
- end
42
- end
43
-
44
- let(:test_class) { TestMetadataURLPath::InheritsItsURLPath }
45
-
46
- it "must return the url_path set in the superclass" do
47
- expect(subject.url_path).to eq("/test")
48
- end
49
-
50
- context "but the url_path is overridden in the sub-class" do
51
- module TestMetadataURLPath
52
- class OverridesItsInheritedURLPath < WithURLPathSet
53
- url_path "/test2"
54
- end
55
- end
56
-
57
- let(:test_class) do
58
- TestMetadataURLPath::OverridesItsInheritedURLPath
59
- end
60
-
61
- it "must return the url_path set in the sub-class" do
62
- expect(subject.url_path).to eq("/test2")
63
- end
64
- end
65
- end
66
- end
67
- end
@@ -1,67 +0,0 @@
1
- require 'spec_helper'
2
- require 'ronin/exploits/metadata/url_query_param'
3
-
4
- describe Ronin::Exploits::Metadata::URLQueryParam do
5
- describe ".url_query_param" do
6
- subject { test_class }
7
-
8
- context "and when url_query_param is not set in the class" do
9
- module TestMetadataURLQueryParam
10
- class WithNoURLQueryParamSet
11
- include Ronin::Exploits::Metadata::URLQueryParam
12
- end
13
- end
14
-
15
- let(:test_class) { TestMetadataURLQueryParam::WithNoURLQueryParamSet }
16
-
17
- it "must default to nil" do
18
- expect(subject.url_query_param).to be(nil)
19
- end
20
- end
21
-
22
- context "and when url_query_param is set in the class" do
23
- module TestMetadataURLQueryParam
24
- class WithURLQueryParamSet
25
- include Ronin::Exploits::Metadata::URLQueryParam
26
-
27
- url_query_param 'test'
28
- end
29
- end
30
-
31
- let(:test_class) { TestMetadataURLQueryParam::WithURLQueryParamSet }
32
-
33
- it "must return the set url_query_param" do
34
- expect(subject.url_query_param).to eq("test")
35
- end
36
- end
37
-
38
- context "but when the url_query_param was set in the superclass" do
39
- module TestMetadataURLQueryParam
40
- class InheritsItsURLQueryParam < WithURLQueryParamSet
41
- end
42
- end
43
-
44
- let(:test_class) { TestMetadataURLQueryParam::InheritsItsURLQueryParam }
45
-
46
- it "must return the url_query_param set in the superclass" do
47
- expect(subject.url_query_param).to eq("test")
48
- end
49
-
50
- context "but the url_query_param is overridden in the sub-class" do
51
- module TestMetadataURLQueryParam
52
- class OverridesItsInheritedURLQueryParam < WithURLQueryParamSet
53
- url_query_param "test2"
54
- end
55
- end
56
-
57
- let(:test_class) do
58
- TestMetadataURLQueryParam::OverridesItsInheritedURLQueryParam
59
- end
60
-
61
- it "must return the url_query_param set in the sub-class" do
62
- expect(subject.url_query_param).to eq("test2")
63
- end
64
- end
65
- end
66
- end
67
- end
@@ -1,129 +0,0 @@
1
- require 'spec_helper'
2
- require 'ronin/exploits/mixins/binary'
3
-
4
- require 'ronin/exploits/exploit'
5
- require 'ronin/exploits/metadata/arch'
6
- require 'ronin/exploits/metadata/os'
7
-
8
- describe Ronin::Exploits::Mixins::Binary do
9
- module TestBinaryMixin
10
- class ExploitWithArchSet < Ronin::Exploits::Exploit
11
- include Ronin::Exploits::Metadata::Arch
12
- include Ronin::Exploits::Mixins::Binary
13
-
14
- arch :x86
15
- end
16
-
17
- class ExploitWithoutArch < Ronin::Exploits::Exploit
18
- include Ronin::Exploits::Mixins::Binary
19
- end
20
-
21
- class ExploitWithoutArchSet < Ronin::Exploits::Exploit
22
- include Ronin::Exploits::Metadata::Arch
23
- include Ronin::Exploits::Mixins::Binary
24
- end
25
-
26
- class ExploitWithArchSetButWithoutOSSet < Ronin::Exploits::Exploit
27
- include Ronin::Exploits::Metadata::Arch
28
- include Ronin::Exploits::Metadata::OS
29
- include Ronin::Exploits::Mixins::Binary
30
-
31
- arch :x86
32
- end
33
-
34
- class ExploitWithArchAndOSSet < Ronin::Exploits::Exploit
35
- include Ronin::Exploits::Metadata::Arch
36
- include Ronin::Exploits::Metadata::OS
37
- include Ronin::Exploits::Mixins::Binary
38
-
39
- arch :x86
40
- os :linux
41
- end
42
- end
43
-
44
- subject { exploit_class.new }
45
-
46
- describe "#perform_validate" do
47
- context "when the exploit class does not define an #arch method" do
48
- let(:exploit_class) { TestBinaryMixin::ExploitWithoutArch }
49
-
50
- it do
51
- expect {
52
- subject.perform_validate
53
- }.to raise_error(Ronin::Exploits::ValidationError,"exploit #{exploit_class} did not include Ronin::Exploits::Metadata::Arch or Ronin::Exploits::Mixins::HasTargets")
54
- end
55
- end
56
-
57
- context "when the exploit class's #arch method returns nil" do
58
- let(:exploit_class) { TestBinaryMixin::ExploitWithoutArchSet }
59
-
60
- it do
61
- expect {
62
- subject.perform_validate
63
- }.to raise_error(Ronin::Exploits::ValidationError,"exploit #{exploit_class} did not include define an architecture")
64
- end
65
- end
66
-
67
- context "when the exploit class defines an architecture" do
68
- let(:exploit_class) { TestBinaryMixin::ExploitWithArchSet }
69
-
70
- it do
71
- expect {
72
- subject.perform_validate
73
- }.to_not raise_error
74
- end
75
- end
76
- end
77
-
78
- describe "#platform" do
79
- context "when #arch returns nil" do
80
- let(:exploit_class) { TestBinaryMixin::ExploitWithoutArchSet }
81
-
82
- it "must return Ronin::Support::Binary::CTypes" do
83
- expect(subject.platform).to be(Ronin::Support::Binary::CTypes)
84
- end
85
- end
86
-
87
- context "when #arch returns a architecture name" do
88
- let(:exploit_class) { TestBinaryMixin::ExploitWithArchSet }
89
-
90
- it "must return the according Ronin::Support::Binary::CTypes::Arch:: module" do
91
- expect(subject.platform).to be(Ronin::Support::Binary::CTypes::Arch::X86)
92
- end
93
-
94
- context "and when #os is defined" do
95
- context "and it returns an OS name" do
96
- let(:exploit_class) do
97
- TestBinaryMixin::ExploitWithArchAndOSSet
98
- end
99
-
100
- it "must return the according Ronin::Support::Binary::CTypes::OS object with the according Ronin::Support::Binary::CTypes::Arch:: module inside it" do
101
- expect(subject.platform).to be_kind_of(Ronin::Support::Binary::CTypes::OS::Linux)
102
- expect(subject.platform.types).to be(Ronin::Support::Binary::CTypes::Arch::X86)
103
- end
104
- end
105
-
106
- context "but it returns nil" do
107
- let(:exploit_class) do
108
- TestBinaryMixin::ExploitWithArchSetButWithoutOSSet
109
- end
110
-
111
- it "must still return the according Ronin::Support::Binary::CTypes::Arch:: module" do
112
- expect(subject.platform).to be(Ronin::Support::Binary::CTypes::Arch::X86)
113
- end
114
- end
115
- end
116
- end
117
- end
118
-
119
- describe "#pack" do
120
- let(:exploit_class) { TestBinaryMixin::ExploitWithArchSet }
121
-
122
- let(:type) { :uint32 }
123
- let(:value) { 0x12345678 }
124
-
125
- it "must pack the value using the type from #platform" do
126
- expect(subject.pack(type,value)).to eq("\x78\x56\x34\x12".b)
127
- end
128
- end
129
- end