@@ -58,90 +58,95 @@ require 'msf/core/payload_generator'
58
58
opt . separator ( '' )
59
59
opt . separator ( 'Options:' )
60
60
61
- opt . on ( '-p' , '--payload <payload>' , String , 'Payload to use. Specify a \'-\' or stdin to use custom payloads' ) do |p |
61
+ opt . on ( '-p' , '--payload <payload>' , String ,
62
+ 'Payload to use. Specify a \'-\' or stdin to use custom payloads' ) do |p |
62
63
if p == '-'
63
64
opts [ :payload ] = 'stdin'
64
65
else
65
66
opts [ :payload ] = p
66
67
end
67
68
end
68
69
69
- opt . on ( '-l' , '--list [module_type]' , Array , 'List a module type. Options are: payloads, encoders, nops, all' ) do |l |
70
+ opt . on ( '--payload-options' , "List the payload's standard options" ) do
71
+ opts [ :list_options ] = true
72
+ end
73
+
74
+ opt . on ( '-l' , '--list [type]' , Array , 'List a module type. Options are: payloads, encoders, nops, all' ) do |l |
70
75
if l . nil? or l . empty?
71
76
l = [ "all" ]
72
77
end
73
78
opts [ :list ] = l
74
79
end
75
80
76
- opt . on ( '-n' , '--nopsled <length>' , Integer , 'Prepend a nopsled of [length] size on to the payload' ) do |n |
81
+ opt . on ( '-n' , '--nopsled <length>' , Integer , 'Prepend a nopsled of [length] size on to the payload' ) do |n |
77
82
opts [ :nops ] = n . to_i
78
83
end
79
84
80
- opt . on ( '-f' , '--format <format>' , String , "Output format (use --help-formats for a list)" ) do |f |
85
+ opt . on ( '-f' , '--format <format>' , String , "Output format (use --help-formats for a list)" ) do |f |
81
86
opts [ :format ] = f
82
87
end
83
88
84
- opt . on ( '-e' , '--encoder [encoder]' , String , 'The encoder to use' ) do |e |
89
+ opt . on ( '--help-formats' , String , "List available formats" ) do
90
+ init_framework ( :module_types => [ ] )
91
+ msg = "Executable formats\n " +
92
+ "\t " + ::Msf ::Util ::EXE . to_executable_fmt_formats . join ( ", " ) + "\n " +
93
+ "Transform formats\n " +
94
+ "\t " + ::Msf ::Simple ::Buffer . transform_formats . join ( ", " )
95
+ raise UsageError , msg
96
+ end
97
+
98
+ opt . on ( '-e' , '--encoder <encoder>' , String , 'The encoder to use' ) do |e |
85
99
opts [ :encoder ] = e
86
100
end
87
101
88
- opt . on ( '-a' , '--arch <architecture >' , String , 'The architecture to use' ) do |a |
102
+ opt . on ( '-a' , '--arch <arch >' , String , 'The architecture to use' ) do |a |
89
103
opts [ :arch ] = a
90
104
end
91
105
92
- opt . on ( '--platform <platform>' , String , 'The platform of the payload' ) do |l |
106
+ opt . on ( '--platform <platform>' , String , 'The platform of the payload' ) do |l |
93
107
opts [ :platform ] = l
94
108
end
95
109
96
- opt . on ( '-s' , '--space <length>' , Integer , 'The maximum size of the resulting payload' ) do |s |
110
+ opt . on ( '-s' , '--space <length>' , Integer , 'The maximum size of the resulting payload' ) do |s |
97
111
opts [ :space ] = s
98
112
end
99
113
100
- opt . on ( '-b' , '--bad-chars <list>' , String , 'The list of characters to avoid example: \'\x00\xff\'' ) do |b |
114
+ opt . on ( '--encoder-space <length>' , Integer , 'The maximum size of the encoded payload (defaults to the -s value)' ) do |s |
115
+ opts [ :encoder_space ] = s
116
+ end
117
+
118
+ opt . on ( '-b' , '--bad-chars <list>' , String , 'The list of characters to avoid example: \'\x00\xff\'' ) do |b |
101
119
opts [ :badchars ] = Rex ::Text . hex_to_raw ( b )
102
120
end
103
121
104
- opt . on ( '-i' , '--iterations <count>' , Integer , 'The number of times to encode the payload' ) do |i |
122
+ opt . on ( '-i' , '--iterations <count>' , Integer , 'The number of times to encode the payload' ) do |i |
105
123
opts [ :iterations ] = i
106
124
end
107
125
108
- opt . on ( '-c' , '--add-code <path>' , String , 'Specify an additional win32 shellcode file to include' ) do |x |
126
+ opt . on ( '-c' , '--add-code <path>' , String , 'Specify an additional win32 shellcode file to include' ) do |x |
109
127
opts [ :add_code ] = x
110
128
end
111
129
112
- opt . on ( '-x' , '--template <path>' , String , 'Specify a custom executable file to use as a template' ) do |x |
130
+ opt . on ( '-x' , '--template <path>' , String , 'Specify a custom executable file to use as a template' ) do |x |
113
131
opts [ :template ] = x
114
132
end
115
133
116
134
opt . on ( '-k' , '--keep' , 'Preserve the template behavior and inject the payload as a new thread' ) do
117
135
opts [ :keep ] = true
118
136
end
119
137
120
- opt . on ( '--payload-options' , "List the payload's standard options" ) do
121
- opts [ :list_options ] = true
122
- end
123
-
124
- opt . on ( '-o' , '--out <path>' , 'Save the payload' ) do |x |
138
+ opt . on ( '-o' , '--out <path>' , 'Save the payload' ) do |x |
125
139
opts [ :out ] = x
126
140
end
127
141
128
- opt . on ( '-v' , '--var-name <name>' , String , 'Specify a custom variable name to use for certain output formats' ) do |x |
142
+ opt . on ( '-v' , '--var-name <name>' , String , 'Specify a custom variable name to use for certain output formats' ) do |x |
129
143
opts [ :var_name ] = x
130
144
end
131
145
132
146
opt . on_tail ( '-h' , '--help' , 'Show this message' ) do
133
147
raise UsageError , "#{ opt } "
134
148
end
135
149
136
- opt . on_tail ( '--help-formats' , String , "List available formats" ) do
137
- init_framework ( :module_types => [ ] )
138
- msg = "Executable formats\n " +
139
- "\t " + ::Msf ::Util ::EXE . to_executable_fmt_formats . join ( ", " ) + "\n " +
140
- "Transform formats\n " +
141
- "\t " + ::Msf ::Simple ::Buffer . transform_formats . join ( ", " )
142
- raise UsageError , msg
143
- end
144
-
145
150
begin
146
151
opt . parse! ( args )
147
152
rescue OptionParser ::InvalidOption => e
0 commit comments