2.2.5.19 JOINPR_ENCRYPTED_USER_PASSWORD_AES

The JOINPR_ENCRYPTED_USER_PASSWORD_AES structure is the container for a password during the encoding, encryption, decryption, and decoding process.<10>

 typedef struct _JOINPR_ENCRYPTED_USER_PASSWORD_AES {
   UCHAR AuthData[64];
   UCHAR Salt[16];
   [range(0, MAX_PASSWORDBLOB_SIZE)] ULONG cbCipher;
   [size_is(cbCipher)] PUCHAR Cipher;
 } JOINPR_ENCRYPTED_USER_PASSWORD_AES,
   *PJOINPR_ENCRYPTED_USER_PASSWORD_AES;

AuthData: 64 bytes, the HMAC.

Salt: A 16 byte salt.

cbCipher: Length, in bytes, of the Cipher field.

Cipher: Encrypted password.

The following sections will demonstrate how to encrypt and encode a password and SMB session key into a JOINPR_ENCRYPTED_USER_PASSWORD_AES.