samr_RidWithAttributeArray res_groups;
} PAC_LOGON_INFO;
+ typedef [bitmap32bit] bitmap {
+ PAC_CREDENTIAL_NTLM_HAS_LM_HASH = 0x00000001,
+ PAC_CREDENTIAL_NTLM_HAS_NT_HASH = 0x00000002
+ } PAC_CREDENTIAL_NTLM_FLAGS;
+
+ typedef [public] struct {
+ [value(0)] uint32 version;
+ PAC_CREDENTIAL_NTLM_FLAGS flags;
+ [noprint] samr_Password lm_password;
+ [noprint] samr_Password nt_password;
+ } PAC_CREDENTIAL_NTLM_SECPKG;
+
+ typedef [public] struct {
+ lsa_String package_name;
+ uint32 credential_size;
+ [size_is(credential_size), noprint] uint8 *credential;
+ } PAC_CREDENTIAL_SUPPLEMENTAL_SECPKG;
+
+ typedef [public] struct {
+ uint32 credential_count;
+ [size_is(credential_count)] PAC_CREDENTIAL_SUPPLEMENTAL_SECPKG credentials[*];
+ } PAC_CREDENTIAL_DATA;
+
+ typedef [public] struct {
+ PAC_CREDENTIAL_DATA *data;
+ } PAC_CREDENTIAL_DATA_CTR;
+
+ typedef [public] struct {
+ [subcontext(0xFFFFFC01)] PAC_CREDENTIAL_DATA_CTR ctr;
+ } PAC_CREDENTIAL_DATA_NDR;
+
+ typedef [public] struct {
+ [value(0)] uint32 version;
+ uint32 encryption_type;
+ [flag(NDR_REMAINING)] DATA_BLOB encrypted_data;
+ } PAC_CREDENTIAL_INFO;
+
typedef struct {
lsa_String proxy_target;
uint32 num_transited_services;
typedef [public,v1_enum] enum {
PAC_TYPE_LOGON_INFO = 1,
+ PAC_TYPE_CREDENTIAL_INFO = 2,
PAC_TYPE_SRV_CHECKSUM = 6,
PAC_TYPE_KDC_CHECKSUM = 7,
PAC_TYPE_LOGON_NAME = 10,
typedef [public,nodiscriminant,gensize] union {
[case(PAC_TYPE_LOGON_INFO)][subcontext(0xFFFFFC01)] PAC_LOGON_INFO_CTR logon_info;
+ [case(PAC_TYPE_CREDENTIAL_INFO)] PAC_CREDENTIAL_INFO credential_info;
[case(PAC_TYPE_SRV_CHECKSUM)] PAC_SIGNATURE_DATA srv_cksum;
[case(PAC_TYPE_KDC_CHECKSUM)] PAC_SIGNATURE_DATA kdc_cksum;
[case(PAC_TYPE_LOGON_NAME)] PAC_LOGON_NAME logon_name;
[in] PAC_LOGON_INFO_CTR logon_info_ctr
);
+ [nopython] void decode_credential_data_ndr(
+ [in] PAC_CREDENTIAL_DATA_NDR credential_data_ndr
+ );
+
[nopython] void decode_pac_validate(
[in] PAC_Validate pac_validate
);