code: public function encodeBlob(DateTime $time, $client_challenge, $target_info)
      {
          $blob_data = '';
  
          $blob_data .= pack('C', static::BLOB_RESPONSE_VERSION);
          $blob_data .= pack('C', static::BLOB_HIGHEST_RESPONSE_VERSION);
          $blob_data .= pack('x6');
          $blob_data .= pack('V', $time->getTimestamp());
          $blob_data .= pack('x4'); // Null-pad the timestamp, we don't need microsecond precision
          $blob_data .= pack('a8', $client_challenge);
          $blob_data .= pack('x4');
          $blob_data .= pack('a*', $target_info);
          $blob_data .= pack('x4');
  
          return $blob_data;
      }
docs: Encodes the "blob" (also known as "temp" in the official documentation).
  
  This value is used in calculating/generating both the NT response and the
  base session key.
  
  @param DateTime $time The current time.
  @param string $client_challenge A randomly generated 64-bit (8-byte)
  unsigned client-generated binary string.
  @param string $target_info The "TargetInfo" data sent by the server and
  encoded in the server challenge.
  @return string The encoded blob as a binary string.