From afecde20d5d01e4bccc3b5415c2adf78d2904973 Mon Sep 17 00:00:00 2001 From: Tim W Date: Mon, 22 Mar 2021 22:16:32 +0000 Subject: [PATCH 1/2] Fix #14888, fix downloading a utf-8 directory directly --- lib/rex/post/meterpreter/extensions/stdapi/fs/dir.rb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/rex/post/meterpreter/extensions/stdapi/fs/dir.rb b/lib/rex/post/meterpreter/extensions/stdapi/fs/dir.rb index c6c1c3f821a4..b8046aa28841 100644 --- a/lib/rex/post/meterpreter/extensions/stdapi/fs/dir.rb +++ b/lib/rex/post/meterpreter/extensions/stdapi/fs/dir.rb @@ -258,6 +258,8 @@ def Dir.unlink(path) # local directory, optionally in a recursive fashion. # def Dir.download(dst, src, opts = {}, force = true, glob = nil, &stat) + src.force_encoding('UTF-8') + dst.force_encoding('UTF-8') tries_cnt = 0 continue = opts["continue"] From 95c384c0cb495dcef4d880d03353417d84503e73 Mon Sep 17 00:00:00 2001 From: Tim W Date: Tue, 23 Mar 2021 17:35:25 +0000 Subject: [PATCH 2/2] fix downloading utf-8 file into a ascii name --- lib/rex/post/meterpreter/extensions/stdapi/fs/file.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/rex/post/meterpreter/extensions/stdapi/fs/file.rb b/lib/rex/post/meterpreter/extensions/stdapi/fs/file.rb index b30d7e20c1c2..eb6a7204d1a1 100644 --- a/lib/rex/post/meterpreter/extensions/stdapi/fs/file.rb +++ b/lib/rex/post/meterpreter/extensions/stdapi/fs/file.rb @@ -325,6 +325,7 @@ def File.is_glob?(name) def File.download(dest, src_files, opts = {}, &stat) timestamp = opts["timestamp"] [*src_files].each { |src| + src.force_encoding('UTF-8') if (::File.basename(dest) != File.basename(src)) # The destination when downloading is a local file so use this # system's separator