Skip to content

Commit d3ba84b

Browse files
committed
Add TLV_TYPE_FILE_HASH
1 parent cc87df9 commit d3ba84b

File tree

4 files changed

+9
-10
lines changed

4 files changed

+9
-10
lines changed

data/meterpreter/ext_server_stdapi.php

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
define("TLV_TYPE_FILE_PATH", TLV_META_TYPE_STRING | 1202);
2020
define("TLV_TYPE_FILE_MODE", TLV_META_TYPE_STRING | 1203);
2121
define("TLV_TYPE_FILE_SIZE", TLV_META_TYPE_UINT | 1204);
22+
define("TLV_TYPE_FILE_HASH", TLV_META_TYPE_RAW | 1206);
2223

2324
define("TLV_TYPE_STAT_BUF", TLV_META_TYPE_COMPLEX | 1220);
2425

@@ -533,8 +534,7 @@ function stdapi_fs_md5($req, &$pkt) {
533534
$md5 = md5(file_get_contents($path));
534535
}
535536
$md5 = pack("H*", $md5);
536-
# Ghetto abuse of file name type to indicate the md5 result
537-
packet_add_tlv($pkt, create_tlv(TLV_TYPE_FILE_NAME, $md5));
537+
packet_add_tlv($pkt, create_tlv(TLV_TYPE_FILE_HASH, $md5));
538538
return ERROR_SUCCESS;
539539
}
540540
}
@@ -552,8 +552,7 @@ function stdapi_fs_sha1($req, &$pkt) {
552552
$sha1 = sha1(file_get_contents($path));
553553
}
554554
$sha1 = pack("H*", $sha1);
555-
# Ghetto abuse of file name type to indicate the sha1 result
556-
packet_add_tlv($pkt, create_tlv(TLV_TYPE_FILE_NAME, $sha1));
555+
packet_add_tlv($pkt, create_tlv(TLV_TYPE_FILE_HASH, $sha1));
557556
return ERROR_SUCCESS;
558557
}
559558
}

data/meterpreter/ext_server_stdapi.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -307,6 +307,7 @@ class RTATTR(ctypes.Structure):
307307
TLV_TYPE_FILE_PATH = TLV_META_TYPE_STRING | 1202
308308
TLV_TYPE_FILE_MODE = TLV_META_TYPE_STRING | 1203
309309
TLV_TYPE_FILE_SIZE = TLV_META_TYPE_UINT | 1204
310+
TLV_TYPE_FILE_HASH = TLV_META_TYPE_RAW | 1206
310311

311312
TLV_TYPE_STAT_BUF = TLV_META_TYPE_COMPLEX | 1220
312313

@@ -1011,7 +1012,7 @@ def stdapi_fs_md5(request, response):
10111012
m = md5.new()
10121013
path = packet_get_tlv(request, TLV_TYPE_FILE_PATH)['value']
10131014
m.update(open(path, 'rb').read())
1014-
response += tlv_pack(TLV_TYPE_FILE_NAME, m.digest())
1015+
response += tlv_pack(TLV_TYPE_FILE_HASH, m.digest())
10151016
return ERROR_SUCCESS, response
10161017

10171018
@meterpreter.register_function
@@ -1061,7 +1062,7 @@ def stdapi_fs_sha1(request, response):
10611062
m = sha.new()
10621063
path = packet_get_tlv(request, TLV_TYPE_FILE_PATH)['value']
10631064
m.update(open(path, 'rb').read())
1064-
response += tlv_pack(TLV_TYPE_FILE_NAME, m.digest())
1065+
response += tlv_pack(TLV_TYPE_FILE_HASH, m.digest())
10651066
return ERROR_SUCCESS, response
10661067

10671068
@meterpreter.register_function

lib/rex/post/meterpreter/extensions/stdapi/fs/file.rb

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -152,8 +152,7 @@ def File.md5(path)
152152

153153
response = client.send_request(request)
154154

155-
# This is not really a file name, but a raw hash in bytes
156-
return response.get_tlv_value(TLV_TYPE_FILE_NAME)
155+
return response.get_tlv_value(TLV_TYPE_FILE_HASH)
157156
end
158157

159158
#
@@ -166,8 +165,7 @@ def File.sha1(path)
166165

167166
response = client.send_request(request)
168167

169-
# This is not really a file name, but a raw hash in bytes
170-
return response.get_tlv_value(TLV_TYPE_FILE_NAME)
168+
return response.get_tlv_value(TLV_TYPE_FILE_HASH)
171169
end
172170

173171
#

lib/rex/post/meterpreter/extensions/stdapi/tlv.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ module Stdapi
3030
TLV_TYPE_FILE_MODE = TLV_META_TYPE_STRING | 1203
3131
TLV_TYPE_FILE_SIZE = TLV_META_TYPE_UINT | 1204
3232
TLV_TYPE_FILE_SHORT_NAME = TLV_META_TYPE_STRING | 1205
33+
TLV_TYPE_FILE_HASH = TLV_META_TYPE_RAW | 1206
3334

3435
TLV_TYPE_STAT_BUF = TLV_META_TYPE_COMPLEX | 1220
3536

0 commit comments

Comments
 (0)