@@ -19,7 +19,10 @@ def initialize(info={})
19
19
'Platform' => [ 'windows' , 'linux' , 'java' ] ,
20
20
'SessionTypes' => [ 'meterpreter' ]
21
21
) )
22
-
22
+ register_options (
23
+ [
24
+ OptString . new ( "BaseFileName" , [ true , "File/dir base name" , "meterpreter-test" ] )
25
+ ] , self . class )
23
26
end
24
27
25
28
#
@@ -164,66 +167,68 @@ def test_fs
164
167
end
165
168
166
169
it "should create and remove a dir" do
167
- session . fs . dir . rmdir ( "meterpreter-test-dir" ) rescue nil
168
- res = create_directory ( "meterpreter-test-dir" )
170
+ dir_name = "#{ datastore [ "BaseFileName" ] } -dir"
171
+ session . fs . dir . rmdir ( dir_name ) rescue nil
172
+ res = create_directory ( dir_name )
169
173
if ( res )
170
- session . fs . dir . rmdir ( "meterpreter-test-dir" )
171
- res &&= !session . fs . dir . entries . include? ( "meterpreter-test-dir" )
174
+ session . fs . dir . rmdir ( dir_name )
175
+ res &&= !session . fs . dir . entries . include? ( dir_name )
172
176
vprint_status ( "Directory removed successfully" )
173
177
end
174
178
175
179
res
176
180
end
177
181
178
182
it "should change directories" do
179
- session . fs . dir . rmdir ( "meterpreter-test-dir" ) rescue nil
180
- res = create_directory ( "meterpreter-test-dir" )
183
+ dir_name = "#{ datastore [ "BaseFileName" ] } -dir"
184
+ session . fs . dir . rmdir ( dir_name ) rescue nil
185
+ res = create_directory ( dir_name )
181
186
182
187
old_wd = session . fs . dir . pwd
183
188
vprint_status ( "Old CWD: #{ old_wd } " )
184
189
185
190
if res
186
- session . fs . dir . chdir ( "meterpreter-test-dir" )
191
+ session . fs . dir . chdir ( dir_name )
187
192
new_wd = session . fs . dir . pwd
188
193
vprint_status ( "New CWD: #{ new_wd } " )
189
- res &&= ( new_wd =~ /meterpreter-test-dir$/ )
190
194
195
+ res &&= new_wd . include? dir_name
191
196
if res
192
197
session . fs . dir . chdir ( ".." )
193
198
wd = session . fs . dir . pwd
194
199
vprint_status ( "Back to old CWD: #{ wd } " )
195
200
end
196
201
end
197
- session . fs . dir . rmdir ( "meterpreter-test-dir" )
198
- res &&= !session . fs . dir . entries . include? ( "meterpreter-test-dir" )
202
+ session . fs . dir . rmdir ( dir_name )
203
+ res &&= !session . fs . dir . entries . include? ( dir_name )
199
204
vprint_status ( "Directory removed successfully" )
200
205
201
206
res
202
207
end
203
208
204
209
it "should create and remove files" do
205
210
res = true
206
- res &&= session . fs . file . open ( "meterpreter-test" , "wb" ) { |fd |
211
+ file_name = datastore [ "BaseFileName" ]
212
+ res &&= session . fs . file . open ( file_name , "wb" ) { |fd |
207
213
fd . write ( "test" )
208
214
}
209
215
210
- vprint_status ( "Wrote to meterpreter-test , checking contents" )
211
- res &&= session . fs . file . open ( "meterpreter-test" , "rb" ) { |fd |
216
+ vprint_status ( "Wrote to #{ file_name } , checking contents" )
217
+ res &&= session . fs . file . open ( file_name , "rb" ) { |fd |
212
218
contents = fd . read
213
219
vprint_status ( "Wrote #{ contents } " )
214
220
( contents == "test" )
215
221
}
216
222
217
- session . fs . file . rm ( "meterpreter-test" )
218
- res &&= !session . fs . dir . entries . include? ( "meterpreter-test" )
223
+ session . fs . file . rm ( file_name )
224
+ res &&= !session . fs . dir . entries . include? ( file_name )
219
225
220
226
res
221
227
end
222
228
223
229
it "should upload a file" do
224
230
res = true
225
-
226
- remote = "meterpreter-test-file.txt"
231
+ remote = "#{ datastore [ "BaseFileName" ] } -file.txt"
227
232
local = __FILE__
228
233
vprint_status ( "uploading" )
229
234
session . fs . file . upload_file ( remote , local )
@@ -249,31 +254,33 @@ def test_fs
249
254
if session . commands . include? ( "stdapi_fs_file_move" )
250
255
it "should move files" do
251
256
res = true
257
+ src_name = datastore [ "BaseFileName" ]
258
+ dst_name = "#{ datastore [ "BaseFileName" ] } -moved"
252
259
253
260
# Make sure we don't have leftovers from a previous run
254
- session . fs . file . rm ( "meterpreter-test" ) rescue nil
255
- session . fs . file . rm ( "meterpreter-test-moved" ) rescue nil
261
+ session . fs . file . rm ( src_name ) rescue nil
262
+ session . fs . file . rm ( dst_name ) rescue nil
256
263
257
264
# touch a new file
258
- fd = session . fs . file . open ( "meterpreter-test" , "wb" )
265
+ fd = session . fs . file . open ( src_name , "wb" )
259
266
fd . close
260
267
261
- session . fs . file . mv ( "meterpreter-test" , "meterpreter-test-moved" )
268
+ session . fs . file . mv ( src_name , dst_name )
262
269
entries = session . fs . dir . entries
263
- res &&= entries . include? ( "meterpreter-test-moved" )
264
- res &&= !entries . include? ( "meterpreter-test" )
270
+ res &&= entries . include? ( dst_name )
271
+ res &&= !entries . include? ( src_name )
265
272
266
273
# clean up
267
- session . fs . file . rm ( "meterpreter-test" ) rescue nil
268
- session . fs . file . rm ( "meterpreter-test-moved" ) rescue nil
274
+ session . fs . file . rm ( src_name ) rescue nil
275
+ session . fs . file . rm ( dst_name ) rescue nil
269
276
270
277
res
271
278
end
272
279
end
273
280
274
281
it "should do md5 and sha1 of files" do
275
282
res = true
276
- remote = "meterpreter-test -file.txt"
283
+ remote = "#{ datastore [ "BaseFileName" ] } -file.txt"
277
284
local = __FILE__
278
285
vprint_status ( "uploading" )
279
286
session . fs . file . upload_file ( remote , local )
0 commit comments