Overview
Theimpacket.krb5.kerberosv5 module implements core Kerberos v5 protocol functions for requesting tickets, performing authentication, and handling Kerberos errors. This is the primary interface for Kerberos operations.
Module Location
impacket/krb5/kerberosv5.py
Core Functions
getKerberosTGT
Request Ticket Granting Ticket (TGT) from KDC.clientName:Principalobject for clientpassword: Cleartext password (str)domain: Kerberos realm (str)lmhash: LM hash (bytes, usually empty)nthash: NT hash (bytes, for pass-the-hash)aesKey: AES key (bytes, 16 or 32 bytes)kdcHost: KDC hostname/IP (str, optional)requestPAC: Include PAC request (bool, default True)serverName: Override server name (Principal, optional)kerberoast_no_preauth: Allow no pre-auth (bool, default False)
(tgt, cipher, oldSessionKey, sessionKey)
tgt: Encoded AS-REP message (bytes)cipher: Cipher class for decryptionoldSessionKey: Client key used for AS-REPsessionKey: TGS session key (Key object)
getKerberosTGS
Request service ticket (TGS) from KDC.serverName: Target servicePrincipalobjectdomain: Kerberos realm (str)kdcHost: KDC hostname/IP (str)tgt: TGT from getKerberosTGT (bytes)cipher: Cipher class from getKerberosTGTsessionKey: TGT session key (Key object)renew: Renew ticket instead of requesting new (bool)
(tgs, cipher, oldSessionKey, sessionKey)
tgs: Encoded TGS-REP message (bytes)cipher: Cipher class for service ticketoldSessionKey: TGT session keysessionKey: Service session key (Key object)
getKerberosType1
Generate GSS-API/SPNEGO authentication token.username: Username (str)password: Password (str)domain: Kerberos realm (str)lmhash: LM hash (bytes)nthash: NT hash (bytes)aesKey: AES key (bytes)TGT: Cached TGT dict (optional)TGS: Cached TGS dict (optional)targetName: Target hostname (str)kdcHost: KDC hostname/IP (str, optional)useCache: Use credential cache (bool, default True)
(cipher, sessionKey, blob)
cipher: Cipher classsessionKey: Service session keyblob: SPNEGO NegTokenInit blob (bytes)
getKerberosType3
Process AP-REP response for mutual authentication.cipher: Cipher class from Type1sessionKey: Session key from Type1auth_data: Server response (SPNEGO NegTokenResp bytes)
(cipher, sessionKey2, resp)
cipher: Updated cipher classsessionKey2: Subsession keyresp: SPNEGO response blob
sendReceive
Send Kerberos message to KDC and receive response.data: Encoded Kerberos message (bytes)host: Target domain (str)kdcHost: KDC hostname/IP (str, optional)port: KDC port (int, default 88)
KerberosError
Example:
Error Handling
KerberosError Exception
Raised for Kerberos protocol errors.| Code | Constant | Meaning |
|---|---|---|
| 6 | KDC_ERR_C_PRINCIPAL_UNKNOWN | Client not found |
| 7 | KDC_ERR_S_PRINCIPAL_UNKNOWN | Service not found |
| 14 | KDC_ERR_ETYPE_NOSUPP | Encryption not supported |
| 18 | KDC_ERR_CLIENT_REVOKED | Account disabled |
| 23 | KDC_ERR_KEY_EXPIRED | Password expired |
| 24 | KDC_ERR_PREAUTH_FAILED | Wrong password |
| 25 | KDC_ERR_PREAUTH_REQUIRED | Pre-auth needed |
| 32 | KRB_AP_ERR_TKT_EXPIRED | Ticket expired |
| 37 | KRB_AP_ERR_SKEW | Clock skew too large |
SessionKeyDecryptionError
Raised when AS-REP decryption fails.message: Error descriptionasRep: AS-REP messagecipher: Cipher usedkey: Decryption keycipherText: Failed ciphertext