kdbxtool.parsing.header¶
KDBX header parsing and structures.
This module provides typed structures for KDBX file headers: - Magic bytes and version detection - Outer header fields (cipher, compression, KDF parameters, etc.) - Inner header fields (binary attachments, protected stream cipher)
KDBX format reference: https://keepass.info/help/kb/kdbx_4.html
Classes
|
Compression algorithms for KDBX payload. |
|
Outer header field types for KDBX format. |
|
Inner header field types for KDBX4 format. |
|
Parsed KDBX header data. |
|
KDBX file format versions. |
- class kdbxtool.parsing.header.KdbxVersion(*values)[source]¶
Bases:
IntEnumKDBX file format versions.
- KDBX3 = 3¶
- KDBX4 = 4¶
- class kdbxtool.parsing.header.HeaderFieldType(*values)[source]¶
Bases:
IntEnumOuter header field types for KDBX format.
These are the TLV (Type-Length-Value) field identifiers in the outer (unencrypted) header.
- END = 0¶
- COMMENT = 1¶
- CIPHER_ID = 2¶
- COMPRESSION_FLAGS = 3¶
- MASTER_SEED = 4¶
- TRANSFORM_SEED = 5¶
- TRANSFORM_ROUNDS = 6¶
- ENCRYPTION_IV = 7¶
- PROTECTED_STREAM_KEY = 8¶
- STREAM_START_BYTES = 9¶
- INNER_RANDOM_STREAM_ID = 10¶
- KDF_PARAMETERS = 11¶
- PUBLIC_CUSTOM_DATA = 12¶
- class kdbxtool.parsing.header.InnerHeaderFieldType(*values)[source]¶
Bases:
IntEnumInner header field types for KDBX4 format.
These appear after decryption, before the XML payload.
- END = 0¶
- INNER_RANDOM_STREAM_ID = 1¶
- INNER_RANDOM_STREAM_KEY = 2¶
- BINARY = 3¶
- class kdbxtool.parsing.header.CompressionType(*values)[source]¶
Bases:
IntEnumCompression algorithms for KDBX payload.
- NONE = 0¶
- GZIP = 1¶
- class kdbxtool.parsing.header.KdbxHeader(version, cipher, compression, master_seed, encryption_iv, kdf_type, kdf_salt, argon2_memory_kib=None, argon2_iterations=None, argon2_parallelism=None, aes_kdf_rounds=None, inner_random_stream_id=None, inner_random_stream_key=None, stream_start_bytes=None, protected_stream_key=None, raw_header=b'')[source]¶
Bases:
objectParsed KDBX header data.
This class holds all fields from the outer header in a typed format. It supports both KDBX3 and KDBX4, with version-specific fields optional.
- Parameters:
version (KdbxVersion)
cipher (Cipher)
compression (CompressionType)
master_seed (bytes)
encryption_iv (bytes)
kdf_type (KdfType)
kdf_salt (bytes)
argon2_memory_kib (int | None)
argon2_iterations (int | None)
argon2_parallelism (int | None)
aes_kdf_rounds (int | None)
inner_random_stream_id (int | None)
inner_random_stream_key (bytes | None)
stream_start_bytes (bytes | None)
protected_stream_key (bytes | None)
raw_header (bytes)
- version: KdbxVersion¶
- compression: CompressionType¶
- classmethod parse(data)[source]¶
Parse KDBX header from raw bytes.
- Parameters:
data (bytes) – Raw file data starting from beginning
- Returns:
Tuple of (parsed header, number of bytes consumed)
- Raises:
InvalidSignatureError – If magic bytes don’t match
UnsupportedVersionError – If KDBX version is not supported
CorruptedDataError – If header is malformed or truncated
- Return type:
- to_bytes()[source]¶
Serialize header to KDBX4 binary format.
- Returns:
Binary header data ready to be written to file
- Raises:
UnsupportedVersionError – If not KDBX4 format
KdfError – If Argon2 parameters are missing
- Return type:
- __init__(version, cipher, compression, master_seed, encryption_iv, kdf_type, kdf_salt, argon2_memory_kib=None, argon2_iterations=None, argon2_parallelism=None, aes_kdf_rounds=None, inner_random_stream_id=None, inner_random_stream_key=None, stream_start_bytes=None, protected_stream_key=None, raw_header=b'')¶
- Parameters:
version (KdbxVersion)
cipher (Cipher)
compression (CompressionType)
master_seed (bytes)
encryption_iv (bytes)
kdf_type (KdfType)
kdf_salt (bytes)
argon2_memory_kib (int | None)
argon2_iterations (int | None)
argon2_parallelism (int | None)
aes_kdf_rounds (int | None)
inner_random_stream_id (int | None)
inner_random_stream_key (bytes | None)
stream_start_bytes (bytes | None)
protected_stream_key (bytes | None)
raw_header (bytes)
- Return type:
None