windows-nt/Source/XPSP1/NT/ds/security/protocols/kerberos/parser/kerbparser.h
2020-09-26 16:20:57 +08:00

1918 lines
49 KiB
C

#include <windows.h>
#include <string.h>
#include <bh.h>
#include <netmon.h>
#define FORMAT_BUFFER_SIZE 80
// Variables used in kerbparser.c to check
// for continuation packets.
HPROTOCOL hTCP = NULL;
HPROTOCOL hUDP = NULL;
// Begin Definitions for Encryption types
// Leaving the negative values out until I can figure out
// why some are labeled negative and some positive.
/*
#define KERB_ETYPE_RC4_MD4 -128
#define KERB_ETYPE_RC4_PLAIN2 -129
#define KERB_ETYPE_RC4_LM -130
#define KERB_ETYPE_RC4_SHA -131
#define KERB_ETYPE_DES_PLAIN -132
*/
#define KERB_ETYPE_RC4_HMAC_OLD 0x7B //-133
#define KERB_ETYPE_RC4_PLAIN_OLD 0x7A //-134
#define KERB_ETYPE_RC4_HMAC_OLD_EXP 0x79 //-135
#define KERB_ETYPE_RC4_PLAIN_OLD_EXP 0x78 //-136
#define KERB_ETYPE_RC4_PLAIN 0x77 //-140
#define KERB_ETYPE_RC4_PLAIN_EXP 0x76 //-141
#define KERB_ETYPE_NULL 0
#define KERB_ETYPE_DES_CBC_CRC 1
#define KERB_ETYPE_DES_CBC_MD4 2
#define KERB_ETYPE_DES_CBC_MD5 3
#define KERB_ETYPE_DSA_SHA1_CMS 9
#define KERB_ETYPE_RSA_MD5_CMS 10
#define KERB_ETYPE_RSA_SHA1_CMS 11
#define KERB_ETYPE_RC2_CBC_ENV 12
#define KERB_ETYPE_RSA_ENV 13
#define KERB_ETYPE_RSA_ES_OEAP_ENV 14
#define KERB_ETYPE_DES_EDE3_CBC_ENV 15
#define KERB_ETYPE_DES_CBC_MD5_NT 20
#define KERB_ETYPE_RC4_HMAC_NT 23
#define KERB_ETYPE_RC4_HMAC_NT_EXP 24
#define KERB_ETYPE_OLD_RC4_MD4 128
#define KERB_ETYPE_OLD_RC4_PLAIN 129
#define KERB_ETYPE_OLD_RC4_LM 130
#define KERB_ETYPE_OLD_RC4_SHA 131
#define KERB_ETYPE_OLD_DES_PLAIN 132
/* These are in kerbcon.h as well but there is a conflict
with the ones listed above. Worry about it later.
#define KERB_ETYPE_DSA_SIGN 8
#define KERB_ETYPE_RSA_PRIV 9
#define KERB_ETYPE_RSA_PUB 10
#define KERB_ETYPE_RSA_PUB_MD5 11
#define KERB_ETYPE_RSA_PUB_SHA1 12
#define KERB_ETYPE_PKCS7_PUB 13
*/
// In use types
// End Definition of encryption types
#define ASN1_KRB_AS_REQ 0x0A
#define ASN1_KRB_AS_REP 0x0B
#define ASN1_KRB_TGS_REQ 0x0C
#define ASN1_KRB_TGS_REP 0x0D
#define ASN1_KRB_AP_REQ 0x0E
#define ASN1_KRB_AP_REP 0x0F
#define ASN1_KRB_SAFE 0x14
#define ASN1_KRB_PRIV 0x15
#define ASN1_KRB_CRED 0x16
#define ASN1_KRB_ERROR 0x1E
#define UNIVERSAL 0x00
#define APPLICATION 0x40
#define CONTEXT_SPECIFIC 0x80
#define PRIVATE 0xC0
// Creating this function to change the format of GeneralizedTime
LPBYTE DispSumTime(HFRAME hFrame, LPBYTE TempFrame, int ClassValue, int OffSet, DWORD TypeVal);
LPBYTE TempFrame, TempFramePadata, TempFrameReq, TempFrameReq2;
DWORD TypeVal, TypeVal2, TypeVal3;
#define TIME_FORMAT_STRING "%c%c/%c%c/%c%c%c%c %c%c:%c%c:%c%c UTC Time Zone"
#define TIME_FORMAT_SIZE sizeof("00/00/0000 00:00:00 UTC Time Zone")
#define MAX_SERVER_NAME_SEGMENTS 100
LPPROTOCOLINFO ProtoInfo;
BOOL TestForUDP;
//char test[1];
char MsgType[ sizeof "Didn't recognize" ]/*, MsgType2[24]*/;
//char PrinName[32];
BYTE LongSize, TempStore, TempStoreEF;
int x, OffSet, lValue, ClassValue;
WORD TempLen;
// Definitions for KDC-REP
BYTE TempRepCname, TempRepGString, TempReqPadata, TempReq;
int lValueRepMsg, lValueCname, lValuePadata, lValueReq;
// Following enum is for the variables of KDC-REP
enum{
PvnoKdcRep = 0,
MsgTypeKdcRep,
PaDataKdcRep,
CrealmKdcRep,
CnameKdcRep,
TicketKdcRep,
EncpartKdcRep
};
// End definitions for KDC-REP
// Following enum is for Variables of ticket
enum{
tktvno = 0,
realm,
sname,
encpart
};
enum{
app1 = 1
};
enum{
PVNO =1,
MSGTYPE,
PADATA,
REQBODY
};
enum{
nametype = 0,
namestring
};
// Set values for Principal Name types
enum{
NT_UKNOWN = 0,
NT_PRINCIPAL,
NT_SRV_INST,
NT_SRV_HST,
NT_SRV_XHST,
NT_UID,
NT_X500_PRINCIPAL
};
// Enum to set the Tag values for KRB-ERROR
enum{
PvnoErr = 0,
MsgtypeErr,
CtimeErr,
CusecErr,
StimeErr,
SusecErr,
ErrorcodeErr,
CrealmErr,
CnameErr,
RealmErr,
SnameErr,
EtextErr,
EdataErr
};
// Enum to assign values to Kerberos Errors
enum{
KDC_ERR_NONE = 0, // 0
KDC_ERR_NAME_EXP, // 1
KDC_ERR_SERVICE_EXP, // 2
KDC_ERR_BAD_PVNO, // 3
KDC_ERR_C_OLD_MAST_KVNO, // 4
KDC_ERR_S_OLD_MAST_KVNO, // 5
KDC_ERR_C_PRINCIPAL_UNKNOWN, // 6
KDC_ERR_S_PRINCIPAL_UNKNOWN, // 7
KDC_ERR_PRINCIPAL_NOT_UNIQUE, // 8
KDC_ERR_NULL_KEY, // 9
KDC_ERR_CANNOT_POSTDATE, // 10
KDC_ERR_NEVER_VALID, // 11
KDC_ERR_POLICY, // 12
KDC_ERR_BADOPTION, // 13
KDC_ERR_ETYPE_NOSUPP, // 14
KDC_ERR_SUMTYPE_NOSUPP, // 15
KDC_ERR_PADATA_TYPE_NOSUPP, // 16
KDC_ERR_TRTYPE_NOSUPP, // 17
KDC_ERR_CLIENT_REVOKED, // 18
KDC_ERR_SERVICE_REVOKED, // 19
KDC_ERR_TGT_REVOKED, // 20
KDC_ERR_CLIENT_NOTYET, // 21
KDC_ERR_SERVICE_NOTYET, // 22
KDC_ERR_KEY_EXPIRED, // 23
KDC_ERR_PREAUTH_FAILED, // 24
KDC_ERR_PREAUTH_REQUIRED, // 25
KDC_ERR_SERVER_NOMATCH, // 26
KDC_ERR_MUST_USE_USER2USER, // 27
KDC_ERR_PATH_NOT_ACCEPTED, // 28
KDC_ERR_SVC_UNAVAILABLE, // 29
KRB_AP_ERR_BAD_INTEGRITY = 31, // 31
KRB_AP_ERR_TKT_EXPIRED, // 32
KRB_AP_ERR_TKT_NYV, // 33
KRB_AP_ERR_REPEAT, // 34
KRB_AP_ERR_NOT_US, // 35
KRB_AP_ERR_BADMATCH, // 36
KRB_AP_ERR_SKEW, // 37
KRB_AP_ERR_BADADDR, // 38
KRB_AP_ERR_BADVERSION, // 39
KRB_AP_ERR_MSG_TYPE, // 40
KRB_AP_ERR_MODIFIED, // 41
KRB_AP_ERR_BADORDER, // 42
KRB_AP_ERR_BADKEYVER = 44, // 44
KRB_AP_ERR_NOKEY, // 45
KRB_AP_ERR_MUT_FAIL, // 46
KRB_AP_ERR_BADDIRECTION, // 47
KRB_AP_ERR_METHOD, // 48
KRB_AP_ERR_BADSEQ, // 49
KRB_AP_ERR_INAPP_CKSUM, // 50
KRB_AP_PATH_NOT_ACCEPTED, // 51
KRB_ERR_RESPONSE_TOO_BIG, // 52
KRB_ERR_GENERIC = 60, // 60
KRB_ERR_FIELD_TOOLONG, // 61
KDC_ERROR_CLIENT_NOT_TRUSTED, // 62
KDC_ERROR_KDC_NOT_TRUSTED, // 63
KDC_ERROR_INVALID_SIG, // 64
KDC_ERROR_KEY_TOO_WEAK, // 65
KDC_ERR_CERTIFICATE_MISMATCH, // 66
KDC_AP_ERROR_NO_TGT, // 67
KDC_ERR_WRONG_REALM, // 68
KDC_AP_ERR_USER_TO_USER_REQURED, // 69
KDC_ERR_CANT_VERIFY_CERTIFICATE, // 70
KDC_ERR_INVALID_CERTIFICATE, // 71
KDC_ERR_REVOKED_CERTIFICATE, // 72
KDC_ERR_REVOCATION_STATUS_UNKNOWN, //73
KDC_ERR_REVOCATION_STATUS_UNAVAILABLE, // 74
KDC_ERR_CLIENT_NAME_MISMATCH, // 75
KDC_ERR_KDC_NAME_MISMATCH // 76
};
// End Enum for error codes
// Values of padata type
enum{
PA_TGS_REQ = 1,
PA_ENC_TIMESTAMP, // 2
PA_PW_SALT, // 3
Reserved, // 4
PA_ENC_UNIX_TIME, // 5
PA_SANDIA_SECUREID, // 6
PA_SESAME, // 7
PA_OSF_DCE, // 8
PA_CYBERSAFE_SECUREID, // 9
PA_AFS3_SALT, // 0x0A
PA_ETYPE_INFO, // 0x0B
SAM_CHALLENGE, // 0x0C
SAM_RESPONSE, // 0x0D
PA_PK_AS_REQ, // 0x0E
PA_PK_AS_REP, // 0x0F
PA_PK_AS_SIGN, // 0x10
PA_PK_KEY_REQ, // 0x11
PA_PK_KEY_REP, // 0x12
PA_USE_SPECIFIELD_KVNO, // 0x13
SAM_REDIRECT, // 0x14
PA_GET_FROM_TYPED_DATA // 0x15
};
enum{
kdcoptions = 0,
cnamebody,
realmbody,
snamebody,
frombody,
tillbody,
rtimebody,
noncebody,
etypebody,
addressesbody,
encauthdatabody,
addtixbody
};
enum{
addrtype = 0,
address
};
enum{
etype = 0,
kvno,
cipher
};
enum{
PvnoApReq = 0,
MsgTypeApReq,
ApOptionsApReq,
TicketApReq,
AuthenticatorApReq
};
enum { ticket = 1};
enum{
Tixtkt_vno = 0,
TixRealm,
TixSname,
TixEnc_part
};
enum{
methodtype = 0,
methoddata
};
// kf 8/10 Rem the ifdef and trying to prevent global variables
// Using this statement to prevent multiple definitions
//#ifdef MAINPROG
// Defining these here while troubleshooting a report Access Violation
// Need to define the values locally and do away with as many of the
// Global variables as possible.
//KF 10/15 CHANGING TO LABELED_BIT IN ORDER TO TRY AND PHASE OUT
// QUAL_BITFIELDS AND USE QUAL_FLAGS. THERE ARE APPROX 15 BITFIELD
// USED IN KERBEROSDATABASE. I WILL COMMENT THERE WHERE I CHANGED TO FLAGS
// BUT I WILL NOT COMMENT THE LABLELS ANY MORE. ALL LABELED_BYTES HAVE BEEN
// CHANGED TO LABELED_BIT
//LABELED_BYTE ClassTag[] = {
LABELED_BYTE ClassTag[] = {
{0xC0, NULL},
{UNIVERSAL, "Class Tag (Universal)"},
{APPLICATION, "Class Tag (Application)"},
{CONTEXT_SPECIFIC, "Class Tag (Context Specific)"},
{PRIVATE, "Class Tag (Private)"},
};
SET ClassTagSet = { (sizeof(ClassTag)/sizeof(LABELED_BYTE)), ClassTag };
LABELED_BIT PC[] = {
{ 5, "P/C (Primitive)", "P/C (Constructed)"},
};
SET PCSet = { sizeof(PC)/sizeof(LABELED_BIT), PC };
LABELED_BYTE KrbMsgType[] = {
{0x1F, NULL},
{ASN1_KRB_AS_REQ, "KRB_AS_REQ"},
{ASN1_KRB_AS_REP, "KRB_AS_REP"},
{ASN1_KRB_TGS_REQ, "KRB_TGS_REQ"},
{ASN1_KRB_TGS_REP, "KRB_TGS_REP"},
{ASN1_KRB_AP_REQ, "KRB_AP_REQ"},
{ASN1_KRB_AP_REP, "KRB_AP_REP"},
{ASN1_KRB_SAFE, "KRB_SAFE"},
{ASN1_KRB_PRIV, "KRB_PRIV"},
{ASN1_KRB_CRED, "KRB_CRED"},
{ASN1_KRB_ERROR, "KRB_ERROR"}
};
SET KrbMsgTypeSet = { (sizeof(KrbMsgType)/sizeof(LABELED_BYTE)), KrbMsgType };
LABELED_BIT Length[] = {
{ 7, "Short Form", "Long Form"},
};
SET LengthSet = { sizeof(Length)/sizeof(LABELED_BIT), Length };
LABELED_BYTE UniversalTag[] = {
{0x1F, NULL},
{0x01, "BOOLEAN"},
{0x02, "INTEGER"},
{0x03, "BIT STRING"},
{0x04, "OCTET STRING"},
{0x05, "NULL"},
{0x06, "OBJECT IDENTIFIER"},
{0x07, "ObjectDescriptor"},
{0x08, "EXTERNAL"},
{0x09, "REAL"},
{0x0A, "ENUMERATED"},
{0x10, "SEQUENCE/SEQUENCE OF"},
{0x11, "SET/SET OF"},
{0x12, "NumericString"},
{0x13, "PrintableString"},
{0x14, "T61String"},
{0x15, "VideotexString"},
{0x16, "IA5String"},
{0x17, "UTCTime"},
{0x18, "GeneralizedTime"},
{0x19, "GraphicString"},
{0x1A, "VisibleString"},
{0x1B, "GeneralString"}
};
SET UniversalTagSet = { sizeof(UniversalTag)/sizeof(LABELED_BYTE), UniversalTag };
LABELED_BYTE KdcReqTag[] = {
{0x1F, NULL},
{PVNO, "Protocol Version 5 (pvno[1])"},
{MSGTYPE, "Kerberos Message Type (msg-type[2])"},
{PADATA, "Pre-Authentication Data (padata[3])"},
{REQBODY, "KDC-Req-Body (req-body[4])"}
};
SET KdcReqTagSet = { sizeof(KdcReqTag)/sizeof(LABELED_BYTE), KdcReqTag };
LABELED_BYTE PaDataTag[] = {
{0x1F, NULL},
{0x01, "padata-type[1]"},
{0x02, "padata-value[2]"}
};
SET PaDataTagSet = { sizeof(PaDataTag)/sizeof(LABELED_BYTE), PaDataTag };
// For kdcrep packet
LABELED_BYTE KdcRepTag[] = {
{0x1F, NULL},
{PvnoKdcRep, "Protocol Version 5 (pvno[0])"},
{MsgTypeKdcRep, "Kerberos Message Type (msg-type[1])"},
{PaDataKdcRep, "Pre-Auth (padata[2])"},
{CrealmKdcRep, "Realm (crealm[3])"},
{CnameKdcRep, "Principal ID (cname[4])"},
{TicketKdcRep, "Ticket (ticket[5])"},
{EncpartKdcRep, "CipherText (enc-part[6])"}
};
SET KdcRepTagSet = {sizeof(KdcRepTag)/sizeof(LABELED_BYTE), KdcRepTag};
LABELED_BYTE PrincipalName[] = {
{0x1F, NULL},
{nametype, "Name Type (name-type[0])"},
{namestring, "Name String (name-string[1])"}
};
SET PrincipalNameSet = {sizeof(PrincipalName)/sizeof(LABELED_BYTE), PrincipalName};
LABELED_BYTE PrincNameType[] = {
{0x1F, NULL},
{NT_UKNOWN, "NT_UNKNOWN (Name Type not Known)"},
{NT_PRINCIPAL, "NT_PRINCIPAL (Name of Principal)"},
{NT_SRV_INST, "NT_SRV_INST (Service & other unique Instance)"},
{NT_SRV_HST, "NT_SRV_HST (Serv with Host Name as Instance)"},
{NT_SRV_XHST, "NT_SRV_XHST (Service with Host as remaining components)"},
{NT_UID, "NT_UID (Unique ID)"},
{NT_X500_PRINCIPAL, "NT_X500_PRINCIPAL (Encoded X.509 Distinguished Name)"}
};
SET PrincNameTypeSet = {sizeof(PrincNameType)/sizeof(LABELED_BYTE), PrincNameType};
LABELED_BYTE KrbTicket[] = {
{0x1F, NULL},
{tktvno, "Ticket Version (tkt-vno[0])"},
{realm, "Realm (realm[1])"},
{sname, "Server ID (sname[2])"},
{encpart, "Cipher Text (enc-part[3])"}
};
SET KrbTicketSet = {sizeof(KrbTicket)/sizeof(LABELED_BYTE), KrbTicket};
LABELED_BYTE KrbTixApp1 [] = {
{0x1F, NULL},
{app1, "Ticket ::= [APPLICATION 1]"}
};
SET KrbTixApp1Set = {sizeof(KrbTixApp1)/sizeof(LABELED_BYTE), KrbTixApp1};
LABELED_BYTE KrbErrTag [] = {
{0x1F, NULL},
{PvnoErr, "Protocol Version (pvno[0])"},
{MsgtypeErr, "Message Type (msg-type[1])"},
{CtimeErr, "Client Current Time (ctime[2])"},
{CusecErr, "MicroSec on Client (cusec[3])"},
{StimeErr, "Server Current Time (stime[4])"},
{SusecErr, "MicroSec on Server (susec[5])"},
{ErrorcodeErr, "Error Code (error-code[6])"},
{CrealmErr, "Client Realm (crealm[7])"},
{CnameErr, "Client Name (cname[8])"},
{RealmErr, "Correct Realm (realm[9])"},
{SnameErr, "Server Name (sname[10])"},
{EtextErr, "Addtional Error Info (etext[11])"},
{EdataErr, "Error Handling Data (edata[12])"}
};
SET KrbErrTagSet = {sizeof(KrbErrTag)/sizeof(LABELED_BYTE), KrbErrTag};
LABELED_BYTE KrbErrCode [] = {
{0xFF, NULL},
{KDC_ERR_NONE, "No error"}, // 0
{KDC_ERR_NAME_EXP, "Client's entry in database has expired"}, // 1
{KDC_ERR_SERVICE_EXP, "Server's entry in database has expired"},// 2
{KDC_ERR_BAD_PVNO, "Requested protocol ver. number not supported"}, // 3
{KDC_ERR_C_OLD_MAST_KVNO, "Client's key encrypted in old master key"}, // 4
{KDC_ERR_S_OLD_MAST_KVNO, "Server's key encrypted in old master key"}, //5
{KDC_ERR_C_PRINCIPAL_UNKNOWN, "Client not found in Kerberos database"},//6
{KDC_ERR_S_PRINCIPAL_UNKNOWN, "Server not found in Kerberos database"},//7
{KDC_ERR_PRINCIPAL_NOT_UNIQUE, "Multiple principal entries in database"},//8
{KDC_ERR_NULL_KEY, "The client or server has a null key"},//9
{KDC_ERR_CANNOT_POSTDATE, "Ticket not eligible for postdating"},//10
{KDC_ERR_NEVER_VALID, "Requested start time is later than end time"},//11
{KDC_ERR_POLICY, "KDC policy rejects request"}, //12
{KDC_ERR_BADOPTION, "KDC cannot accommodate requested option"}, //13
{KDC_ERR_ETYPE_NOSUPP, "KDC has no support for encryption type"}, //14
{KDC_ERR_SUMTYPE_NOSUPP, "KDC has no support for checksum type"}, //15
{KDC_ERR_PADATA_TYPE_NOSUPP, "KDC has no support for padata type"}, //16
{KDC_ERR_TRTYPE_NOSUPP, "KDC has no support for transited type"}, //17
{KDC_ERR_CLIENT_REVOKED, "Clients credentials have been revoked"}, //18
{KDC_ERR_SERVICE_REVOKED, "Credentials for server have been revoked"}, //19
{KDC_ERR_TGT_REVOKED, "TGT has been revoked"}, //20
{KDC_ERR_CLIENT_NOTYET, "Client not yet valid try again later"}, //21
{KDC_ERR_SERVICE_NOTYET, "Server not yet valid try again later"}, //22
{KDC_ERR_KEY_EXPIRED, "Password has expired change password to reset"}, //23
{KDC_ERR_PREAUTH_FAILED, "Pre-authentication information was invalid"}, //24
{KDC_ERR_PREAUTH_REQUIRED, "Additional preauthentication required"}, //25
{KDC_ERR_SERVER_NOMATCH, "Requested Server and ticket don't match"}, // 26
{KDC_ERR_MUST_USE_USER2USER, "Server principal valid for user2user only"}, // 27
{KDC_ERR_PATH_NOT_ACCEPTED, "KDC Policy rejects transited patth"}, //28
{KDC_ERR_SVC_UNAVAILABLE, "A service is not available"}, // 29
{KRB_AP_ERR_BAD_INTEGRITY, "Integrity check on decrypted field failed"}, //31
{KRB_AP_ERR_TKT_EXPIRED, "Ticket expired"}, //32
{KRB_AP_ERR_TKT_NYV, "Ticket not yet valid"}, //33
{KRB_AP_ERR_REPEAT, "Request is a replay"}, //34
{KRB_AP_ERR_NOT_US, "The ticket isn't for us"}, //35
{KRB_AP_ERR_BADMATCH, "Ticket and authenticator don't match"}, //36
{KRB_AP_ERR_SKEW, "Clock skew too great"}, // 37
{KRB_AP_ERR_BADADDR, "Incorrect net address"}, // 38
{KRB_AP_ERR_BADVERSION, "Protocol version mismatch"}, // 39
{KRB_AP_ERR_MSG_TYPE, "Invalid msg type"}, // 40
{KRB_AP_ERR_MODIFIED, "Message stream modified"}, //41
{KRB_AP_ERR_BADORDER, "Message out of order"}, //42
{KRB_AP_ERR_BADKEYVER, "Specified version of key is not available"}, //44
{KRB_AP_ERR_NOKEY, "Service key not available"}, //45
{KRB_AP_ERR_MUT_FAIL, "Mutual authentication failed"}, // 46
{KRB_AP_ERR_BADDIRECTION, "Incorrect message direction"}, // 47
{KRB_AP_ERR_METHOD, "Alternative authentication method required"}, // 48
{KRB_AP_ERR_BADSEQ, "Incorrect sequence number in message"}, // 49
{KRB_AP_ERR_INAPP_CKSUM, "Inappropriate type of checksum in message"}, // 50
{KRB_AP_PATH_NOT_ACCEPTED, "Policy rejects transited path"}, // 51
{KRB_ERR_RESPONSE_TOO_BIG, "Response too big for UDP, retry with TCP"}, // 52
{KRB_ERR_GENERIC, "Generic error"}, // 60
{KRB_ERR_FIELD_TOOLONG, "Field is too long for this implementation"}, // 61
{KDC_ERROR_CLIENT_NOT_TRUSTED, "Client is not trusted"}, // 62
{KDC_ERROR_KDC_NOT_TRUSTED, "KDC is not trusted"}, // 63
{KDC_ERROR_INVALID_SIG, "Invalid signature"}, // 64
{KDC_ERROR_KEY_TOO_WEAK, "Key is too weak"}, // 65
{KDC_ERR_CERTIFICATE_MISMATCH, "Certificate does not match"}, // 66
{KDC_AP_ERROR_NO_TGT, "No TGT"}, // 67
{KDC_ERR_WRONG_REALM, "Wrong realm"}, // 68
{KDC_AP_ERR_USER_TO_USER_REQURED, "User to User required"}, // 69
{KDC_ERR_CANT_VERIFY_CERTIFICATE, "Can't verify certificate"}, // 70
{KDC_ERR_INVALID_CERTIFICATE, "Invalid certificate"}, // 71
{KDC_ERR_REVOKED_CERTIFICATE, "Revoked certificate"}, // 72
{KDC_ERR_REVOCATION_STATUS_UNKNOWN, "Revocation status unknown"}, //73
{KDC_ERR_REVOCATION_STATUS_UNAVAILABLE, "Revocation status unavailable"}, // 74
{KDC_ERR_CLIENT_NAME_MISMATCH, "Client name mismatch"}, //75
{KDC_ERR_KDC_NAME_MISMATCH, "KDC name mismatch"} // 76
};
SET KrbErrCodeSet = {sizeof(KrbErrCode)/sizeof(LABELED_BYTE), KrbErrCode};
LABELED_BYTE PadataTypeVal [] = {
{0xFF, NULL},
{PA_TGS_REQ, "PA-TGS-REQ"},
{PA_ENC_TIMESTAMP, "PA-ENC-TIMESTAMP"},
{PA_PW_SALT, "PA-PW-SALT"},
{Reserved, "Reserved Value"},
{PA_ENC_UNIX_TIME, "PA-END-UNIX-TIME"},
{PA_SANDIA_SECUREID, "PA-SANDIA-SECUREID"},
{PA_AFS3_SALT, "PA-AFS3-SALT"},
{PA_ETYPE_INFO, "PA-ETYPE-INFO"},
{SAM_CHALLENGE, "SAM-CHALLENGE"},
{SAM_RESPONSE, "SAM-RESPONSE"},
{PA_PK_AS_REQ, "PA-PK-AS-REP"},
{PA_PK_AS_REP, "PA-PK-AS-REP"},
{PA_PK_AS_SIGN, "PA-PK-AS-SIGN"},
{PA_PK_KEY_REQ, "PA-PK-KEY-REQ"},
{PA_PK_KEY_REP, "PA-PK-KEY-REP"},
{PA_USE_SPECIFIELD_KVNO, "PA-USE-SPECIFIELD-KVNO"},
{SAM_REDIRECT, "SAM-REDIRECT"},
{PA_GET_FROM_TYPED_DATA, "PA-GET-FROM-TYPED-DATA"}
};
SET PadataTypeValSet = {sizeof(PadataTypeVal)/sizeof(LABELED_BYTE), PadataTypeVal};
LABELED_BYTE KdcReqBody [] = {
{0x1F, NULL},
{kdcoptions, "Ticket Flags (kdc-options[0])"},
{cnamebody, "Client Name (cname[1])"},
{realmbody, "Realm (realm[2])"},
{snamebody, "Server Name (sname[3])"},
{frombody, "Start Time (from[4])"},
{tillbody, "Expiration date (till[5])"},
{rtimebody, "Requested renew till (rtime[6])"},
{noncebody, "Random Number (nonce[7])"},
{etypebody, "Encryption Alg. (etype[8])"},
{addressesbody, "Addresses (addresses[9])"},
{encauthdatabody, "Cipher Text (enc-authorization-data[10])"},
{addtixbody, "Additional Tix (additional-ticketsp[11])"}
};
SET KdcReqBodySet = {sizeof(KdcReqBody)/sizeof(LABELED_BYTE), KdcReqBody};
LABELED_BYTE HostAddresses [] = {
{0x1F, NULL},
{addrtype, "Type of Address (addr-type[0])"},
{address, "Addresses (address[1])"}
};
SET HostAddressesSet = {sizeof(HostAddresses)/sizeof(LABELED_BYTE), HostAddresses};
// KDC-Options
LABELED_BIT KdcOptionFlags[] =
{ {31, "Reserved (Bit 0)", // 0 bit = Reserved,
"Reserved (Bit 0)"
},
{30, "Forwardable Bit Not Set (Bit 1)", // 1 bit = Fowardable
"Forwardable Bit Set (Bit 1)"
},
{29, "Forwarded Bit Not Set (Bit 2)", // 2 bit = Forwarded
"Fowarded Bit Set (Bit 2)"
},
{28, "Proxiable Bit Not Set (Bit 3)", // 3 bit = Proxiable
"Proxiable Bit Set (Bit 3)"
},
{27, "Proxy Bit Not Set (Bit 4)", // 4 bit = Proxy
"Proxy Bit Set (Bit 4)"
},
{26, "Allow-PostDate Bit Not Set (Bit 5)", // 5 bit = Allow-Postdate
"May-Postdate Bit Set (Bit 5)"
},
{25, "PostDated Bit Not Set (Bit 6)", // 6 bit = Postdated
"Postdated Bit Set (Bit 6)"
},
{24, "Unused (Bit 7)", // 7 bit = Unused
"Unused (Bit 7) "
},
{23, "Renewable Bit Not Set (Bit 8)", // 8 bit = Renewable
"Renewable Bit Set (Bit 8)"
},
{22, "Unused (Bit 9)", // 9 bit = Reserved
"Unused (Bit 9)"
},
{21, "Unused (Bit 10)", // 10 bit = Reserved
"Unused (Bit 10)"
},
{20, "Unused (Bit 11)", // 11 bit = Reserved
"Unused (Bit 11)"
},
{19, "Unused (Bit 12)", // 12 bit = Reserved
"Unused (Bit 12)"
},
{18, "Unused (Bit 13)", // 13 bit = Reserved
"Unused (Bit 13)"
},
{17, "Request-Anonymous Bit Not Set (Bit 14)", // 14 bit = Reserved
"Request-Anonymous Bit Set (Bit 14)"
},
{16, "Name-Canonicalize Bit Not Set (Bit 15)", // 15 bit = Reserved
"Name-Canonicalize Bit Set (Bit 15)"
},
{15, "Reserved (Bit 16)", // 16 bit = Reserved
"Reserved (Bit 16)"
},
{14, "Reserved (Bit 17)", // 17 bit = Reserved
"Reserved (Bit 17)"
},
{13, "Reserved (Bit 18)", // 18 bit = Reserved
"Reserved (Bit 18)"
},
{12, "Reserved (Bit 19)", // 19 bit = Reserved
"Reserved (Bit 19)"
},
{11, "Reserved (Bit 20)", // 20 bit = Reserved
"Reserved (Bit 20)"
},
{10, "Reserved (Bit 21)", // 21 bit = Reserved
"Reserved (Bit 21)"
},
{9, "Reserved (Bit 22)", // 22 bit = Reserved
"Reserved (Bit 22)"
},
{8, "Reserved (Bit 23)", // 23 bit = Reserved
"Reserved (Bit 23)"
},
{7, "Reserved (Bit 24)", // 24 bit = Reserved
"Reserved (Bit 24)"
},
{6, "Reserved (Bit 25)", // 25 bit = Reserved
"Reserved (Bit 25)"
},
{5, "Disable-Transited-Check Bit Not Set (Bit 26)", // 26 bit = Reserved
"Disable-Transited-Check Bit Set (Bit 26)"
},
{4, "Renewable-OK Bit Not Set (Bit 27)", // 27 bit = Renewable-OK
"Renewable-OK Bit Set (Bit 27)"
},
{3, "Enc-Tkt-In-Skey Bit Not Set (Bit 28)", // 28 bit = Enc-Tkt-In-Skey
"Enc-Tkt-In-Skey Bit Not Set (Bit 28)"
},
{2, "Reserved (Bit 29)", // 29 bit = Reserved
"Reserved (Bit 29)"
},
{1, "Renew Bit Not Set (Bit 30)", // 30 bit = Renew
"Renew Bit Set (Bit 30)"
},
{0, "Validate Bit Not Set (Bit 31)", // 31 bit = Validate
"Validate Bit Set (Bit 31)"
}
};
SET KdcOptionFlagsSet = {sizeof(KdcOptionFlags)/sizeof(LABELED_BIT), KdcOptionFlags};
LABELED_BYTE EncryptionType [] = {
{0xFF, NULL},
{KERB_ETYPE_RC4_HMAC_OLD, "RC4-HMAC-OLD"},
{KERB_ETYPE_RC4_PLAIN_OLD, "RC4-PLAIN-OLD"},
{KERB_ETYPE_RC4_HMAC_OLD_EXP, "RC4-HMAC-OLD-EXP"},
{KERB_ETYPE_RC4_PLAIN_OLD_EXP, "RC4-PLAIN-OLD-EXP"},
{KERB_ETYPE_RC4_PLAIN, "RC4-PLAIN"},
{KERB_ETYPE_RC4_PLAIN_EXP, "RC4-PLAIN-EXP"},
{KERB_ETYPE_NULL, "NULL"},
{KERB_ETYPE_DES_CBC_CRC, "DES-CBC-CRC"},
{KERB_ETYPE_DES_CBC_MD4, "DES-CBC-MD4"},
{KERB_ETYPE_DES_CBC_MD5, "DES-CBC-MD5"},
{KERB_ETYPE_DSA_SHA1_CMS, "DSA-SHA1-CMS"},
{KERB_ETYPE_RSA_MD5_CMS, "RSA-MD5-CMS"},
{KERB_ETYPE_RSA_SHA1_CMS, "RSA-SHA1-CMS"},
{KERB_ETYPE_RC2_CBC_ENV, "RC2-CBC-ENV"},
{KERB_ETYPE_RSA_ENV, "RSA-ENV"},
{KERB_ETYPE_RSA_ES_OEAP_ENV, "RSA-ES-OEAP-ENV"},
{KERB_ETYPE_DES_EDE3_CBC_ENV, "DES-EDE3-CBC-ENV"},
{KERB_ETYPE_DES_CBC_MD5_NT, "DES-CBC-MD5-NT"},
{KERB_ETYPE_RC4_HMAC_NT, "RC4-HMAC-NT"},
{KERB_ETYPE_RC4_HMAC_NT_EXP, "RC4-HMAC-NT-EXP"},
{KERB_ETYPE_OLD_RC4_MD4, "RC4-MD4-OLD"},
{KERB_ETYPE_OLD_RC4_PLAIN, "RC4-PLAIN-OLD"},
{KERB_ETYPE_OLD_RC4_LM, "RC4-LM-OLD"},
{KERB_ETYPE_OLD_RC4_SHA, "RC4-SHA-OLD"},
{KERB_ETYPE_OLD_DES_PLAIN, "DES-PLAIN-OLD"}
};
SET EncryptionTypeSet = {sizeof(EncryptionType)/sizeof(LABELED_BYTE), EncryptionType};
LABELED_BYTE EncryptedData[] ={
{0x1F, NULL},
{etype, "Encryption Type (etype[0])"},
{kvno, "Key Version Number (kvno[1])"},
{cipher, "Enciphered Text (cipher[2]"}
};
SET EncryptedDataSet = {sizeof(EncryptedData)/sizeof(LABELED_BYTE), EncryptedData};
LABELED_BYTE KrbApReq[] = {
{0x1F, NULL},
{PvnoApReq, "Protocol Version (pvno[0])"},
{MsgTypeApReq, "Message Type (msg-type[1])"},
{ApOptionsApReq, "AP Options (ap-options[2])"},
{TicketApReq, "Ticket (ticket[3])"},
{AuthenticatorApReq, "Authenticator (authenticator[4])"}
};
SET KrbApReqSet = {sizeof(KrbApReq)/sizeof(LABELED_BYTE), KrbApReq};
// AP-Options
LABELED_BIT ApOptionFlags[] =
{ {31, "Reserved (Bit 0)", // 0 bit = Reserved,
"Reserved (Bit 0)"
},
{30, "Use-Session-Key Bit Not Set(Bit 1)", // 1 bit = Use-Session-Key
"Use-Session-Key Bit Set (Bit 1)"
},
{29, "Mutual-Required Bit Not Set (Bit 2)", // 2 bit = Mutual-Required
"Mutual-Required Bit Set (Bit 2)"
},
{28, "Reserved (Bit 3)", // 3 bit = Reserved
"Reserved(Bit 3)"
},
{27, "Reserved (Bit 4)", // 4 bit = Reserved
"Reserved (Bit 4)"
},
{26, "Reserved (Bit 5)", // 5 bit = Reserved
"Reserved (Bit 5)"
},
{25, "Reserved (Bit 6)", // 6 bit = Reserved
"Reserved (Bit 6)"
},
{24, "Reserved (Bit 7)", // 7 bit = Reserved
"Reserved (Bit 7)"
},
{23, "Reserved (Bit 8)", // 8 bit = Reserved
"Reserved (Bit 8)"
},
{22, "Reserved (Bit 9)", // 9 bit = Reserved
"Reserved (Bit 9)"
},
{21, "Reserved (Bit 10)", // 10 bit = Reserved
"Reserved (Bit 10)"
},
{20, "Reserved (Bit 11)", // 11 bit = Reserved
"Reserved (Bit 11)"
},
{19, "Reserved (Bit 12)", // 12 bit = Reserved
"Reserved (Bit 12)"
},
{18, "Reserved (Bit 13)", // 13 bit = Reserved
"Reserved (Bit 13)"
},
{17, "Reserved (Bit 14)", // 14 bit = Reserved
"Reserved (Bit 14)"
},
{16, "Reserved (Bit 15)", // 15 bit = Reserved
"Reserved (Bit 15)"
},
{15, "Reserved (Bit 16)", // 16 bit = Reserved
"Reserved (Bit 16)"
},
{14, "Reserved (Bit 17)", // 17 bit = Reserved
"Reserved (Bit 17)"
},
{13, "Reserved (Bit 18)", // 18 bit = Reserved
"Reserved (Bit 18)"
},
{12, "Reserved (Bit 19)", // 19 bit = Reserved
"Reserved (Bit 19)"
},
{11, "Reserved (Bit 20)", // 20 bit = Reserved
"Reserved (Bit 20)"
},
{10, "Reserved (Bit 21)", // 21 bit = Reserved
"Reserved (Bit 21)"
},
{9, "Reserved (Bit 22)", // 22 bit = Reserved
"Reserved (Bit 22)"
},
{8, "Reserved (Bit 23)", // 23 bit = Reserved
"Reserved (Bit 23)"
},
{7, "Reserved (Bit 24)", // 24 bit = Reserved
"Reserved (Bit 24)"
},
{6, "Reserved (Bit 25)", // 25 bit = Reserved
"Reserved (Bit 25)"
},
{5, "Reserved (Bit 26)", // 26 bit = Reserved
"Reserved (Bit 26)"
},
{4, "Reserved (Bit 27)", // 27 bit = Renewable-OK
"Reserved (Bit 27)"
},
{3, "Reserved (Bit 28)", // 28 bit = Enc-Tkt-In-Skey
"Reserved (Bit 28)"
},
{2, "Reserved (Bit 29)", // 29 bit = Reserved
"Reserved (Bit 29)"
},
{1, "Reserved(Bit 30)", // 30 bit = Renew
"Reserved (Bit 30)"
},
{0, "Reserved (Bit 31)", // 31 bit = Reserved
"Reserved (Bit 31)"
}
};
SET ApOptionFlagsSet = {sizeof(ApOptionFlags)/sizeof(LABELED_BIT), ApOptionFlags};
LABELED_BYTE ApTicket[] = {
{0x1F, NULL},
{ticket, "AP Ticket"}
};
SET ApTicketSet = {sizeof(ApTicket)/sizeof(LABELED_BYTE), ApTicket};
LABELED_BYTE TicketStruct[] = {
{0x1F, NULL},
{Tixtkt_vno, "Ticket Version Number (tkt-vno[0])"},
{TixRealm, "Issuing Realm (realm[1])"},
{TixSname, "Server (sname[2])"},
{TixEnc_part, "Cipher Encoding (enc-part[3])"}
};
SET TicketStructSet = {sizeof(TicketStruct)/sizeof(LABELED_BYTE), TicketStruct};
LABELED_BYTE MethodDataType[] = {
{0x1F, NULL},
{methodtype, "Req. Alt. Method (method-type[0])"},
{methoddata, "Req. Alt. Info (method-data[1])"}
};
SET MethodDataSet = { (sizeof(MethodDataType)/sizeof(LABELED_BYTE)), MethodDataType};
//=============================================================================
// Kerberos database.
//=============================================================================
//KF 10/19/99 NEED TO GO THROUGH AND WEED OUT DUPLICATE NODES. ALSO
// NEED TO RENAME THE DUPLICATES WHICH ARE NEEDED BECAUSE OF DIFFERENT
// DATATYPE LABELS.
PROPERTYINFO KerberosDatabase[] =
{
{ // KerberosSummary 0x00
// Global Variable,description for all Kerberos Message Types
0,0,
MsgType,
"Kerberos Packet",
PROP_TYPE_SUMMARY,
PROP_QUAL_NONE,
0,
FORMAT_BUFFER_SIZE,
FormatPropertyInstance},
{ // KerberosIDSummary 0x01
// Global Variable, used in identifying the Identifier Octet for Kerberos frames
0,0,
"Message Type",
"Display Message Type",
PROP_TYPE_BYTE,
PROP_QUAL_NONE,
0,
FORMAT_BUFFER_SIZE,
FormatPropertyInstance},
{ // KerberosClassTag 0x02
// Global Variable used to display ASN.1 Class tag of initial Identifier octet
0,0,
"Class Tag",
"Display Class Tag",
PROP_TYPE_BYTE,
//PROP_QUAL_FLAGS,
PROP_QUAL_LABELED_BITFIELD,
&ClassTagSet,
FORMAT_BUFFER_SIZE,
FormatPropertyInstance},
{ // PCIdentifier 0x03
// Global Variable, used to determine method of encoding used.
0,0,
"P/C",
"Display Primitive/Constructed",
PROP_TYPE_BYTE,
PROP_QUAL_FLAGS,
&PCSet,
FORMAT_BUFFER_SIZE,
FormatPropertyInstance},
{ // ASN1UnivTag 0x04
// Global Variable, probably needs to be renamed. This takes the last 5 bits
// of the Initial Identifier Octet and prints out the message type of the packet
0,0,
"Contents",
"Display Contents",
PROP_TYPE_BYTE,
PROP_QUAL_LABELED_BITFIELD,
&UniversalTagSet,
FORMAT_BUFFER_SIZE,
FormatPropertyInstance},
{ // LengthSummary 0x05
0,0,
"Length Summary",
"Display Length Summary",
PROP_TYPE_BYTE,
PROP_QUAL_NONE,
0,
FORMAT_BUFFER_SIZE,
FormatPropertyInstance},
{ // LengthFlag 0x06
// Global Variable, Used in determining if the ASN.1 length octet is short or long form
0,0,
"Length Flag",
"Display Length Flag",
PROP_TYPE_BYTE,
PROP_QUAL_FLAGS,
&LengthSet,
FORMAT_BUFFER_SIZE,
FormatPropertyInstance},
{ // LengthBits 0x07
// Global Variable, used for labeling
0,0,
"Number of Octets (Size)",
"Display Number of Octets (Size)",
PROP_TYPE_BYTE,
PROP_QUAL_NONE,
0,
FORMAT_BUFFER_SIZE,
FormatPropertyInstance},
{ // LongLength1 0x08
// Global Variable, used for labeling values spanning multiple octets
0,0,
"Size (BSW)",
"Display Size (Long)",
PROP_TYPE_BYTESWAPPED_WORD,
PROP_QUAL_NONE,
0,
FORMAT_BUFFER_SIZE,
FormatPropertyInstance},
{ // LongLength2 0x09
// Not sure about this one but looks to be for labeling
0,0,
"Size (B)",
"Display Size (short)",
PROP_TYPE_BYTE,
PROP_QUAL_NONE,
0,
FORMAT_BUFFER_SIZE,
FormatPropertyInstance},
{ // ASNIdentifier 0x0A
// Global, used for labeling of ASN.1 Identifier Octets
0,0,
"Identifier",
"Display Identifier Octet",
PROP_TYPE_BYTE,
PROP_QUAL_NONE,
0,
FORMAT_BUFFER_SIZE,
FormatPropertyInstance},
{ // UniversalTagID 0x0B
//Global, Used for displaying ASN.1 Universal Class Tags
0,0,
"Tag Number",
"Display Tag Number (Bitfield)",
PROP_TYPE_BYTE,
PROP_QUAL_LABELED_BITFIELD,
&UniversalTagSet,
FORMAT_BUFFER_SIZE,
FormatPropertyInstance},
{ // KdcReqTagID 0x0C
0,0,
"KERB_KDC_REQ Type",
"Dipslay KERB_KDC_REQ Summary",
PROP_TYPE_BYTE,
PROP_QUAL_LABELED_SET,
&KdcReqTagSet,
FORMAT_BUFFER_SIZE,
FormatPropertyInstance},
{ // KdcReqSeq 0x0D
0,0,
"Tag Number (BF)",
"Display Tag Number",
PROP_TYPE_BYTE,
PROP_QUAL_LABELED_BITFIELD,
&KdcReqTagSet,
FORMAT_BUFFER_SIZE,
FormatPropertyInstance},
{ // KdcReqSeqLength 0x0E
// Global, however only used to represent the body of kdc-req packets
0,0,
"Length",
"Length",
PROP_TYPE_BYTE,
PROP_QUAL_NONE,
0,
FORMAT_BUFFER_SIZE,
FormatPropertyInstance},
{ // ASN1UnivTagSumID 0x0F
// This points to the Universal Class Tags
//Used to display summary
0,0,
"Univ. Class Tag",
"Universal Class Tag",
PROP_TYPE_BYTE,
PROP_QUAL_LABELED_SET,
&UniversalTagSet,
FORMAT_BUFFER_SIZE,
FormatPropertyInstance},
{ // KdcContentsValue 0x10
// Global label
0,0,
"Value",
"Value",
PROP_TYPE_BYTE,
PROP_QUAL_NONE,
0,
FORMAT_BUFFER_SIZE,
FormatPropertyInstance},
{ // PaDataSummary 0x11
// Global Displays values for the PADATA type
0,0,
"PA-DATA Type",
"PA-DATA Summary",
PROP_TYPE_BYTE,
PROP_QUAL_LABELED_SET,
&PaDataTagSet,
FORMAT_BUFFER_SIZE,
FormatPropertyInstance},
{ // PaDataSeq 0x12
0,0,
"Tag Number",
"Tag Number",
PROP_TYPE_BYTE,
PROP_QUAL_LABELED_BITFIELD,
&PaDataTagSet,
FORMAT_BUFFER_SIZE,
FormatPropertyInstance},
{ // DispString 0x13
0,0,
"Value",
"Value",
PROP_TYPE_STRING,
PROP_QUAL_NONE,
0,
FORMAT_BUFFER_SIZE,
FormatPropertyInstance},
{ //KerberosIdentifier 0x14
0,0,
"KRB MSG-Type Identifier",
"Displays Kerberos Message Type",
PROP_TYPE_BYTE,
PROP_QUAL_LABELED_BITFIELD,
//PROP_QUAL_FLAGS,
&KrbMsgTypeSet,
FORMAT_BUFFER_SIZE,
FormatPropertyInstance},
{ // lblTagNumber 0x15
// Created this as a lable
0,0,
"Tag Number",
"Display Explicit Tags",
PROP_TYPE_BYTE,
PROP_QUAL_LABELED_BITFIELD,
&KdcRepTagSet,
FORMAT_BUFFER_SIZE,
FormatPropertyInstance},
{ //KdcRepTagID 0x16
0,0,
"KERB_KDC_REP Tag",
"Struct of KDC-REP packet",
PROP_TYPE_BYTE,
PROP_QUAL_LABELED_SET,
&KdcRepTagSet,
FORMAT_BUFFER_SIZE,
FormatPropertyInstance},
{ // KrbPrincipalNamelSet 0x17
0, 0,
"Principal Name",
"PrincipalName Structure",
PROP_TYPE_BYTE,
PROP_QUAL_LABELED_SET,
&PrincipalNameSet,
FORMAT_BUFFER_SIZE,
FormatPropertyInstance},
{ // KrbPrincNameType 0x18
0, 0,
"Name Type",
"Principal Name Type",
PROP_TYPE_BYTE,
PROP_QUAL_LABELED_SET,
&PrincNameTypeSet,
FORMAT_BUFFER_SIZE,
FormatPropertyInstance},
{ //KrbPrincipalNamelBitF 0x19
0, 0,
"Name Type",
"Principal Name Type",
PROP_TYPE_BYTE,
PROP_QUAL_LABELED_BITFIELD,
&PrincipalNameSet,
FORMAT_BUFFER_SIZE,
FormatPropertyInstance},
{ // KrbTicketID 0x1A
0,0,
"Kerberos Ticket",
"Kerberos Ticket",
PROP_TYPE_BYTE,
PROP_QUAL_LABELED_BITFIELD,
&KrbTicketSet,
FORMAT_BUFFER_SIZE,
FormatPropertyInstance},
{ // KrbTixApp1ID 0x1B
0, 0,
"Ticket Identifier",
"Tag for Ticket",
PROP_TYPE_BYTE,
PROP_QUAL_LABELED_BITFIELD,
&KrbTixApp1Set,
FORMAT_BUFFER_SIZE,
FormatPropertyInstance},
{ // KrbErrTagID 0x1C
// Global Displays values for the KRB-ERR type
0,0,
"KRB-ERROR",
"KRB-ERROR Packet",
PROP_TYPE_BYTE,
PROP_QUAL_LABELED_BITFIELD,
&KrbErrTagSet,
FORMAT_BUFFER_SIZE,
FormatPropertyInstance},
{ // DispTimeID 0x1D
0,0,
"Micro Sec",
"Micro Seconds",
PROP_TYPE_BYTESWAPPED_DWORD,
PROP_QUAL_NONE,
0,
FORMAT_BUFFER_SIZE,
FormatPropertyInstance},
{ //KrbErrTagSumID 0x1E
// Used in the inital display of KRB-ERROR
0,0,
"KRB-ERROR",
"Kerberos Error",
PROP_TYPE_BYTE,
PROP_QUAL_LABELED_SET,
&KrbErrTagSet,
FORMAT_BUFFER_SIZE,
FormatPropertyInstance},
{ //KrbTixAppSumID 0x1F
//Used in summary displays of Explicit Application Tags
0,0,
"Explicit Tag",
"Explicit Tags",
PROP_TYPE_BYTE,
PROP_QUAL_LABELED_SET,
&KrbTixApp1Set,
FORMAT_BUFFER_SIZE,
FormatPropertyInstance},
{ //KrbTicketSumID 0x20
// Used in summary displays of Ticket Variables
0,0,
"KRB-Ticket",
"Kerberos Ticket",
PROP_TYPE_BYTE,
PROP_QUAL_LABELED_SET,
&KrbTicketSet,
FORMAT_BUFFER_SIZE,
FormatPropertyInstance},
{ //KrbErrCodeID 0x21
//Used to display Kerberos Error Codes
0,0,
"Kerberos Error",
"Kerberos Error",
PROP_TYPE_BYTE,
PROP_QUAL_LABELED_SET,
&KrbErrCodeSet,
FORMAT_BUFFER_SIZE,
FormatPropertyInstance},
{ //KrbMsgTypeID 0x22
0,0,
"Contents",
"Display Contents Octet",
PROP_TYPE_BYTE,
PROP_QUAL_LABELED_SET,
&KrbMsgTypeSet,
FORMAT_BUFFER_SIZE,
FormatPropertyInstance},
{ //PadataTypeValID 0x23
0,0,
"padata-type",
"Value of padata-type",
PROP_TYPE_BYTE,
PROP_QUAL_LABELED_SET,
&PadataTypeValSet,
FORMAT_BUFFER_SIZE,
FormatPropertyInstance},
{ //CipherTextDisp 0x24
// Changed display from Cipher Text to Length. Could possibly get rid of this
// Leaving it in place in case we need to break down padata.
0, 0,
"Length",
"Display Cipher Text",
PROP_TYPE_BYTE,
PROP_QUAL_NONE,
0,
FORMAT_BUFFER_SIZE,
FormatPropertyInstance},
{ //FragUdpID 0x25
0,0,
"Fragmented Kerberos cont.",
"Display Fragmented Kerberos Packets",
PROP_TYPE_SUMMARY,
PROP_QUAL_NONE,
0,
FORMAT_BUFFER_SIZE,
FormatPropertyInstance},
{ //KdcReqBodyID 0x26
0,0,
"KDC-Req-Body",
"KDC Req Body",
PROP_TYPE_BYTE,
PROP_QUAL_LABELED_SET,
&KdcReqBodySet,
FORMAT_BUFFER_SIZE,
FormatPropertyInstance},
{ //KdcReqBodyBitF 0x27
0,0,
"KDC-Req-Body",
"KDC Req Body",
PROP_TYPE_BYTE,
PROP_QUAL_LABELED_BITFIELD,
&KdcReqBodySet,
FORMAT_BUFFER_SIZE,
FormatPropertyInstance},
{ //HostAddressesID 0x28
0,0,
"Addresses",
"Addresses",
PROP_TYPE_BYTE,
PROP_QUAL_LABELED_SET,
&HostAddressesSet,
FORMAT_BUFFER_SIZE,
FormatPropertyInstance},
{ //HostAddressesBitF 0x29
0,0,
"Addresses",
"Addresses",
PROP_TYPE_BYTE,
PROP_QUAL_LABELED_BITFIELD,
&HostAddressesSet,
FORMAT_BUFFER_SIZE,
FormatPropertyInstance},
{ // DispStringCliName 0x2A
0,0,
"Client Name",
"Display Client Name",
PROP_TYPE_STRING,
PROP_QUAL_NONE,
0,
FORMAT_BUFFER_SIZE,
FormatPropertyInstance},
{ //DispStringRealmName 0x2B
0,0,
"Realm Name",
"Display Realm Name",
PROP_TYPE_STRING,
PROP_QUAL_NONE,
0,
FORMAT_BUFFER_SIZE,
FormatPropertyInstance},
{ //DispStringServerName 0x2C
0,0,
"Server Name",
"Display Server Name",
PROP_TYPE_STRING,
PROP_QUAL_NONE,
0,
FORMAT_BUFFER_SIZE,
FormatPropertyInstance},
{ //DispStringTixFlag 0x2D
0,0,
"Ticket Flags",
"Display Ticket Flags",
PROP_TYPE_SUMMARY,
PROP_QUAL_NONE,
0,
FORMAT_BUFFER_SIZE,
FormatPropertyInstance},
{ //DispStringExpDate 0x2E
0,0,
"Expiration Date",
"Display Expiration Date",
PROP_TYPE_STRING,
PROP_QUAL_NONE,
0,
FORMAT_BUFFER_SIZE,
FormatPropertyInstance},
{ //DispStringPostDate 0x2F
0,0,
"Post Date",
"Display Post Date",
PROP_TYPE_STRING,
PROP_QUAL_NONE,
0,
FORMAT_BUFFER_SIZE,
FormatPropertyInstance},
{ //DispStringRenewTill 0x30
0,0,
"Renew Till",
"Display Renew Till Time",
PROP_TYPE_STRING,
PROP_QUAL_NONE,
0,
FORMAT_BUFFER_SIZE,
FormatPropertyInstance},
{ //DispSumRandomNumber 0x31
0,0,
"Random Number",
"Display Random Number",
PROP_TYPE_BYTESWAPPED_DWORD,
PROP_QUAL_NONE,
0,
FORMAT_BUFFER_SIZE,
FormatPropertyInstance},
{ //DispSumEtype 0x32
0,0,
"Encryption Type",
"Display Encryption Type",
PROP_TYPE_SUMMARY,
PROP_QUAL_NONE,
0,
FORMAT_BUFFER_SIZE,
FormatPropertyInstance},
{ //DispStringAddresses 0x33
0,0,
"Client Host Address",
"Display Random Number",
PROP_TYPE_STRING,
PROP_QUAL_NONE,
0,
FORMAT_BUFFER_SIZE,
FormatPropertyInstance},
{ //DispSummary 0x34
0,0,
"Summary (ASN.1)",
"Display ASN.1 Summary",
PROP_TYPE_SUMMARY,
PROP_QUAL_NONE,
0,
FORMAT_BUFFER_SIZE,
FormatPropertyInstance},
{ //DispStringCliRealm 0x35
0,0,
"Client Realm",
"Display Client's Realm",
PROP_TYPE_STRING,
PROP_QUAL_NONE,
0,
FORMAT_BUFFER_SIZE,
FormatPropertyInstance},
{ //DispProtocolVer 0x36
0,0,
"Kerberos Protocol Version",
"Display Kerberos Protocol Version",
PROP_TYPE_BYTE,
PROP_QUAL_NONE,
0,
FORMAT_BUFFER_SIZE,
FormatPropertyInstance},
{ //DispKerbMsgType 0x37
0,0,
"Kerberos Message Type",
"Display Kerberos Message Type",
PROP_TYPE_BYTE,
PROP_QUAL_LABELED_SET,
&KrbMsgTypeSet,
FORMAT_BUFFER_SIZE,
FormatPropertyInstance},
{ //DispSumPreAuth 0x38
0,0,
"Pre-Authentication Data",
"Display Pre-Authentication Date",
PROP_TYPE_SUMMARY,
PROP_QUAL_NONE,
0,
FORMAT_BUFFER_SIZE,
FormatPropertyInstance},
{ //DispSumReqBody 0x39
0,0,
"KDC Request Body",
"Display KDC Request Body",
PROP_TYPE_SUMMARY,
PROP_QUAL_NONE,
0,
FORMAT_BUFFER_SIZE,
FormatPropertyInstance},
{ //DispSumKerbTix 0x3A
0,0,
"Kerberos Ticket",
"Display Kerberos Ticket",
PROP_TYPE_SUMMARY,
PROP_QUAL_NONE,
0,
FORMAT_BUFFER_SIZE,
FormatPropertyInstance},
{ //DispSumTixVer 0x3B
0,0,
"Ticket Version",
"Display Ticket Version",
PROP_TYPE_BYTE,
PROP_QUAL_NONE,
0,
FORMAT_BUFFER_SIZE,
FormatPropertyInstance},
{ //DispCipherText 0x3C
0,0,
"Cipher Text",
"Display Text",
PROP_TYPE_SUMMARY,
PROP_QUAL_NONE,
0,
FORMAT_BUFFER_SIZE,
FormatPropertyInstance},
{ //DispStringCliTime 0x3D
0,0,
"Current Client Time",
"Display Client's Current Time",
PROP_TYPE_STRING,
PROP_QUAL_NONE,
0,
FORMAT_BUFFER_SIZE,
FormatPropertyInstance},
{ //DispSumCuSec 0x3E
0,0,
"MicroSec Of Client",
"Display Microseconds of Client",
PROP_TYPE_BYTESWAPPED_DWORD,
PROP_QUAL_NONE,
0,
FORMAT_BUFFER_SIZE,
FormatPropertyInstance},
{ //DispStringSrvTime 0x3F
0,0,
"Current Server Time",
"Display Server's Current Time",
PROP_TYPE_STRING,
PROP_QUAL_NONE,
0,
FORMAT_BUFFER_SIZE,
FormatPropertyInstance},
{ //DispSumSuSec 0x40
0,0,
"MicroSec Of Server",
"Display Microseconds of Server",
PROP_TYPE_BYTESWAPPED_DWORD,
PROP_QUAL_NONE,
0,
FORMAT_BUFFER_SIZE,
FormatPropertyInstance},
{ //DispSumKerbErr 0x41
0,0,
"Kerberos Error",
"Display Kerberos Error",
PROP_TYPE_BYTE,
PROP_QUAL_LABELED_SET,
&KrbErrCodeSet,
FORMAT_BUFFER_SIZE,
FormatPropertyInstance},
{ //DispStringErrorText 0x42
0,0,
"Error Text",
"Display Error Text",
PROP_TYPE_STRING,
PROP_QUAL_NONE,
0,
FORMAT_BUFFER_SIZE,
FormatPropertyInstance},
{ //DispStringErrorData 0x43
0,0,
"Error Data",
"Display Error Data",
PROP_TYPE_SUMMARY,
PROP_QUAL_NONE,
0,
FORMAT_BUFFER_SIZE,
FormatPropertyInstance},
{ // DispFlagKdcOptions 0x44
0,0,
"KDC-Option Flags",
"Specifies KDC-Option Flags",
PROP_TYPE_BYTESWAPPED_DWORD,
PROP_QUAL_FLAGS,
&KdcOptionFlagsSet,
80 * 32,
FormatPropertyInstance },
{ //DispStringServNameGS 0x45
0,0,
"Server Name",
"Displays General Strings",
PROP_TYPE_STRING,
PROP_QUAL_NONE,
0,
FORMAT_BUFFER_SIZE,
FormatPropertyInstance},
{ //DispSumEtype2 0x46
0,0,
"Encryption Type",
"Display Encryption Type",
PROP_TYPE_BYTE,
PROP_QUAL_LABELED_SET,
&EncryptionTypeSet,
FORMAT_BUFFER_SIZE,
FormatPropertyInstance},
{ //EncryptedDataTag 0x47
0,0,
"Encrypted Data",
"Display Encrypted Data",
PROP_TYPE_BYTE,
PROP_QUAL_LABELED_SET,
&EncryptedDataSet,
FORMAT_BUFFER_SIZE,
FormatPropertyInstance},
{ //EncryptedDataTagBitF 0x48
0,0,
"Encrypted Data",
"Encrypted Data",
PROP_TYPE_BYTE,
PROP_QUAL_LABELED_BITFIELD,
&EncryptedDataSet,
FORMAT_BUFFER_SIZE,
FormatPropertyInstance},
{ //KrbApReqID 0x49
0,0,
"Kerb-AP-Req",
"Display AP-Req",
PROP_TYPE_BYTE,
PROP_QUAL_LABELED_SET,
&KrbApReqSet,
FORMAT_BUFFER_SIZE,
FormatPropertyInstance},
{ //KrbApReqBitF 0x4A
0,0,
"Kerb-AP-Req",
"Display AP Req ASN.1",
PROP_TYPE_BYTE,
PROP_QUAL_LABELED_BITFIELD,
&KrbApReqSet,
FORMAT_BUFFER_SIZE,
FormatPropertyInstance},
{ //DispApOptionsSum 0x4B
0,0,
"AP Options",
"Display AP Option Flags",
PROP_TYPE_SUMMARY,
PROP_QUAL_NONE,
0,
FORMAT_BUFFER_SIZE,
FormatPropertyInstance},
{ //DispFlagApOptions 0x4C
0,0,
"AP-Option Flags",
"Specifies AP-Option Flags",
PROP_TYPE_BYTESWAPPED_DWORD,
PROP_QUAL_FLAGS,
&ApOptionFlagsSet,
80 * 32,
FormatPropertyInstance },
{ //DispSumTicket 0x4D
0,0,
"Ticket",
"Display Ticket",
PROP_TYPE_SUMMARY,
PROP_QUAL_NONE,
0,
FORMAT_BUFFER_SIZE,
FormatPropertyInstance},
{ //ApTicketID 0x4E
0,0,
"Kerb-Ticket",
"Display Ticket",
PROP_TYPE_BYTE,
PROP_QUAL_LABELED_SET,
&ApTicketSet,
FORMAT_BUFFER_SIZE,
FormatPropertyInstance},
{ //ApTicketBitF 0x4F
0,0,
"Kerb-Ticket",
"Display Ticket",
PROP_TYPE_BYTE,
PROP_QUAL_LABELED_BITFIELD,
&ApTicketSet,
FORMAT_BUFFER_SIZE,
FormatPropertyInstance},
{ //TicketStructID 0x50
0,0,
"Kerb-Ticket",
"Display Ticket",
PROP_TYPE_BYTE,
PROP_QUAL_LABELED_SET,
&TicketStructSet,
FORMAT_BUFFER_SIZE,
FormatPropertyInstance},
{ //TicketStructBitF 0x51
0,0,
"Kerb-Ticket",
"Display Ticket",
PROP_TYPE_BYTE,
PROP_QUAL_LABELED_BITFIELD,
&TicketStructSet,
FORMAT_BUFFER_SIZE,
FormatPropertyInstance},
{ //KerberosDefaultlbl 0x52
// Kerberos continuation packets
0,0,
"Kerberos Packet (Cont.) Use the Coalescer to view contents",
"Display Kerberos Continuation Packets",
PROP_TYPE_SUMMARY,
PROP_QUAL_NONE,
0,
FORMAT_BUFFER_SIZE,
FormatPropertyInstance},
{ // PaDataSummaryMulti 0x53
// Global Displays values for the PADATA type if integer is multiple octets
0,0,
"PA-DATA Type",
"PA-DATA Summary",
PROP_TYPE_BYTESWAPPED_WORD,
PROP_QUAL_LABELED_SET,
&PaDataTagSet,
FORMAT_BUFFER_SIZE,
FormatPropertyInstance},
{ // Certificatelbl 0x54
// Because I couldn't find the ASN.1 layout for the certificates
// Present in AS-Req and Rep's, I'm labeling the bits for now
0,0,
"Certificate Data",
"Certificate Data Label",
PROP_TYPE_SUMMARY,
PROP_QUAL_NONE,
0,
FORMAT_BUFFER_SIZE,
FormatPropertyInstance},
{ //DispEncryptionOptions 0x55
0,0,
"Supported Encryption Types",
"Available Encryption Type",
PROP_TYPE_SUMMARY,
PROP_QUAL_NONE,
0,
FORMAT_BUFFER_SIZE,
FormatPropertyInstance},
{ // MethodDataSummary 0x56
// Global Displays values for the PADATA type if integer is multiple octets
0,0,
"Method-Data Type",
"Method-Data Type Summary",
PROP_TYPE_BYTE,
PROP_QUAL_LABELED_SET,
&MethodDataSet,
FORMAT_BUFFER_SIZE,
FormatPropertyInstance},
{ // MethodDataBitF 0x57
// Global Displays values for the PADATA type if integer is multiple octets
0,0,
"Method-Data ",
"Method-Data Display",
PROP_TYPE_BYTE,
PROP_QUAL_LABELED_BITFIELD,
&MethodDataSet,
FORMAT_BUFFER_SIZE,
FormatPropertyInstance},
{ // DispReqAddInfo 0x58
0,0,
"Required Additional Info",
"Req Add Info Summary",
PROP_TYPE_STRING,
PROP_QUAL_NONE,
0,
FORMAT_BUFFER_SIZE,
FormatPropertyInstance}
};
DWORD nKerberosProperties = ((sizeof KerberosDatabase) / PROPERTYINFO_SIZE);