mirror of
https://github.com/gentilkiwi/mimikatz
synced 2024-12-15 02:24:46 +00:00
8268f37387
[new] mimikatz kerberos::golden now supports "Claims"
94 lines
3.3 KiB
C
94 lines
3.3 KiB
C
#pragma once
|
|
#include "kull_m_rpc.h"
|
|
|
|
typedef wchar_t *CLAIM_ID;
|
|
typedef wchar_t **PCLAIM_ID;
|
|
|
|
typedef enum _CLAIM_TYPE {
|
|
CLAIM_TYPE_INT64 = 1,
|
|
CLAIM_TYPE_UINT64 = 2,
|
|
CLAIM_TYPE_STRING = 3,
|
|
CLAIM_TYPE_BOOLEAN = 6
|
|
} CLAIM_TYPE, *PCLAIM_TYPE;
|
|
|
|
typedef enum _CLAIMS_SOURCE_TYPE {
|
|
CLAIMS_SOURCE_TYPE_AD = 1,
|
|
CLAIMS_SOURCE_TYPE_CERTIFICATE = ( CLAIMS_SOURCE_TYPE_AD + 1 )
|
|
} CLAIMS_SOURCE_TYPE;
|
|
|
|
typedef enum _CLAIMS_COMPRESSION_FORMAT {
|
|
CLAIMS_COMPRESSION_FORMAT_NONE = 0,
|
|
CLAIMS_COMPRESSION_FORMAT_LZNT1 = 2,
|
|
CLAIMS_COMPRESSION_FORMAT_XPRESS = 3,
|
|
CLAIMS_COMPRESSION_FORMAT_XPRESS_HUFF = 4
|
|
} CLAIMS_COMPRESSION_FORMAT;
|
|
|
|
typedef struct _CLAIM_ENTRY {
|
|
CLAIM_ID Id;
|
|
CLAIM_TYPE Type;
|
|
union
|
|
{
|
|
struct _ci64
|
|
{
|
|
ULONG ValueCount;
|
|
LONG64 *Int64Values;
|
|
} ci64;
|
|
struct _cui64
|
|
{
|
|
ULONG ValueCount;
|
|
ULONG64 *Uint64Values;
|
|
} cui64;
|
|
struct _cs
|
|
{
|
|
ULONG ValueCount;
|
|
LPWSTR *StringValues;
|
|
} cs;
|
|
struct _cb
|
|
{
|
|
ULONG ValueCount;
|
|
ULONG64 *BooleanValues;
|
|
} cb;
|
|
} Values;
|
|
} CLAIM_ENTRY, *PCLAIM_ENTRY;
|
|
|
|
typedef struct _CLAIMS_ARRAY {
|
|
CLAIMS_SOURCE_TYPE usClaimsSourceType;
|
|
ULONG ulClaimsCount;
|
|
PCLAIM_ENTRY ClaimEntries;
|
|
} CLAIMS_ARRAY, *PCLAIMS_ARRAY;
|
|
|
|
typedef struct _CLAIMS_SET {
|
|
ULONG ulClaimsArrayCount;
|
|
PCLAIMS_ARRAY ClaimsArrays;
|
|
USHORT usReservedType;
|
|
ULONG ulReservedFieldSize;
|
|
BYTE *ReservedField;
|
|
} CLAIMS_SET, *PCLAIMS_SET;
|
|
|
|
typedef struct _CLAIMS_SET_METADATA {
|
|
ULONG ulClaimsSetSize;
|
|
BYTE *ClaimsSet;
|
|
CLAIMS_COMPRESSION_FORMAT usCompressionFormat;
|
|
ULONG ulUncompressedClaimsSetSize;
|
|
USHORT usReservedType;
|
|
ULONG ulReservedFieldSize;
|
|
BYTE *ReservedField;
|
|
} CLAIMS_SET_METADATA, *PCLAIMS_SET_METADATA;
|
|
|
|
size_t PCLAIMS_SET_METADATA_AlignSize(handle_t _MidlEsHandle, PCLAIMS_SET_METADATA * _pType);
|
|
void PCLAIMS_SET_METADATA_Encode(handle_t _MidlEsHandle, PCLAIMS_SET_METADATA * _pType);
|
|
void PCLAIMS_SET_METADATA_Decode(handle_t _MidlEsHandle, PCLAIMS_SET_METADATA * _pType);
|
|
void PCLAIMS_SET_METADATA_Free(handle_t _MidlEsHandle, PCLAIMS_SET_METADATA * _pType);
|
|
|
|
size_t PCLAIMS_SET_AlignSize(handle_t _MidlEsHandle, PCLAIMS_SET * _pType);
|
|
void PCLAIMS_SET_Encode(handle_t _MidlEsHandle, PCLAIMS_SET * _pType);
|
|
void PCLAIMS_SET_Decode(handle_t _MidlEsHandle, PCLAIMS_SET * _pType);
|
|
void PCLAIMS_SET_Free(handle_t _MidlEsHandle, PCLAIMS_SET * _pType);
|
|
|
|
#define kull_m_rpc_DecodeClaimsSetMetaData(data, size, pObject) kull_m_rpc_Generic_Decode(data, size, pObject, (PGENERIC_RPC_DECODE) PCLAIMS_SET_METADATA_Decode)
|
|
#define kull_m_rpc_FreeClaimsSetMetaData(pObject) kull_m_rpc_Generic_Free(pObject, (PGENERIC_RPC_FREE) PCLAIMS_SET_METADATA_Free)
|
|
#define kull_m_rpc_EncodeClaimsSetMetaData(pObject, data, size) kull_m_rpc_Generic_Encode(pObject, data, size, (PGENERIC_RPC_ENCODE) PCLAIMS_SET_METADATA_Encode, (PGENERIC_RPC_ALIGNSIZE) PCLAIMS_SET_METADATA_AlignSize)
|
|
|
|
#define kull_m_rpc_DecodeClaimsSet(data, size, pObject) kull_m_rpc_Generic_Decode(data, size, pObject, (PGENERIC_RPC_DECODE) PCLAIMS_SET_Decode)
|
|
#define kull_m_rpc_FreeClaimsSet(pObject) kull_m_rpc_Generic_Free(pObject, (PGENERIC_RPC_FREE) PCLAIMS_SET_Free)
|
|
#define kull_m_rpc_EncodeClaimsSet(pObject, data, size) kull_m_rpc_Generic_Encode(pObject, data, size, (PGENERIC_RPC_ENCODE) PCLAIMS_SET_Encode, (PGENERIC_RPC_ALIGNSIZE) PCLAIMS_SET_AlignSize) |