Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1917 lines
49 KiB

  1. #include <windows.h>
  2. #include <string.h>
  3. #include <bh.h>
  4. #include <netmon.h>
  5. #define FORMAT_BUFFER_SIZE 80
  6. // Variables used in kerbparser.c to check
  7. // for continuation packets.
  8. HPROTOCOL hTCP = NULL;
  9. HPROTOCOL hUDP = NULL;
  10. // Begin Definitions for Encryption types
  11. // Leaving the negative values out until I can figure out
  12. // why some are labeled negative and some positive.
  13. /*
  14. #define KERB_ETYPE_RC4_MD4 -128
  15. #define KERB_ETYPE_RC4_PLAIN2 -129
  16. #define KERB_ETYPE_RC4_LM -130
  17. #define KERB_ETYPE_RC4_SHA -131
  18. #define KERB_ETYPE_DES_PLAIN -132
  19. */
  20. #define KERB_ETYPE_RC4_HMAC_OLD 0x7B //-133
  21. #define KERB_ETYPE_RC4_PLAIN_OLD 0x7A //-134
  22. #define KERB_ETYPE_RC4_HMAC_OLD_EXP 0x79 //-135
  23. #define KERB_ETYPE_RC4_PLAIN_OLD_EXP 0x78 //-136
  24. #define KERB_ETYPE_RC4_PLAIN 0x77 //-140
  25. #define KERB_ETYPE_RC4_PLAIN_EXP 0x76 //-141
  26. #define KERB_ETYPE_NULL 0
  27. #define KERB_ETYPE_DES_CBC_CRC 1
  28. #define KERB_ETYPE_DES_CBC_MD4 2
  29. #define KERB_ETYPE_DES_CBC_MD5 3
  30. #define KERB_ETYPE_DSA_SHA1_CMS 9
  31. #define KERB_ETYPE_RSA_MD5_CMS 10
  32. #define KERB_ETYPE_RSA_SHA1_CMS 11
  33. #define KERB_ETYPE_RC2_CBC_ENV 12
  34. #define KERB_ETYPE_RSA_ENV 13
  35. #define KERB_ETYPE_RSA_ES_OEAP_ENV 14
  36. #define KERB_ETYPE_DES_EDE3_CBC_ENV 15
  37. #define KERB_ETYPE_DES_CBC_MD5_NT 20
  38. #define KERB_ETYPE_RC4_HMAC_NT 23
  39. #define KERB_ETYPE_RC4_HMAC_NT_EXP 24
  40. #define KERB_ETYPE_OLD_RC4_MD4 128
  41. #define KERB_ETYPE_OLD_RC4_PLAIN 129
  42. #define KERB_ETYPE_OLD_RC4_LM 130
  43. #define KERB_ETYPE_OLD_RC4_SHA 131
  44. #define KERB_ETYPE_OLD_DES_PLAIN 132
  45. /* These are in kerbcon.h as well but there is a conflict
  46. with the ones listed above. Worry about it later.
  47. #define KERB_ETYPE_DSA_SIGN 8
  48. #define KERB_ETYPE_RSA_PRIV 9
  49. #define KERB_ETYPE_RSA_PUB 10
  50. #define KERB_ETYPE_RSA_PUB_MD5 11
  51. #define KERB_ETYPE_RSA_PUB_SHA1 12
  52. #define KERB_ETYPE_PKCS7_PUB 13
  53. */
  54. // In use types
  55. // End Definition of encryption types
  56. #define ASN1_KRB_AS_REQ 0x0A
  57. #define ASN1_KRB_AS_REP 0x0B
  58. #define ASN1_KRB_TGS_REQ 0x0C
  59. #define ASN1_KRB_TGS_REP 0x0D
  60. #define ASN1_KRB_AP_REQ 0x0E
  61. #define ASN1_KRB_AP_REP 0x0F
  62. #define ASN1_KRB_SAFE 0x14
  63. #define ASN1_KRB_PRIV 0x15
  64. #define ASN1_KRB_CRED 0x16
  65. #define ASN1_KRB_ERROR 0x1E
  66. #define UNIVERSAL 0x00
  67. #define APPLICATION 0x40
  68. #define CONTEXT_SPECIFIC 0x80
  69. #define PRIVATE 0xC0
  70. // Creating this function to change the format of GeneralizedTime
  71. LPBYTE DispSumTime(HFRAME hFrame, LPBYTE TempFrame, int ClassValue, int OffSet, DWORD TypeVal);
  72. LPBYTE TempFrame, TempFramePadata, TempFrameReq, TempFrameReq2;
  73. DWORD TypeVal, TypeVal2, TypeVal3;
  74. #define TIME_FORMAT_STRING "%c%c/%c%c/%c%c%c%c %c%c:%c%c:%c%c UTC Time Zone"
  75. #define TIME_FORMAT_SIZE sizeof("00/00/0000 00:00:00 UTC Time Zone")
  76. #define MAX_SERVER_NAME_SEGMENTS 100
  77. LPPROTOCOLINFO ProtoInfo;
  78. BOOL TestForUDP;
  79. //char test[1];
  80. char MsgType[ sizeof "Didn't recognize" ]/*, MsgType2[24]*/;
  81. //char PrinName[32];
  82. BYTE LongSize, TempStore, TempStoreEF;
  83. int x, OffSet, lValue, ClassValue;
  84. WORD TempLen;
  85. // Definitions for KDC-REP
  86. BYTE TempRepCname, TempRepGString, TempReqPadata, TempReq;
  87. int lValueRepMsg, lValueCname, lValuePadata, lValueReq;
  88. // Following enum is for the variables of KDC-REP
  89. enum{
  90. PvnoKdcRep = 0,
  91. MsgTypeKdcRep,
  92. PaDataKdcRep,
  93. CrealmKdcRep,
  94. CnameKdcRep,
  95. TicketKdcRep,
  96. EncpartKdcRep
  97. };
  98. // End definitions for KDC-REP
  99. // Following enum is for Variables of ticket
  100. enum{
  101. tktvno = 0,
  102. realm,
  103. sname,
  104. encpart
  105. };
  106. enum{
  107. app1 = 1
  108. };
  109. enum{
  110. PVNO =1,
  111. MSGTYPE,
  112. PADATA,
  113. REQBODY
  114. };
  115. enum{
  116. nametype = 0,
  117. namestring
  118. };
  119. // Set values for Principal Name types
  120. enum{
  121. NT_UKNOWN = 0,
  122. NT_PRINCIPAL,
  123. NT_SRV_INST,
  124. NT_SRV_HST,
  125. NT_SRV_XHST,
  126. NT_UID,
  127. NT_X500_PRINCIPAL
  128. };
  129. // Enum to set the Tag values for KRB-ERROR
  130. enum{
  131. PvnoErr = 0,
  132. MsgtypeErr,
  133. CtimeErr,
  134. CusecErr,
  135. StimeErr,
  136. SusecErr,
  137. ErrorcodeErr,
  138. CrealmErr,
  139. CnameErr,
  140. RealmErr,
  141. SnameErr,
  142. EtextErr,
  143. EdataErr
  144. };
  145. // Enum to assign values to Kerberos Errors
  146. enum{
  147. KDC_ERR_NONE = 0, // 0
  148. KDC_ERR_NAME_EXP, // 1
  149. KDC_ERR_SERVICE_EXP, // 2
  150. KDC_ERR_BAD_PVNO, // 3
  151. KDC_ERR_C_OLD_MAST_KVNO, // 4
  152. KDC_ERR_S_OLD_MAST_KVNO, // 5
  153. KDC_ERR_C_PRINCIPAL_UNKNOWN, // 6
  154. KDC_ERR_S_PRINCIPAL_UNKNOWN, // 7
  155. KDC_ERR_PRINCIPAL_NOT_UNIQUE, // 8
  156. KDC_ERR_NULL_KEY, // 9
  157. KDC_ERR_CANNOT_POSTDATE, // 10
  158. KDC_ERR_NEVER_VALID, // 11
  159. KDC_ERR_POLICY, // 12
  160. KDC_ERR_BADOPTION, // 13
  161. KDC_ERR_ETYPE_NOSUPP, // 14
  162. KDC_ERR_SUMTYPE_NOSUPP, // 15
  163. KDC_ERR_PADATA_TYPE_NOSUPP, // 16
  164. KDC_ERR_TRTYPE_NOSUPP, // 17
  165. KDC_ERR_CLIENT_REVOKED, // 18
  166. KDC_ERR_SERVICE_REVOKED, // 19
  167. KDC_ERR_TGT_REVOKED, // 20
  168. KDC_ERR_CLIENT_NOTYET, // 21
  169. KDC_ERR_SERVICE_NOTYET, // 22
  170. KDC_ERR_KEY_EXPIRED, // 23
  171. KDC_ERR_PREAUTH_FAILED, // 24
  172. KDC_ERR_PREAUTH_REQUIRED, // 25
  173. KDC_ERR_SERVER_NOMATCH, // 26
  174. KDC_ERR_MUST_USE_USER2USER, // 27
  175. KDC_ERR_PATH_NOT_ACCEPTED, // 28
  176. KDC_ERR_SVC_UNAVAILABLE, // 29
  177. KRB_AP_ERR_BAD_INTEGRITY = 31, // 31
  178. KRB_AP_ERR_TKT_EXPIRED, // 32
  179. KRB_AP_ERR_TKT_NYV, // 33
  180. KRB_AP_ERR_REPEAT, // 34
  181. KRB_AP_ERR_NOT_US, // 35
  182. KRB_AP_ERR_BADMATCH, // 36
  183. KRB_AP_ERR_SKEW, // 37
  184. KRB_AP_ERR_BADADDR, // 38
  185. KRB_AP_ERR_BADVERSION, // 39
  186. KRB_AP_ERR_MSG_TYPE, // 40
  187. KRB_AP_ERR_MODIFIED, // 41
  188. KRB_AP_ERR_BADORDER, // 42
  189. KRB_AP_ERR_BADKEYVER = 44, // 44
  190. KRB_AP_ERR_NOKEY, // 45
  191. KRB_AP_ERR_MUT_FAIL, // 46
  192. KRB_AP_ERR_BADDIRECTION, // 47
  193. KRB_AP_ERR_METHOD, // 48
  194. KRB_AP_ERR_BADSEQ, // 49
  195. KRB_AP_ERR_INAPP_CKSUM, // 50
  196. KRB_AP_PATH_NOT_ACCEPTED, // 51
  197. KRB_ERR_RESPONSE_TOO_BIG, // 52
  198. KRB_ERR_GENERIC = 60, // 60
  199. KRB_ERR_FIELD_TOOLONG, // 61
  200. KDC_ERROR_CLIENT_NOT_TRUSTED, // 62
  201. KDC_ERROR_KDC_NOT_TRUSTED, // 63
  202. KDC_ERROR_INVALID_SIG, // 64
  203. KDC_ERROR_KEY_TOO_WEAK, // 65
  204. KDC_ERR_CERTIFICATE_MISMATCH, // 66
  205. KDC_AP_ERROR_NO_TGT, // 67
  206. KDC_ERR_WRONG_REALM, // 68
  207. KDC_AP_ERR_USER_TO_USER_REQURED, // 69
  208. KDC_ERR_CANT_VERIFY_CERTIFICATE, // 70
  209. KDC_ERR_INVALID_CERTIFICATE, // 71
  210. KDC_ERR_REVOKED_CERTIFICATE, // 72
  211. KDC_ERR_REVOCATION_STATUS_UNKNOWN, //73
  212. KDC_ERR_REVOCATION_STATUS_UNAVAILABLE, // 74
  213. KDC_ERR_CLIENT_NAME_MISMATCH, // 75
  214. KDC_ERR_KDC_NAME_MISMATCH // 76
  215. };
  216. // End Enum for error codes
  217. // Values of padata type
  218. enum{
  219. PA_TGS_REQ = 1,
  220. PA_ENC_TIMESTAMP, // 2
  221. PA_PW_SALT, // 3
  222. Reserved, // 4
  223. PA_ENC_UNIX_TIME, // 5
  224. PA_SANDIA_SECUREID, // 6
  225. PA_SESAME, // 7
  226. PA_OSF_DCE, // 8
  227. PA_CYBERSAFE_SECUREID, // 9
  228. PA_AFS3_SALT, // 0x0A
  229. PA_ETYPE_INFO, // 0x0B
  230. SAM_CHALLENGE, // 0x0C
  231. SAM_RESPONSE, // 0x0D
  232. PA_PK_AS_REQ, // 0x0E
  233. PA_PK_AS_REP, // 0x0F
  234. PA_PK_AS_SIGN, // 0x10
  235. PA_PK_KEY_REQ, // 0x11
  236. PA_PK_KEY_REP, // 0x12
  237. PA_USE_SPECIFIELD_KVNO, // 0x13
  238. SAM_REDIRECT, // 0x14
  239. PA_GET_FROM_TYPED_DATA // 0x15
  240. };
  241. enum{
  242. kdcoptions = 0,
  243. cnamebody,
  244. realmbody,
  245. snamebody,
  246. frombody,
  247. tillbody,
  248. rtimebody,
  249. noncebody,
  250. etypebody,
  251. addressesbody,
  252. encauthdatabody,
  253. addtixbody
  254. };
  255. enum{
  256. addrtype = 0,
  257. address
  258. };
  259. enum{
  260. etype = 0,
  261. kvno,
  262. cipher
  263. };
  264. enum{
  265. PvnoApReq = 0,
  266. MsgTypeApReq,
  267. ApOptionsApReq,
  268. TicketApReq,
  269. AuthenticatorApReq
  270. };
  271. enum { ticket = 1};
  272. enum{
  273. Tixtkt_vno = 0,
  274. TixRealm,
  275. TixSname,
  276. TixEnc_part
  277. };
  278. enum{
  279. methodtype = 0,
  280. methoddata
  281. };
  282. // kf 8/10 Rem the ifdef and trying to prevent global variables
  283. // Using this statement to prevent multiple definitions
  284. //#ifdef MAINPROG
  285. // Defining these here while troubleshooting a report Access Violation
  286. // Need to define the values locally and do away with as many of the
  287. // Global variables as possible.
  288. //KF 10/15 CHANGING TO LABELED_BIT IN ORDER TO TRY AND PHASE OUT
  289. // QUAL_BITFIELDS AND USE QUAL_FLAGS. THERE ARE APPROX 15 BITFIELD
  290. // USED IN KERBEROSDATABASE. I WILL COMMENT THERE WHERE I CHANGED TO FLAGS
  291. // BUT I WILL NOT COMMENT THE LABLELS ANY MORE. ALL LABELED_BYTES HAVE BEEN
  292. // CHANGED TO LABELED_BIT
  293. //LABELED_BYTE ClassTag[] = {
  294. LABELED_BYTE ClassTag[] = {
  295. {0xC0, NULL},
  296. {UNIVERSAL, "Class Tag (Universal)"},
  297. {APPLICATION, "Class Tag (Application)"},
  298. {CONTEXT_SPECIFIC, "Class Tag (Context Specific)"},
  299. {PRIVATE, "Class Tag (Private)"},
  300. };
  301. SET ClassTagSet = { (sizeof(ClassTag)/sizeof(LABELED_BYTE)), ClassTag };
  302. LABELED_BIT PC[] = {
  303. { 5, "P/C (Primitive)", "P/C (Constructed)"},
  304. };
  305. SET PCSet = { sizeof(PC)/sizeof(LABELED_BIT), PC };
  306. LABELED_BYTE KrbMsgType[] = {
  307. {0x1F, NULL},
  308. {ASN1_KRB_AS_REQ, "KRB_AS_REQ"},
  309. {ASN1_KRB_AS_REP, "KRB_AS_REP"},
  310. {ASN1_KRB_TGS_REQ, "KRB_TGS_REQ"},
  311. {ASN1_KRB_TGS_REP, "KRB_TGS_REP"},
  312. {ASN1_KRB_AP_REQ, "KRB_AP_REQ"},
  313. {ASN1_KRB_AP_REP, "KRB_AP_REP"},
  314. {ASN1_KRB_SAFE, "KRB_SAFE"},
  315. {ASN1_KRB_PRIV, "KRB_PRIV"},
  316. {ASN1_KRB_CRED, "KRB_CRED"},
  317. {ASN1_KRB_ERROR, "KRB_ERROR"}
  318. };
  319. SET KrbMsgTypeSet = { (sizeof(KrbMsgType)/sizeof(LABELED_BYTE)), KrbMsgType };
  320. LABELED_BIT Length[] = {
  321. { 7, "Short Form", "Long Form"},
  322. };
  323. SET LengthSet = { sizeof(Length)/sizeof(LABELED_BIT), Length };
  324. LABELED_BYTE UniversalTag[] = {
  325. {0x1F, NULL},
  326. {0x01, "BOOLEAN"},
  327. {0x02, "INTEGER"},
  328. {0x03, "BIT STRING"},
  329. {0x04, "OCTET STRING"},
  330. {0x05, "NULL"},
  331. {0x06, "OBJECT IDENTIFIER"},
  332. {0x07, "ObjectDescriptor"},
  333. {0x08, "EXTERNAL"},
  334. {0x09, "REAL"},
  335. {0x0A, "ENUMERATED"},
  336. {0x10, "SEQUENCE/SEQUENCE OF"},
  337. {0x11, "SET/SET OF"},
  338. {0x12, "NumericString"},
  339. {0x13, "PrintableString"},
  340. {0x14, "T61String"},
  341. {0x15, "VideotexString"},
  342. {0x16, "IA5String"},
  343. {0x17, "UTCTime"},
  344. {0x18, "GeneralizedTime"},
  345. {0x19, "GraphicString"},
  346. {0x1A, "VisibleString"},
  347. {0x1B, "GeneralString"}
  348. };
  349. SET UniversalTagSet = { sizeof(UniversalTag)/sizeof(LABELED_BYTE), UniversalTag };
  350. LABELED_BYTE KdcReqTag[] = {
  351. {0x1F, NULL},
  352. {PVNO, "Protocol Version 5 (pvno[1])"},
  353. {MSGTYPE, "Kerberos Message Type (msg-type[2])"},
  354. {PADATA, "Pre-Authentication Data (padata[3])"},
  355. {REQBODY, "KDC-Req-Body (req-body[4])"}
  356. };
  357. SET KdcReqTagSet = { sizeof(KdcReqTag)/sizeof(LABELED_BYTE), KdcReqTag };
  358. LABELED_BYTE PaDataTag[] = {
  359. {0x1F, NULL},
  360. {0x01, "padata-type[1]"},
  361. {0x02, "padata-value[2]"}
  362. };
  363. SET PaDataTagSet = { sizeof(PaDataTag)/sizeof(LABELED_BYTE), PaDataTag };
  364. // For kdcrep packet
  365. LABELED_BYTE KdcRepTag[] = {
  366. {0x1F, NULL},
  367. {PvnoKdcRep, "Protocol Version 5 (pvno[0])"},
  368. {MsgTypeKdcRep, "Kerberos Message Type (msg-type[1])"},
  369. {PaDataKdcRep, "Pre-Auth (padata[2])"},
  370. {CrealmKdcRep, "Realm (crealm[3])"},
  371. {CnameKdcRep, "Principal ID (cname[4])"},
  372. {TicketKdcRep, "Ticket (ticket[5])"},
  373. {EncpartKdcRep, "CipherText (enc-part[6])"}
  374. };
  375. SET KdcRepTagSet = {sizeof(KdcRepTag)/sizeof(LABELED_BYTE), KdcRepTag};
  376. LABELED_BYTE PrincipalName[] = {
  377. {0x1F, NULL},
  378. {nametype, "Name Type (name-type[0])"},
  379. {namestring, "Name String (name-string[1])"}
  380. };
  381. SET PrincipalNameSet = {sizeof(PrincipalName)/sizeof(LABELED_BYTE), PrincipalName};
  382. LABELED_BYTE PrincNameType[] = {
  383. {0x1F, NULL},
  384. {NT_UKNOWN, "NT_UNKNOWN (Name Type not Known)"},
  385. {NT_PRINCIPAL, "NT_PRINCIPAL (Name of Principal)"},
  386. {NT_SRV_INST, "NT_SRV_INST (Service & other unique Instance)"},
  387. {NT_SRV_HST, "NT_SRV_HST (Serv with Host Name as Instance)"},
  388. {NT_SRV_XHST, "NT_SRV_XHST (Service with Host as remaining components)"},
  389. {NT_UID, "NT_UID (Unique ID)"},
  390. {NT_X500_PRINCIPAL, "NT_X500_PRINCIPAL (Encoded X.509 Distinguished Name)"}
  391. };
  392. SET PrincNameTypeSet = {sizeof(PrincNameType)/sizeof(LABELED_BYTE), PrincNameType};
  393. LABELED_BYTE KrbTicket[] = {
  394. {0x1F, NULL},
  395. {tktvno, "Ticket Version (tkt-vno[0])"},
  396. {realm, "Realm (realm[1])"},
  397. {sname, "Server ID (sname[2])"},
  398. {encpart, "Cipher Text (enc-part[3])"}
  399. };
  400. SET KrbTicketSet = {sizeof(KrbTicket)/sizeof(LABELED_BYTE), KrbTicket};
  401. LABELED_BYTE KrbTixApp1 [] = {
  402. {0x1F, NULL},
  403. {app1, "Ticket ::= [APPLICATION 1]"}
  404. };
  405. SET KrbTixApp1Set = {sizeof(KrbTixApp1)/sizeof(LABELED_BYTE), KrbTixApp1};
  406. LABELED_BYTE KrbErrTag [] = {
  407. {0x1F, NULL},
  408. {PvnoErr, "Protocol Version (pvno[0])"},
  409. {MsgtypeErr, "Message Type (msg-type[1])"},
  410. {CtimeErr, "Client Current Time (ctime[2])"},
  411. {CusecErr, "MicroSec on Client (cusec[3])"},
  412. {StimeErr, "Server Current Time (stime[4])"},
  413. {SusecErr, "MicroSec on Server (susec[5])"},
  414. {ErrorcodeErr, "Error Code (error-code[6])"},
  415. {CrealmErr, "Client Realm (crealm[7])"},
  416. {CnameErr, "Client Name (cname[8])"},
  417. {RealmErr, "Correct Realm (realm[9])"},
  418. {SnameErr, "Server Name (sname[10])"},
  419. {EtextErr, "Addtional Error Info (etext[11])"},
  420. {EdataErr, "Error Handling Data (edata[12])"}
  421. };
  422. SET KrbErrTagSet = {sizeof(KrbErrTag)/sizeof(LABELED_BYTE), KrbErrTag};
  423. LABELED_BYTE KrbErrCode [] = {
  424. {0xFF, NULL},
  425. {KDC_ERR_NONE, "No error"}, // 0
  426. {KDC_ERR_NAME_EXP, "Client's entry in database has expired"}, // 1
  427. {KDC_ERR_SERVICE_EXP, "Server's entry in database has expired"},// 2
  428. {KDC_ERR_BAD_PVNO, "Requested protocol ver. number not supported"}, // 3
  429. {KDC_ERR_C_OLD_MAST_KVNO, "Client's key encrypted in old master key"}, // 4
  430. {KDC_ERR_S_OLD_MAST_KVNO, "Server's key encrypted in old master key"}, //5
  431. {KDC_ERR_C_PRINCIPAL_UNKNOWN, "Client not found in Kerberos database"},//6
  432. {KDC_ERR_S_PRINCIPAL_UNKNOWN, "Server not found in Kerberos database"},//7
  433. {KDC_ERR_PRINCIPAL_NOT_UNIQUE, "Multiple principal entries in database"},//8
  434. {KDC_ERR_NULL_KEY, "The client or server has a null key"},//9
  435. {KDC_ERR_CANNOT_POSTDATE, "Ticket not eligible for postdating"},//10
  436. {KDC_ERR_NEVER_VALID, "Requested start time is later than end time"},//11
  437. {KDC_ERR_POLICY, "KDC policy rejects request"}, //12
  438. {KDC_ERR_BADOPTION, "KDC cannot accommodate requested option"}, //13
  439. {KDC_ERR_ETYPE_NOSUPP, "KDC has no support for encryption type"}, //14
  440. {KDC_ERR_SUMTYPE_NOSUPP, "KDC has no support for checksum type"}, //15
  441. {KDC_ERR_PADATA_TYPE_NOSUPP, "KDC has no support for padata type"}, //16
  442. {KDC_ERR_TRTYPE_NOSUPP, "KDC has no support for transited type"}, //17
  443. {KDC_ERR_CLIENT_REVOKED, "Clients credentials have been revoked"}, //18
  444. {KDC_ERR_SERVICE_REVOKED, "Credentials for server have been revoked"}, //19
  445. {KDC_ERR_TGT_REVOKED, "TGT has been revoked"}, //20
  446. {KDC_ERR_CLIENT_NOTYET, "Client not yet valid try again later"}, //21
  447. {KDC_ERR_SERVICE_NOTYET, "Server not yet valid try again later"}, //22
  448. {KDC_ERR_KEY_EXPIRED, "Password has expired change password to reset"}, //23
  449. {KDC_ERR_PREAUTH_FAILED, "Pre-authentication information was invalid"}, //24
  450. {KDC_ERR_PREAUTH_REQUIRED, "Additional preauthentication required"}, //25
  451. {KDC_ERR_SERVER_NOMATCH, "Requested Server and ticket don't match"}, // 26
  452. {KDC_ERR_MUST_USE_USER2USER, "Server principal valid for user2user only"}, // 27
  453. {KDC_ERR_PATH_NOT_ACCEPTED, "KDC Policy rejects transited patth"}, //28
  454. {KDC_ERR_SVC_UNAVAILABLE, "A service is not available"}, // 29
  455. {KRB_AP_ERR_BAD_INTEGRITY, "Integrity check on decrypted field failed"}, //31
  456. {KRB_AP_ERR_TKT_EXPIRED, "Ticket expired"}, //32
  457. {KRB_AP_ERR_TKT_NYV, "Ticket not yet valid"}, //33
  458. {KRB_AP_ERR_REPEAT, "Request is a replay"}, //34
  459. {KRB_AP_ERR_NOT_US, "The ticket isn't for us"}, //35
  460. {KRB_AP_ERR_BADMATCH, "Ticket and authenticator don't match"}, //36
  461. {KRB_AP_ERR_SKEW, "Clock skew too great"}, // 37
  462. {KRB_AP_ERR_BADADDR, "Incorrect net address"}, // 38
  463. {KRB_AP_ERR_BADVERSION, "Protocol version mismatch"}, // 39
  464. {KRB_AP_ERR_MSG_TYPE, "Invalid msg type"}, // 40
  465. {KRB_AP_ERR_MODIFIED, "Message stream modified"}, //41
  466. {KRB_AP_ERR_BADORDER, "Message out of order"}, //42
  467. {KRB_AP_ERR_BADKEYVER, "Specified version of key is not available"}, //44
  468. {KRB_AP_ERR_NOKEY, "Service key not available"}, //45
  469. {KRB_AP_ERR_MUT_FAIL, "Mutual authentication failed"}, // 46
  470. {KRB_AP_ERR_BADDIRECTION, "Incorrect message direction"}, // 47
  471. {KRB_AP_ERR_METHOD, "Alternative authentication method required"}, // 48
  472. {KRB_AP_ERR_BADSEQ, "Incorrect sequence number in message"}, // 49
  473. {KRB_AP_ERR_INAPP_CKSUM, "Inappropriate type of checksum in message"}, // 50
  474. {KRB_AP_PATH_NOT_ACCEPTED, "Policy rejects transited path"}, // 51
  475. {KRB_ERR_RESPONSE_TOO_BIG, "Response too big for UDP, retry with TCP"}, // 52
  476. {KRB_ERR_GENERIC, "Generic error"}, // 60
  477. {KRB_ERR_FIELD_TOOLONG, "Field is too long for this implementation"}, // 61
  478. {KDC_ERROR_CLIENT_NOT_TRUSTED, "Client is not trusted"}, // 62
  479. {KDC_ERROR_KDC_NOT_TRUSTED, "KDC is not trusted"}, // 63
  480. {KDC_ERROR_INVALID_SIG, "Invalid signature"}, // 64
  481. {KDC_ERROR_KEY_TOO_WEAK, "Key is too weak"}, // 65
  482. {KDC_ERR_CERTIFICATE_MISMATCH, "Certificate does not match"}, // 66
  483. {KDC_AP_ERROR_NO_TGT, "No TGT"}, // 67
  484. {KDC_ERR_WRONG_REALM, "Wrong realm"}, // 68
  485. {KDC_AP_ERR_USER_TO_USER_REQURED, "User to User required"}, // 69
  486. {KDC_ERR_CANT_VERIFY_CERTIFICATE, "Can't verify certificate"}, // 70
  487. {KDC_ERR_INVALID_CERTIFICATE, "Invalid certificate"}, // 71
  488. {KDC_ERR_REVOKED_CERTIFICATE, "Revoked certificate"}, // 72
  489. {KDC_ERR_REVOCATION_STATUS_UNKNOWN, "Revocation status unknown"}, //73
  490. {KDC_ERR_REVOCATION_STATUS_UNAVAILABLE, "Revocation status unavailable"}, // 74
  491. {KDC_ERR_CLIENT_NAME_MISMATCH, "Client name mismatch"}, //75
  492. {KDC_ERR_KDC_NAME_MISMATCH, "KDC name mismatch"} // 76
  493. };
  494. SET KrbErrCodeSet = {sizeof(KrbErrCode)/sizeof(LABELED_BYTE), KrbErrCode};
  495. LABELED_BYTE PadataTypeVal [] = {
  496. {0xFF, NULL},
  497. {PA_TGS_REQ, "PA-TGS-REQ"},
  498. {PA_ENC_TIMESTAMP, "PA-ENC-TIMESTAMP"},
  499. {PA_PW_SALT, "PA-PW-SALT"},
  500. {Reserved, "Reserved Value"},
  501. {PA_ENC_UNIX_TIME, "PA-END-UNIX-TIME"},
  502. {PA_SANDIA_SECUREID, "PA-SANDIA-SECUREID"},
  503. {PA_AFS3_SALT, "PA-AFS3-SALT"},
  504. {PA_ETYPE_INFO, "PA-ETYPE-INFO"},
  505. {SAM_CHALLENGE, "SAM-CHALLENGE"},
  506. {SAM_RESPONSE, "SAM-RESPONSE"},
  507. {PA_PK_AS_REQ, "PA-PK-AS-REP"},
  508. {PA_PK_AS_REP, "PA-PK-AS-REP"},
  509. {PA_PK_AS_SIGN, "PA-PK-AS-SIGN"},
  510. {PA_PK_KEY_REQ, "PA-PK-KEY-REQ"},
  511. {PA_PK_KEY_REP, "PA-PK-KEY-REP"},
  512. {PA_USE_SPECIFIELD_KVNO, "PA-USE-SPECIFIELD-KVNO"},
  513. {SAM_REDIRECT, "SAM-REDIRECT"},
  514. {PA_GET_FROM_TYPED_DATA, "PA-GET-FROM-TYPED-DATA"}
  515. };
  516. SET PadataTypeValSet = {sizeof(PadataTypeVal)/sizeof(LABELED_BYTE), PadataTypeVal};
  517. LABELED_BYTE KdcReqBody [] = {
  518. {0x1F, NULL},
  519. {kdcoptions, "Ticket Flags (kdc-options[0])"},
  520. {cnamebody, "Client Name (cname[1])"},
  521. {realmbody, "Realm (realm[2])"},
  522. {snamebody, "Server Name (sname[3])"},
  523. {frombody, "Start Time (from[4])"},
  524. {tillbody, "Expiration date (till[5])"},
  525. {rtimebody, "Requested renew till (rtime[6])"},
  526. {noncebody, "Random Number (nonce[7])"},
  527. {etypebody, "Encryption Alg. (etype[8])"},
  528. {addressesbody, "Addresses (addresses[9])"},
  529. {encauthdatabody, "Cipher Text (enc-authorization-data[10])"},
  530. {addtixbody, "Additional Tix (additional-ticketsp[11])"}
  531. };
  532. SET KdcReqBodySet = {sizeof(KdcReqBody)/sizeof(LABELED_BYTE), KdcReqBody};
  533. LABELED_BYTE HostAddresses [] = {
  534. {0x1F, NULL},
  535. {addrtype, "Type of Address (addr-type[0])"},
  536. {address, "Addresses (address[1])"}
  537. };
  538. SET HostAddressesSet = {sizeof(HostAddresses)/sizeof(LABELED_BYTE), HostAddresses};
  539. // KDC-Options
  540. LABELED_BIT KdcOptionFlags[] =
  541. { {31, "Reserved (Bit 0)", // 0 bit = Reserved,
  542. "Reserved (Bit 0)"
  543. },
  544. {30, "Forwardable Bit Not Set (Bit 1)", // 1 bit = Fowardable
  545. "Forwardable Bit Set (Bit 1)"
  546. },
  547. {29, "Forwarded Bit Not Set (Bit 2)", // 2 bit = Forwarded
  548. "Fowarded Bit Set (Bit 2)"
  549. },
  550. {28, "Proxiable Bit Not Set (Bit 3)", // 3 bit = Proxiable
  551. "Proxiable Bit Set (Bit 3)"
  552. },
  553. {27, "Proxy Bit Not Set (Bit 4)", // 4 bit = Proxy
  554. "Proxy Bit Set (Bit 4)"
  555. },
  556. {26, "Allow-PostDate Bit Not Set (Bit 5)", // 5 bit = Allow-Postdate
  557. "May-Postdate Bit Set (Bit 5)"
  558. },
  559. {25, "PostDated Bit Not Set (Bit 6)", // 6 bit = Postdated
  560. "Postdated Bit Set (Bit 6)"
  561. },
  562. {24, "Unused (Bit 7)", // 7 bit = Unused
  563. "Unused (Bit 7) "
  564. },
  565. {23, "Renewable Bit Not Set (Bit 8)", // 8 bit = Renewable
  566. "Renewable Bit Set (Bit 8)"
  567. },
  568. {22, "Unused (Bit 9)", // 9 bit = Reserved
  569. "Unused (Bit 9)"
  570. },
  571. {21, "Unused (Bit 10)", // 10 bit = Reserved
  572. "Unused (Bit 10)"
  573. },
  574. {20, "Unused (Bit 11)", // 11 bit = Reserved
  575. "Unused (Bit 11)"
  576. },
  577. {19, "Unused (Bit 12)", // 12 bit = Reserved
  578. "Unused (Bit 12)"
  579. },
  580. {18, "Unused (Bit 13)", // 13 bit = Reserved
  581. "Unused (Bit 13)"
  582. },
  583. {17, "Request-Anonymous Bit Not Set (Bit 14)", // 14 bit = Reserved
  584. "Request-Anonymous Bit Set (Bit 14)"
  585. },
  586. {16, "Name-Canonicalize Bit Not Set (Bit 15)", // 15 bit = Reserved
  587. "Name-Canonicalize Bit Set (Bit 15)"
  588. },
  589. {15, "Reserved (Bit 16)", // 16 bit = Reserved
  590. "Reserved (Bit 16)"
  591. },
  592. {14, "Reserved (Bit 17)", // 17 bit = Reserved
  593. "Reserved (Bit 17)"
  594. },
  595. {13, "Reserved (Bit 18)", // 18 bit = Reserved
  596. "Reserved (Bit 18)"
  597. },
  598. {12, "Reserved (Bit 19)", // 19 bit = Reserved
  599. "Reserved (Bit 19)"
  600. },
  601. {11, "Reserved (Bit 20)", // 20 bit = Reserved
  602. "Reserved (Bit 20)"
  603. },
  604. {10, "Reserved (Bit 21)", // 21 bit = Reserved
  605. "Reserved (Bit 21)"
  606. },
  607. {9, "Reserved (Bit 22)", // 22 bit = Reserved
  608. "Reserved (Bit 22)"
  609. },
  610. {8, "Reserved (Bit 23)", // 23 bit = Reserved
  611. "Reserved (Bit 23)"
  612. },
  613. {7, "Reserved (Bit 24)", // 24 bit = Reserved
  614. "Reserved (Bit 24)"
  615. },
  616. {6, "Reserved (Bit 25)", // 25 bit = Reserved
  617. "Reserved (Bit 25)"
  618. },
  619. {5, "Disable-Transited-Check Bit Not Set (Bit 26)", // 26 bit = Reserved
  620. "Disable-Transited-Check Bit Set (Bit 26)"
  621. },
  622. {4, "Renewable-OK Bit Not Set (Bit 27)", // 27 bit = Renewable-OK
  623. "Renewable-OK Bit Set (Bit 27)"
  624. },
  625. {3, "Enc-Tkt-In-Skey Bit Not Set (Bit 28)", // 28 bit = Enc-Tkt-In-Skey
  626. "Enc-Tkt-In-Skey Bit Not Set (Bit 28)"
  627. },
  628. {2, "Reserved (Bit 29)", // 29 bit = Reserved
  629. "Reserved (Bit 29)"
  630. },
  631. {1, "Renew Bit Not Set (Bit 30)", // 30 bit = Renew
  632. "Renew Bit Set (Bit 30)"
  633. },
  634. {0, "Validate Bit Not Set (Bit 31)", // 31 bit = Validate
  635. "Validate Bit Set (Bit 31)"
  636. }
  637. };
  638. SET KdcOptionFlagsSet = {sizeof(KdcOptionFlags)/sizeof(LABELED_BIT), KdcOptionFlags};
  639. LABELED_BYTE EncryptionType [] = {
  640. {0xFF, NULL},
  641. {KERB_ETYPE_RC4_HMAC_OLD, "RC4-HMAC-OLD"},
  642. {KERB_ETYPE_RC4_PLAIN_OLD, "RC4-PLAIN-OLD"},
  643. {KERB_ETYPE_RC4_HMAC_OLD_EXP, "RC4-HMAC-OLD-EXP"},
  644. {KERB_ETYPE_RC4_PLAIN_OLD_EXP, "RC4-PLAIN-OLD-EXP"},
  645. {KERB_ETYPE_RC4_PLAIN, "RC4-PLAIN"},
  646. {KERB_ETYPE_RC4_PLAIN_EXP, "RC4-PLAIN-EXP"},
  647. {KERB_ETYPE_NULL, "NULL"},
  648. {KERB_ETYPE_DES_CBC_CRC, "DES-CBC-CRC"},
  649. {KERB_ETYPE_DES_CBC_MD4, "DES-CBC-MD4"},
  650. {KERB_ETYPE_DES_CBC_MD5, "DES-CBC-MD5"},
  651. {KERB_ETYPE_DSA_SHA1_CMS, "DSA-SHA1-CMS"},
  652. {KERB_ETYPE_RSA_MD5_CMS, "RSA-MD5-CMS"},
  653. {KERB_ETYPE_RSA_SHA1_CMS, "RSA-SHA1-CMS"},
  654. {KERB_ETYPE_RC2_CBC_ENV, "RC2-CBC-ENV"},
  655. {KERB_ETYPE_RSA_ENV, "RSA-ENV"},
  656. {KERB_ETYPE_RSA_ES_OEAP_ENV, "RSA-ES-OEAP-ENV"},
  657. {KERB_ETYPE_DES_EDE3_CBC_ENV, "DES-EDE3-CBC-ENV"},
  658. {KERB_ETYPE_DES_CBC_MD5_NT, "DES-CBC-MD5-NT"},
  659. {KERB_ETYPE_RC4_HMAC_NT, "RC4-HMAC-NT"},
  660. {KERB_ETYPE_RC4_HMAC_NT_EXP, "RC4-HMAC-NT-EXP"},
  661. {KERB_ETYPE_OLD_RC4_MD4, "RC4-MD4-OLD"},
  662. {KERB_ETYPE_OLD_RC4_PLAIN, "RC4-PLAIN-OLD"},
  663. {KERB_ETYPE_OLD_RC4_LM, "RC4-LM-OLD"},
  664. {KERB_ETYPE_OLD_RC4_SHA, "RC4-SHA-OLD"},
  665. {KERB_ETYPE_OLD_DES_PLAIN, "DES-PLAIN-OLD"}
  666. };
  667. SET EncryptionTypeSet = {sizeof(EncryptionType)/sizeof(LABELED_BYTE), EncryptionType};
  668. LABELED_BYTE EncryptedData[] ={
  669. {0x1F, NULL},
  670. {etype, "Encryption Type (etype[0])"},
  671. {kvno, "Key Version Number (kvno[1])"},
  672. {cipher, "Enciphered Text (cipher[2]"}
  673. };
  674. SET EncryptedDataSet = {sizeof(EncryptedData)/sizeof(LABELED_BYTE), EncryptedData};
  675. LABELED_BYTE KrbApReq[] = {
  676. {0x1F, NULL},
  677. {PvnoApReq, "Protocol Version (pvno[0])"},
  678. {MsgTypeApReq, "Message Type (msg-type[1])"},
  679. {ApOptionsApReq, "AP Options (ap-options[2])"},
  680. {TicketApReq, "Ticket (ticket[3])"},
  681. {AuthenticatorApReq, "Authenticator (authenticator[4])"}
  682. };
  683. SET KrbApReqSet = {sizeof(KrbApReq)/sizeof(LABELED_BYTE), KrbApReq};
  684. // AP-Options
  685. LABELED_BIT ApOptionFlags[] =
  686. { {31, "Reserved (Bit 0)", // 0 bit = Reserved,
  687. "Reserved (Bit 0)"
  688. },
  689. {30, "Use-Session-Key Bit Not Set(Bit 1)", // 1 bit = Use-Session-Key
  690. "Use-Session-Key Bit Set (Bit 1)"
  691. },
  692. {29, "Mutual-Required Bit Not Set (Bit 2)", // 2 bit = Mutual-Required
  693. "Mutual-Required Bit Set (Bit 2)"
  694. },
  695. {28, "Reserved (Bit 3)", // 3 bit = Reserved
  696. "Reserved(Bit 3)"
  697. },
  698. {27, "Reserved (Bit 4)", // 4 bit = Reserved
  699. "Reserved (Bit 4)"
  700. },
  701. {26, "Reserved (Bit 5)", // 5 bit = Reserved
  702. "Reserved (Bit 5)"
  703. },
  704. {25, "Reserved (Bit 6)", // 6 bit = Reserved
  705. "Reserved (Bit 6)"
  706. },
  707. {24, "Reserved (Bit 7)", // 7 bit = Reserved
  708. "Reserved (Bit 7)"
  709. },
  710. {23, "Reserved (Bit 8)", // 8 bit = Reserved
  711. "Reserved (Bit 8)"
  712. },
  713. {22, "Reserved (Bit 9)", // 9 bit = Reserved
  714. "Reserved (Bit 9)"
  715. },
  716. {21, "Reserved (Bit 10)", // 10 bit = Reserved
  717. "Reserved (Bit 10)"
  718. },
  719. {20, "Reserved (Bit 11)", // 11 bit = Reserved
  720. "Reserved (Bit 11)"
  721. },
  722. {19, "Reserved (Bit 12)", // 12 bit = Reserved
  723. "Reserved (Bit 12)"
  724. },
  725. {18, "Reserved (Bit 13)", // 13 bit = Reserved
  726. "Reserved (Bit 13)"
  727. },
  728. {17, "Reserved (Bit 14)", // 14 bit = Reserved
  729. "Reserved (Bit 14)"
  730. },
  731. {16, "Reserved (Bit 15)", // 15 bit = Reserved
  732. "Reserved (Bit 15)"
  733. },
  734. {15, "Reserved (Bit 16)", // 16 bit = Reserved
  735. "Reserved (Bit 16)"
  736. },
  737. {14, "Reserved (Bit 17)", // 17 bit = Reserved
  738. "Reserved (Bit 17)"
  739. },
  740. {13, "Reserved (Bit 18)", // 18 bit = Reserved
  741. "Reserved (Bit 18)"
  742. },
  743. {12, "Reserved (Bit 19)", // 19 bit = Reserved
  744. "Reserved (Bit 19)"
  745. },
  746. {11, "Reserved (Bit 20)", // 20 bit = Reserved
  747. "Reserved (Bit 20)"
  748. },
  749. {10, "Reserved (Bit 21)", // 21 bit = Reserved
  750. "Reserved (Bit 21)"
  751. },
  752. {9, "Reserved (Bit 22)", // 22 bit = Reserved
  753. "Reserved (Bit 22)"
  754. },
  755. {8, "Reserved (Bit 23)", // 23 bit = Reserved
  756. "Reserved (Bit 23)"
  757. },
  758. {7, "Reserved (Bit 24)", // 24 bit = Reserved
  759. "Reserved (Bit 24)"
  760. },
  761. {6, "Reserved (Bit 25)", // 25 bit = Reserved
  762. "Reserved (Bit 25)"
  763. },
  764. {5, "Reserved (Bit 26)", // 26 bit = Reserved
  765. "Reserved (Bit 26)"
  766. },
  767. {4, "Reserved (Bit 27)", // 27 bit = Renewable-OK
  768. "Reserved (Bit 27)"
  769. },
  770. {3, "Reserved (Bit 28)", // 28 bit = Enc-Tkt-In-Skey
  771. "Reserved (Bit 28)"
  772. },
  773. {2, "Reserved (Bit 29)", // 29 bit = Reserved
  774. "Reserved (Bit 29)"
  775. },
  776. {1, "Reserved(Bit 30)", // 30 bit = Renew
  777. "Reserved (Bit 30)"
  778. },
  779. {0, "Reserved (Bit 31)", // 31 bit = Reserved
  780. "Reserved (Bit 31)"
  781. }
  782. };
  783. SET ApOptionFlagsSet = {sizeof(ApOptionFlags)/sizeof(LABELED_BIT), ApOptionFlags};
  784. LABELED_BYTE ApTicket[] = {
  785. {0x1F, NULL},
  786. {ticket, "AP Ticket"}
  787. };
  788. SET ApTicketSet = {sizeof(ApTicket)/sizeof(LABELED_BYTE), ApTicket};
  789. LABELED_BYTE TicketStruct[] = {
  790. {0x1F, NULL},
  791. {Tixtkt_vno, "Ticket Version Number (tkt-vno[0])"},
  792. {TixRealm, "Issuing Realm (realm[1])"},
  793. {TixSname, "Server (sname[2])"},
  794. {TixEnc_part, "Cipher Encoding (enc-part[3])"}
  795. };
  796. SET TicketStructSet = {sizeof(TicketStruct)/sizeof(LABELED_BYTE), TicketStruct};
  797. LABELED_BYTE MethodDataType[] = {
  798. {0x1F, NULL},
  799. {methodtype, "Req. Alt. Method (method-type[0])"},
  800. {methoddata, "Req. Alt. Info (method-data[1])"}
  801. };
  802. SET MethodDataSet = { (sizeof(MethodDataType)/sizeof(LABELED_BYTE)), MethodDataType};
  803. //=============================================================================
  804. // Kerberos database.
  805. //=============================================================================
  806. //KF 10/19/99 NEED TO GO THROUGH AND WEED OUT DUPLICATE NODES. ALSO
  807. // NEED TO RENAME THE DUPLICATES WHICH ARE NEEDED BECAUSE OF DIFFERENT
  808. // DATATYPE LABELS.
  809. PROPERTYINFO KerberosDatabase[] =
  810. {
  811. { // KerberosSummary 0x00
  812. // Global Variable,description for all Kerberos Message Types
  813. 0,0,
  814. MsgType,
  815. "Kerberos Packet",
  816. PROP_TYPE_SUMMARY,
  817. PROP_QUAL_NONE,
  818. 0,
  819. FORMAT_BUFFER_SIZE,
  820. FormatPropertyInstance},
  821. { // KerberosIDSummary 0x01
  822. // Global Variable, used in identifying the Identifier Octet for Kerberos frames
  823. 0,0,
  824. "Message Type",
  825. "Display Message Type",
  826. PROP_TYPE_BYTE,
  827. PROP_QUAL_NONE,
  828. 0,
  829. FORMAT_BUFFER_SIZE,
  830. FormatPropertyInstance},
  831. { // KerberosClassTag 0x02
  832. // Global Variable used to display ASN.1 Class tag of initial Identifier octet
  833. 0,0,
  834. "Class Tag",
  835. "Display Class Tag",
  836. PROP_TYPE_BYTE,
  837. //PROP_QUAL_FLAGS,
  838. PROP_QUAL_LABELED_BITFIELD,
  839. &ClassTagSet,
  840. FORMAT_BUFFER_SIZE,
  841. FormatPropertyInstance},
  842. { // PCIdentifier 0x03
  843. // Global Variable, used to determine method of encoding used.
  844. 0,0,
  845. "P/C",
  846. "Display Primitive/Constructed",
  847. PROP_TYPE_BYTE,
  848. PROP_QUAL_FLAGS,
  849. &PCSet,
  850. FORMAT_BUFFER_SIZE,
  851. FormatPropertyInstance},
  852. { // ASN1UnivTag 0x04
  853. // Global Variable, probably needs to be renamed. This takes the last 5 bits
  854. // of the Initial Identifier Octet and prints out the message type of the packet
  855. 0,0,
  856. "Contents",
  857. "Display Contents",
  858. PROP_TYPE_BYTE,
  859. PROP_QUAL_LABELED_BITFIELD,
  860. &UniversalTagSet,
  861. FORMAT_BUFFER_SIZE,
  862. FormatPropertyInstance},
  863. { // LengthSummary 0x05
  864. 0,0,
  865. "Length Summary",
  866. "Display Length Summary",
  867. PROP_TYPE_BYTE,
  868. PROP_QUAL_NONE,
  869. 0,
  870. FORMAT_BUFFER_SIZE,
  871. FormatPropertyInstance},
  872. { // LengthFlag 0x06
  873. // Global Variable, Used in determining if the ASN.1 length octet is short or long form
  874. 0,0,
  875. "Length Flag",
  876. "Display Length Flag",
  877. PROP_TYPE_BYTE,
  878. PROP_QUAL_FLAGS,
  879. &LengthSet,
  880. FORMAT_BUFFER_SIZE,
  881. FormatPropertyInstance},
  882. { // LengthBits 0x07
  883. // Global Variable, used for labeling
  884. 0,0,
  885. "Number of Octets (Size)",
  886. "Display Number of Octets (Size)",
  887. PROP_TYPE_BYTE,
  888. PROP_QUAL_NONE,
  889. 0,
  890. FORMAT_BUFFER_SIZE,
  891. FormatPropertyInstance},
  892. { // LongLength1 0x08
  893. // Global Variable, used for labeling values spanning multiple octets
  894. 0,0,
  895. "Size (BSW)",
  896. "Display Size (Long)",
  897. PROP_TYPE_BYTESWAPPED_WORD,
  898. PROP_QUAL_NONE,
  899. 0,
  900. FORMAT_BUFFER_SIZE,
  901. FormatPropertyInstance},
  902. { // LongLength2 0x09
  903. // Not sure about this one but looks to be for labeling
  904. 0,0,
  905. "Size (B)",
  906. "Display Size (short)",
  907. PROP_TYPE_BYTE,
  908. PROP_QUAL_NONE,
  909. 0,
  910. FORMAT_BUFFER_SIZE,
  911. FormatPropertyInstance},
  912. { // ASNIdentifier 0x0A
  913. // Global, used for labeling of ASN.1 Identifier Octets
  914. 0,0,
  915. "Identifier",
  916. "Display Identifier Octet",
  917. PROP_TYPE_BYTE,
  918. PROP_QUAL_NONE,
  919. 0,
  920. FORMAT_BUFFER_SIZE,
  921. FormatPropertyInstance},
  922. { // UniversalTagID 0x0B
  923. //Global, Used for displaying ASN.1 Universal Class Tags
  924. 0,0,
  925. "Tag Number",
  926. "Display Tag Number (Bitfield)",
  927. PROP_TYPE_BYTE,
  928. PROP_QUAL_LABELED_BITFIELD,
  929. &UniversalTagSet,
  930. FORMAT_BUFFER_SIZE,
  931. FormatPropertyInstance},
  932. { // KdcReqTagID 0x0C
  933. 0,0,
  934. "KERB_KDC_REQ Type",
  935. "Dipslay KERB_KDC_REQ Summary",
  936. PROP_TYPE_BYTE,
  937. PROP_QUAL_LABELED_SET,
  938. &KdcReqTagSet,
  939. FORMAT_BUFFER_SIZE,
  940. FormatPropertyInstance},
  941. { // KdcReqSeq 0x0D
  942. 0,0,
  943. "Tag Number (BF)",
  944. "Display Tag Number",
  945. PROP_TYPE_BYTE,
  946. PROP_QUAL_LABELED_BITFIELD,
  947. &KdcReqTagSet,
  948. FORMAT_BUFFER_SIZE,
  949. FormatPropertyInstance},
  950. { // KdcReqSeqLength 0x0E
  951. // Global, however only used to represent the body of kdc-req packets
  952. 0,0,
  953. "Length",
  954. "Length",
  955. PROP_TYPE_BYTE,
  956. PROP_QUAL_NONE,
  957. 0,
  958. FORMAT_BUFFER_SIZE,
  959. FormatPropertyInstance},
  960. { // ASN1UnivTagSumID 0x0F
  961. // This points to the Universal Class Tags
  962. //Used to display summary
  963. 0,0,
  964. "Univ. Class Tag",
  965. "Universal Class Tag",
  966. PROP_TYPE_BYTE,
  967. PROP_QUAL_LABELED_SET,
  968. &UniversalTagSet,
  969. FORMAT_BUFFER_SIZE,
  970. FormatPropertyInstance},
  971. { // KdcContentsValue 0x10
  972. // Global label
  973. 0,0,
  974. "Value",
  975. "Value",
  976. PROP_TYPE_BYTE,
  977. PROP_QUAL_NONE,
  978. 0,
  979. FORMAT_BUFFER_SIZE,
  980. FormatPropertyInstance},
  981. { // PaDataSummary 0x11
  982. // Global Displays values for the PADATA type
  983. 0,0,
  984. "PA-DATA Type",
  985. "PA-DATA Summary",
  986. PROP_TYPE_BYTE,
  987. PROP_QUAL_LABELED_SET,
  988. &PaDataTagSet,
  989. FORMAT_BUFFER_SIZE,
  990. FormatPropertyInstance},
  991. { // PaDataSeq 0x12
  992. 0,0,
  993. "Tag Number",
  994. "Tag Number",
  995. PROP_TYPE_BYTE,
  996. PROP_QUAL_LABELED_BITFIELD,
  997. &PaDataTagSet,
  998. FORMAT_BUFFER_SIZE,
  999. FormatPropertyInstance},
  1000. { // DispString 0x13
  1001. 0,0,
  1002. "Value",
  1003. "Value",
  1004. PROP_TYPE_STRING,
  1005. PROP_QUAL_NONE,
  1006. 0,
  1007. FORMAT_BUFFER_SIZE,
  1008. FormatPropertyInstance},
  1009. { //KerberosIdentifier 0x14
  1010. 0,0,
  1011. "KRB MSG-Type Identifier",
  1012. "Displays Kerberos Message Type",
  1013. PROP_TYPE_BYTE,
  1014. PROP_QUAL_LABELED_BITFIELD,
  1015. //PROP_QUAL_FLAGS,
  1016. &KrbMsgTypeSet,
  1017. FORMAT_BUFFER_SIZE,
  1018. FormatPropertyInstance},
  1019. { // lblTagNumber 0x15
  1020. // Created this as a lable
  1021. 0,0,
  1022. "Tag Number",
  1023. "Display Explicit Tags",
  1024. PROP_TYPE_BYTE,
  1025. PROP_QUAL_LABELED_BITFIELD,
  1026. &KdcRepTagSet,
  1027. FORMAT_BUFFER_SIZE,
  1028. FormatPropertyInstance},
  1029. { //KdcRepTagID 0x16
  1030. 0,0,
  1031. "KERB_KDC_REP Tag",
  1032. "Struct of KDC-REP packet",
  1033. PROP_TYPE_BYTE,
  1034. PROP_QUAL_LABELED_SET,
  1035. &KdcRepTagSet,
  1036. FORMAT_BUFFER_SIZE,
  1037. FormatPropertyInstance},
  1038. { // KrbPrincipalNamelSet 0x17
  1039. 0, 0,
  1040. "Principal Name",
  1041. "PrincipalName Structure",
  1042. PROP_TYPE_BYTE,
  1043. PROP_QUAL_LABELED_SET,
  1044. &PrincipalNameSet,
  1045. FORMAT_BUFFER_SIZE,
  1046. FormatPropertyInstance},
  1047. { // KrbPrincNameType 0x18
  1048. 0, 0,
  1049. "Name Type",
  1050. "Principal Name Type",
  1051. PROP_TYPE_BYTE,
  1052. PROP_QUAL_LABELED_SET,
  1053. &PrincNameTypeSet,
  1054. FORMAT_BUFFER_SIZE,
  1055. FormatPropertyInstance},
  1056. { //KrbPrincipalNamelBitF 0x19
  1057. 0, 0,
  1058. "Name Type",
  1059. "Principal Name Type",
  1060. PROP_TYPE_BYTE,
  1061. PROP_QUAL_LABELED_BITFIELD,
  1062. &PrincipalNameSet,
  1063. FORMAT_BUFFER_SIZE,
  1064. FormatPropertyInstance},
  1065. { // KrbTicketID 0x1A
  1066. 0,0,
  1067. "Kerberos Ticket",
  1068. "Kerberos Ticket",
  1069. PROP_TYPE_BYTE,
  1070. PROP_QUAL_LABELED_BITFIELD,
  1071. &KrbTicketSet,
  1072. FORMAT_BUFFER_SIZE,
  1073. FormatPropertyInstance},
  1074. { // KrbTixApp1ID 0x1B
  1075. 0, 0,
  1076. "Ticket Identifier",
  1077. "Tag for Ticket",
  1078. PROP_TYPE_BYTE,
  1079. PROP_QUAL_LABELED_BITFIELD,
  1080. &KrbTixApp1Set,
  1081. FORMAT_BUFFER_SIZE,
  1082. FormatPropertyInstance},
  1083. { // KrbErrTagID 0x1C
  1084. // Global Displays values for the KRB-ERR type
  1085. 0,0,
  1086. "KRB-ERROR",
  1087. "KRB-ERROR Packet",
  1088. PROP_TYPE_BYTE,
  1089. PROP_QUAL_LABELED_BITFIELD,
  1090. &KrbErrTagSet,
  1091. FORMAT_BUFFER_SIZE,
  1092. FormatPropertyInstance},
  1093. { // DispTimeID 0x1D
  1094. 0,0,
  1095. "Micro Sec",
  1096. "Micro Seconds",
  1097. PROP_TYPE_BYTESWAPPED_DWORD,
  1098. PROP_QUAL_NONE,
  1099. 0,
  1100. FORMAT_BUFFER_SIZE,
  1101. FormatPropertyInstance},
  1102. { //KrbErrTagSumID 0x1E
  1103. // Used in the inital display of KRB-ERROR
  1104. 0,0,
  1105. "KRB-ERROR",
  1106. "Kerberos Error",
  1107. PROP_TYPE_BYTE,
  1108. PROP_QUAL_LABELED_SET,
  1109. &KrbErrTagSet,
  1110. FORMAT_BUFFER_SIZE,
  1111. FormatPropertyInstance},
  1112. { //KrbTixAppSumID 0x1F
  1113. //Used in summary displays of Explicit Application Tags
  1114. 0,0,
  1115. "Explicit Tag",
  1116. "Explicit Tags",
  1117. PROP_TYPE_BYTE,
  1118. PROP_QUAL_LABELED_SET,
  1119. &KrbTixApp1Set,
  1120. FORMAT_BUFFER_SIZE,
  1121. FormatPropertyInstance},
  1122. { //KrbTicketSumID 0x20
  1123. // Used in summary displays of Ticket Variables
  1124. 0,0,
  1125. "KRB-Ticket",
  1126. "Kerberos Ticket",
  1127. PROP_TYPE_BYTE,
  1128. PROP_QUAL_LABELED_SET,
  1129. &KrbTicketSet,
  1130. FORMAT_BUFFER_SIZE,
  1131. FormatPropertyInstance},
  1132. { //KrbErrCodeID 0x21
  1133. //Used to display Kerberos Error Codes
  1134. 0,0,
  1135. "Kerberos Error",
  1136. "Kerberos Error",
  1137. PROP_TYPE_BYTE,
  1138. PROP_QUAL_LABELED_SET,
  1139. &KrbErrCodeSet,
  1140. FORMAT_BUFFER_SIZE,
  1141. FormatPropertyInstance},
  1142. { //KrbMsgTypeID 0x22
  1143. 0,0,
  1144. "Contents",
  1145. "Display Contents Octet",
  1146. PROP_TYPE_BYTE,
  1147. PROP_QUAL_LABELED_SET,
  1148. &KrbMsgTypeSet,
  1149. FORMAT_BUFFER_SIZE,
  1150. FormatPropertyInstance},
  1151. { //PadataTypeValID 0x23
  1152. 0,0,
  1153. "padata-type",
  1154. "Value of padata-type",
  1155. PROP_TYPE_BYTE,
  1156. PROP_QUAL_LABELED_SET,
  1157. &PadataTypeValSet,
  1158. FORMAT_BUFFER_SIZE,
  1159. FormatPropertyInstance},
  1160. { //CipherTextDisp 0x24
  1161. // Changed display from Cipher Text to Length. Could possibly get rid of this
  1162. // Leaving it in place in case we need to break down padata.
  1163. 0, 0,
  1164. "Length",
  1165. "Display Cipher Text",
  1166. PROP_TYPE_BYTE,
  1167. PROP_QUAL_NONE,
  1168. 0,
  1169. FORMAT_BUFFER_SIZE,
  1170. FormatPropertyInstance},
  1171. { //FragUdpID 0x25
  1172. 0,0,
  1173. "Fragmented Kerberos cont.",
  1174. "Display Fragmented Kerberos Packets",
  1175. PROP_TYPE_SUMMARY,
  1176. PROP_QUAL_NONE,
  1177. 0,
  1178. FORMAT_BUFFER_SIZE,
  1179. FormatPropertyInstance},
  1180. { //KdcReqBodyID 0x26
  1181. 0,0,
  1182. "KDC-Req-Body",
  1183. "KDC Req Body",
  1184. PROP_TYPE_BYTE,
  1185. PROP_QUAL_LABELED_SET,
  1186. &KdcReqBodySet,
  1187. FORMAT_BUFFER_SIZE,
  1188. FormatPropertyInstance},
  1189. { //KdcReqBodyBitF 0x27
  1190. 0,0,
  1191. "KDC-Req-Body",
  1192. "KDC Req Body",
  1193. PROP_TYPE_BYTE,
  1194. PROP_QUAL_LABELED_BITFIELD,
  1195. &KdcReqBodySet,
  1196. FORMAT_BUFFER_SIZE,
  1197. FormatPropertyInstance},
  1198. { //HostAddressesID 0x28
  1199. 0,0,
  1200. "Addresses",
  1201. "Addresses",
  1202. PROP_TYPE_BYTE,
  1203. PROP_QUAL_LABELED_SET,
  1204. &HostAddressesSet,
  1205. FORMAT_BUFFER_SIZE,
  1206. FormatPropertyInstance},
  1207. { //HostAddressesBitF 0x29
  1208. 0,0,
  1209. "Addresses",
  1210. "Addresses",
  1211. PROP_TYPE_BYTE,
  1212. PROP_QUAL_LABELED_BITFIELD,
  1213. &HostAddressesSet,
  1214. FORMAT_BUFFER_SIZE,
  1215. FormatPropertyInstance},
  1216. { // DispStringCliName 0x2A
  1217. 0,0,
  1218. "Client Name",
  1219. "Display Client Name",
  1220. PROP_TYPE_STRING,
  1221. PROP_QUAL_NONE,
  1222. 0,
  1223. FORMAT_BUFFER_SIZE,
  1224. FormatPropertyInstance},
  1225. { //DispStringRealmName 0x2B
  1226. 0,0,
  1227. "Realm Name",
  1228. "Display Realm Name",
  1229. PROP_TYPE_STRING,
  1230. PROP_QUAL_NONE,
  1231. 0,
  1232. FORMAT_BUFFER_SIZE,
  1233. FormatPropertyInstance},
  1234. { //DispStringServerName 0x2C
  1235. 0,0,
  1236. "Server Name",
  1237. "Display Server Name",
  1238. PROP_TYPE_STRING,
  1239. PROP_QUAL_NONE,
  1240. 0,
  1241. FORMAT_BUFFER_SIZE,
  1242. FormatPropertyInstance},
  1243. { //DispStringTixFlag 0x2D
  1244. 0,0,
  1245. "Ticket Flags",
  1246. "Display Ticket Flags",
  1247. PROP_TYPE_SUMMARY,
  1248. PROP_QUAL_NONE,
  1249. 0,
  1250. FORMAT_BUFFER_SIZE,
  1251. FormatPropertyInstance},
  1252. { //DispStringExpDate 0x2E
  1253. 0,0,
  1254. "Expiration Date",
  1255. "Display Expiration Date",
  1256. PROP_TYPE_STRING,
  1257. PROP_QUAL_NONE,
  1258. 0,
  1259. FORMAT_BUFFER_SIZE,
  1260. FormatPropertyInstance},
  1261. { //DispStringPostDate 0x2F
  1262. 0,0,
  1263. "Post Date",
  1264. "Display Post Date",
  1265. PROP_TYPE_STRING,
  1266. PROP_QUAL_NONE,
  1267. 0,
  1268. FORMAT_BUFFER_SIZE,
  1269. FormatPropertyInstance},
  1270. { //DispStringRenewTill 0x30
  1271. 0,0,
  1272. "Renew Till",
  1273. "Display Renew Till Time",
  1274. PROP_TYPE_STRING,
  1275. PROP_QUAL_NONE,
  1276. 0,
  1277. FORMAT_BUFFER_SIZE,
  1278. FormatPropertyInstance},
  1279. { //DispSumRandomNumber 0x31
  1280. 0,0,
  1281. "Random Number",
  1282. "Display Random Number",
  1283. PROP_TYPE_BYTESWAPPED_DWORD,
  1284. PROP_QUAL_NONE,
  1285. 0,
  1286. FORMAT_BUFFER_SIZE,
  1287. FormatPropertyInstance},
  1288. { //DispSumEtype 0x32
  1289. 0,0,
  1290. "Encryption Type",
  1291. "Display Encryption Type",
  1292. PROP_TYPE_SUMMARY,
  1293. PROP_QUAL_NONE,
  1294. 0,
  1295. FORMAT_BUFFER_SIZE,
  1296. FormatPropertyInstance},
  1297. { //DispStringAddresses 0x33
  1298. 0,0,
  1299. "Client Host Address",
  1300. "Display Random Number",
  1301. PROP_TYPE_STRING,
  1302. PROP_QUAL_NONE,
  1303. 0,
  1304. FORMAT_BUFFER_SIZE,
  1305. FormatPropertyInstance},
  1306. { //DispSummary 0x34
  1307. 0,0,
  1308. "Summary (ASN.1)",
  1309. "Display ASN.1 Summary",
  1310. PROP_TYPE_SUMMARY,
  1311. PROP_QUAL_NONE,
  1312. 0,
  1313. FORMAT_BUFFER_SIZE,
  1314. FormatPropertyInstance},
  1315. { //DispStringCliRealm 0x35
  1316. 0,0,
  1317. "Client Realm",
  1318. "Display Client's Realm",
  1319. PROP_TYPE_STRING,
  1320. PROP_QUAL_NONE,
  1321. 0,
  1322. FORMAT_BUFFER_SIZE,
  1323. FormatPropertyInstance},
  1324. { //DispProtocolVer 0x36
  1325. 0,0,
  1326. "Kerberos Protocol Version",
  1327. "Display Kerberos Protocol Version",
  1328. PROP_TYPE_BYTE,
  1329. PROP_QUAL_NONE,
  1330. 0,
  1331. FORMAT_BUFFER_SIZE,
  1332. FormatPropertyInstance},
  1333. { //DispKerbMsgType 0x37
  1334. 0,0,
  1335. "Kerberos Message Type",
  1336. "Display Kerberos Message Type",
  1337. PROP_TYPE_BYTE,
  1338. PROP_QUAL_LABELED_SET,
  1339. &KrbMsgTypeSet,
  1340. FORMAT_BUFFER_SIZE,
  1341. FormatPropertyInstance},
  1342. { //DispSumPreAuth 0x38
  1343. 0,0,
  1344. "Pre-Authentication Data",
  1345. "Display Pre-Authentication Date",
  1346. PROP_TYPE_SUMMARY,
  1347. PROP_QUAL_NONE,
  1348. 0,
  1349. FORMAT_BUFFER_SIZE,
  1350. FormatPropertyInstance},
  1351. { //DispSumReqBody 0x39
  1352. 0,0,
  1353. "KDC Request Body",
  1354. "Display KDC Request Body",
  1355. PROP_TYPE_SUMMARY,
  1356. PROP_QUAL_NONE,
  1357. 0,
  1358. FORMAT_BUFFER_SIZE,
  1359. FormatPropertyInstance},
  1360. { //DispSumKerbTix 0x3A
  1361. 0,0,
  1362. "Kerberos Ticket",
  1363. "Display Kerberos Ticket",
  1364. PROP_TYPE_SUMMARY,
  1365. PROP_QUAL_NONE,
  1366. 0,
  1367. FORMAT_BUFFER_SIZE,
  1368. FormatPropertyInstance},
  1369. { //DispSumTixVer 0x3B
  1370. 0,0,
  1371. "Ticket Version",
  1372. "Display Ticket Version",
  1373. PROP_TYPE_BYTE,
  1374. PROP_QUAL_NONE,
  1375. 0,
  1376. FORMAT_BUFFER_SIZE,
  1377. FormatPropertyInstance},
  1378. { //DispCipherText 0x3C
  1379. 0,0,
  1380. "Cipher Text",
  1381. "Display Text",
  1382. PROP_TYPE_SUMMARY,
  1383. PROP_QUAL_NONE,
  1384. 0,
  1385. FORMAT_BUFFER_SIZE,
  1386. FormatPropertyInstance},
  1387. { //DispStringCliTime 0x3D
  1388. 0,0,
  1389. "Current Client Time",
  1390. "Display Client's Current Time",
  1391. PROP_TYPE_STRING,
  1392. PROP_QUAL_NONE,
  1393. 0,
  1394. FORMAT_BUFFER_SIZE,
  1395. FormatPropertyInstance},
  1396. { //DispSumCuSec 0x3E
  1397. 0,0,
  1398. "MicroSec Of Client",
  1399. "Display Microseconds of Client",
  1400. PROP_TYPE_BYTESWAPPED_DWORD,
  1401. PROP_QUAL_NONE,
  1402. 0,
  1403. FORMAT_BUFFER_SIZE,
  1404. FormatPropertyInstance},
  1405. { //DispStringSrvTime 0x3F
  1406. 0,0,
  1407. "Current Server Time",
  1408. "Display Server's Current Time",
  1409. PROP_TYPE_STRING,
  1410. PROP_QUAL_NONE,
  1411. 0,
  1412. FORMAT_BUFFER_SIZE,
  1413. FormatPropertyInstance},
  1414. { //DispSumSuSec 0x40
  1415. 0,0,
  1416. "MicroSec Of Server",
  1417. "Display Microseconds of Server",
  1418. PROP_TYPE_BYTESWAPPED_DWORD,
  1419. PROP_QUAL_NONE,
  1420. 0,
  1421. FORMAT_BUFFER_SIZE,
  1422. FormatPropertyInstance},
  1423. { //DispSumKerbErr 0x41
  1424. 0,0,
  1425. "Kerberos Error",
  1426. "Display Kerberos Error",
  1427. PROP_TYPE_BYTE,
  1428. PROP_QUAL_LABELED_SET,
  1429. &KrbErrCodeSet,
  1430. FORMAT_BUFFER_SIZE,
  1431. FormatPropertyInstance},
  1432. { //DispStringErrorText 0x42
  1433. 0,0,
  1434. "Error Text",
  1435. "Display Error Text",
  1436. PROP_TYPE_STRING,
  1437. PROP_QUAL_NONE,
  1438. 0,
  1439. FORMAT_BUFFER_SIZE,
  1440. FormatPropertyInstance},
  1441. { //DispStringErrorData 0x43
  1442. 0,0,
  1443. "Error Data",
  1444. "Display Error Data",
  1445. PROP_TYPE_SUMMARY,
  1446. PROP_QUAL_NONE,
  1447. 0,
  1448. FORMAT_BUFFER_SIZE,
  1449. FormatPropertyInstance},
  1450. { // DispFlagKdcOptions 0x44
  1451. 0,0,
  1452. "KDC-Option Flags",
  1453. "Specifies KDC-Option Flags",
  1454. PROP_TYPE_BYTESWAPPED_DWORD,
  1455. PROP_QUAL_FLAGS,
  1456. &KdcOptionFlagsSet,
  1457. 80 * 32,
  1458. FormatPropertyInstance },
  1459. { //DispStringServNameGS 0x45
  1460. 0,0,
  1461. "Server Name",
  1462. "Displays General Strings",
  1463. PROP_TYPE_STRING,
  1464. PROP_QUAL_NONE,
  1465. 0,
  1466. FORMAT_BUFFER_SIZE,
  1467. FormatPropertyInstance},
  1468. { //DispSumEtype2 0x46
  1469. 0,0,
  1470. "Encryption Type",
  1471. "Display Encryption Type",
  1472. PROP_TYPE_BYTE,
  1473. PROP_QUAL_LABELED_SET,
  1474. &EncryptionTypeSet,
  1475. FORMAT_BUFFER_SIZE,
  1476. FormatPropertyInstance},
  1477. { //EncryptedDataTag 0x47
  1478. 0,0,
  1479. "Encrypted Data",
  1480. "Display Encrypted Data",
  1481. PROP_TYPE_BYTE,
  1482. PROP_QUAL_LABELED_SET,
  1483. &EncryptedDataSet,
  1484. FORMAT_BUFFER_SIZE,
  1485. FormatPropertyInstance},
  1486. { //EncryptedDataTagBitF 0x48
  1487. 0,0,
  1488. "Encrypted Data",
  1489. "Encrypted Data",
  1490. PROP_TYPE_BYTE,
  1491. PROP_QUAL_LABELED_BITFIELD,
  1492. &EncryptedDataSet,
  1493. FORMAT_BUFFER_SIZE,
  1494. FormatPropertyInstance},
  1495. { //KrbApReqID 0x49
  1496. 0,0,
  1497. "Kerb-AP-Req",
  1498. "Display AP-Req",
  1499. PROP_TYPE_BYTE,
  1500. PROP_QUAL_LABELED_SET,
  1501. &KrbApReqSet,
  1502. FORMAT_BUFFER_SIZE,
  1503. FormatPropertyInstance},
  1504. { //KrbApReqBitF 0x4A
  1505. 0,0,
  1506. "Kerb-AP-Req",
  1507. "Display AP Req ASN.1",
  1508. PROP_TYPE_BYTE,
  1509. PROP_QUAL_LABELED_BITFIELD,
  1510. &KrbApReqSet,
  1511. FORMAT_BUFFER_SIZE,
  1512. FormatPropertyInstance},
  1513. { //DispApOptionsSum 0x4B
  1514. 0,0,
  1515. "AP Options",
  1516. "Display AP Option Flags",
  1517. PROP_TYPE_SUMMARY,
  1518. PROP_QUAL_NONE,
  1519. 0,
  1520. FORMAT_BUFFER_SIZE,
  1521. FormatPropertyInstance},
  1522. { //DispFlagApOptions 0x4C
  1523. 0,0,
  1524. "AP-Option Flags",
  1525. "Specifies AP-Option Flags",
  1526. PROP_TYPE_BYTESWAPPED_DWORD,
  1527. PROP_QUAL_FLAGS,
  1528. &ApOptionFlagsSet,
  1529. 80 * 32,
  1530. FormatPropertyInstance },
  1531. { //DispSumTicket 0x4D
  1532. 0,0,
  1533. "Ticket",
  1534. "Display Ticket",
  1535. PROP_TYPE_SUMMARY,
  1536. PROP_QUAL_NONE,
  1537. 0,
  1538. FORMAT_BUFFER_SIZE,
  1539. FormatPropertyInstance},
  1540. { //ApTicketID 0x4E
  1541. 0,0,
  1542. "Kerb-Ticket",
  1543. "Display Ticket",
  1544. PROP_TYPE_BYTE,
  1545. PROP_QUAL_LABELED_SET,
  1546. &ApTicketSet,
  1547. FORMAT_BUFFER_SIZE,
  1548. FormatPropertyInstance},
  1549. { //ApTicketBitF 0x4F
  1550. 0,0,
  1551. "Kerb-Ticket",
  1552. "Display Ticket",
  1553. PROP_TYPE_BYTE,
  1554. PROP_QUAL_LABELED_BITFIELD,
  1555. &ApTicketSet,
  1556. FORMAT_BUFFER_SIZE,
  1557. FormatPropertyInstance},
  1558. { //TicketStructID 0x50
  1559. 0,0,
  1560. "Kerb-Ticket",
  1561. "Display Ticket",
  1562. PROP_TYPE_BYTE,
  1563. PROP_QUAL_LABELED_SET,
  1564. &TicketStructSet,
  1565. FORMAT_BUFFER_SIZE,
  1566. FormatPropertyInstance},
  1567. { //TicketStructBitF 0x51
  1568. 0,0,
  1569. "Kerb-Ticket",
  1570. "Display Ticket",
  1571. PROP_TYPE_BYTE,
  1572. PROP_QUAL_LABELED_BITFIELD,
  1573. &TicketStructSet,
  1574. FORMAT_BUFFER_SIZE,
  1575. FormatPropertyInstance},
  1576. { //KerberosDefaultlbl 0x52
  1577. // Kerberos continuation packets
  1578. 0,0,
  1579. "Kerberos Packet (Cont.) Use the Coalescer to view contents",
  1580. "Display Kerberos Continuation Packets",
  1581. PROP_TYPE_SUMMARY,
  1582. PROP_QUAL_NONE,
  1583. 0,
  1584. FORMAT_BUFFER_SIZE,
  1585. FormatPropertyInstance},
  1586. { // PaDataSummaryMulti 0x53
  1587. // Global Displays values for the PADATA type if integer is multiple octets
  1588. 0,0,
  1589. "PA-DATA Type",
  1590. "PA-DATA Summary",
  1591. PROP_TYPE_BYTESWAPPED_WORD,
  1592. PROP_QUAL_LABELED_SET,
  1593. &PaDataTagSet,
  1594. FORMAT_BUFFER_SIZE,
  1595. FormatPropertyInstance},
  1596. { // Certificatelbl 0x54
  1597. // Because I couldn't find the ASN.1 layout for the certificates
  1598. // Present in AS-Req and Rep's, I'm labeling the bits for now
  1599. 0,0,
  1600. "Certificate Data",
  1601. "Certificate Data Label",
  1602. PROP_TYPE_SUMMARY,
  1603. PROP_QUAL_NONE,
  1604. 0,
  1605. FORMAT_BUFFER_SIZE,
  1606. FormatPropertyInstance},
  1607. { //DispEncryptionOptions 0x55
  1608. 0,0,
  1609. "Supported Encryption Types",
  1610. "Available Encryption Type",
  1611. PROP_TYPE_SUMMARY,
  1612. PROP_QUAL_NONE,
  1613. 0,
  1614. FORMAT_BUFFER_SIZE,
  1615. FormatPropertyInstance},
  1616. { // MethodDataSummary 0x56
  1617. // Global Displays values for the PADATA type if integer is multiple octets
  1618. 0,0,
  1619. "Method-Data Type",
  1620. "Method-Data Type Summary",
  1621. PROP_TYPE_BYTE,
  1622. PROP_QUAL_LABELED_SET,
  1623. &MethodDataSet,
  1624. FORMAT_BUFFER_SIZE,
  1625. FormatPropertyInstance},
  1626. { // MethodDataBitF 0x57
  1627. // Global Displays values for the PADATA type if integer is multiple octets
  1628. 0,0,
  1629. "Method-Data ",
  1630. "Method-Data Display",
  1631. PROP_TYPE_BYTE,
  1632. PROP_QUAL_LABELED_BITFIELD,
  1633. &MethodDataSet,
  1634. FORMAT_BUFFER_SIZE,
  1635. FormatPropertyInstance},
  1636. { // DispReqAddInfo 0x58
  1637. 0,0,
  1638. "Required Additional Info",
  1639. "Req Add Info Summary",
  1640. PROP_TYPE_STRING,
  1641. PROP_QUAL_NONE,
  1642. 0,
  1643. FORMAT_BUFFER_SIZE,
  1644. FormatPropertyInstance}
  1645. };
  1646. DWORD nKerberosProperties = ((sizeof KerberosDatabase) / PROPERTYINFO_SIZE);