Skip to content

Instantly share code, notes, and snippets.

View iharkatkavets's full-sized avatar
💻
Code is like humor. When you have to explain it, it's bad

Ihar Katkavets iharkatkavets

💻
Code is like humor. When you have to explain it, it's bad
View GitHub Profile
@iharkatkavets
iharkatkavets / readme.md
Created October 26, 2020 21:58 — forked from lgg/readme.md
Keepass file format explained

Keepass file format explained

I’m currently working (I’m just at the beginning, and I’m quite slow) on a personal project that will use Keepass files (kdb and kdbx).
I tried to find some documentation about .kdb and .kdbx format, but I didn’t find anything, even in the Keepass official website. I you want to know how these file formats are structured, you must read Keepass’s source code. So I wrote this article that explains how Keepass file format are structured, maybe it will help someone.

@iharkatkavets
iharkatkavets / gist:7d632e87b3af27a4952561122398a8d1
Created October 24, 2020 12:29 — forked from msmuenchen/gist:9318327
KeePass v2.x (KDBX v3.x) file format
Convention: Byte array notation as it would appear in a hexeditor.
= Layout=
KDBX files, the keepass database files, are layout as follows:
1) Bytes 0-3: Primary identifier, common across all kdbx versions:
private static $sigByte1=[0x03,0xD9,0xA2,0x9A];
2) Bytes 4-7: Secondary identifier. Byte 4 can be used to identify the file version (0x67 is latest, 0x66 is the KeePass 2 pre-release format and 0x55 is KeePass 1)