Skip to content

Commit ebcecec

Browse files
authored
Add comprehensive fve-dd documentation with examples for BitLocker and LUKS unlocking (#94)
1 parent 19760b0 commit ebcecec

File tree

3 files changed

+65
-10
lines changed

3 files changed

+65
-10
lines changed

docs/source/projects/dissect.fve/index.rst

Lines changed: 65 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,19 @@
11
dissect.fve
2-
============
2+
===========
33

44
.. button-link:: https://github.com/fox-it/dissect.fve
55
:color: primary
66
:outline:
77

88
:octicon:`mark-github` View on GitHub
99

10-
A Dissect module implementing parsers for full volume encryption implementations,
11-
currently Microsoft's Bitlocker Disk Encryption (BDE) and Linux Unified Key Setup (LUKS1 and LUKS2).
10+
A Dissect module implementing parsers for full volume encryption implementations,
11+
currently Microsoft's BitLocker Disk Encryption (BDE) and Linux Unified Key Setup (LUKS1 and LUKS2).
1212

1313
* Full volume and disk encryption schemes
1414

15-
* BDE (BitLocker disk encryption) (:class:`~dissect.fve.bde.BDE`)
16-
* LUKS (Linux Unified Key Setup) (:class:`~dissect.fve.luks.LUKS`)
15+
* Microsoft BitLocker Disk Encryption (all configurations and versions, including EOW): :class:`~dissect.fve.bde.BDE`
16+
* Linux Unified Key Setup (LUKS1 and LUKS2): :class:`~dissect.fve.luks.LUKS`
1717

1818

1919
Installation
@@ -27,11 +27,10 @@ Installation
2727
2828
This module is also automatically installed if you install the ``dissect`` package.
2929

30-
3130
Usage
3231
-----
3332

34-
This package is a library with a CLI tool, so you primarily interact with it from Python. For example,
33+
This package is a library with a CLI tool, so you primarily interact with it from Python. For example,
3534
to open and decrypt a BitLocker encrypted volume for reading:
3635

3736
.. code-block:: python
@@ -42,7 +41,7 @@ to open and decrypt a BitLocker encrypted volume for reading:
4241
with open("path/to/bitlocker/file.dd", "rb") as fh:
4342
bde = BDE(fh)
4443
bde.unlock_with_passphrase("kusjesvansrt<3")
45-
44+
4645
fs = NTFS(bde.open())
4746
print(fs.get("/").listdir())
4847
@@ -51,13 +50,71 @@ to open and decrypt a BitLocker encrypted volume for reading:
5150
5251
Tools
5352
-----
53+
54+
fve-dd
55+
~~~~~~
56+
57+
The ``fve-dd`` tool is used to decrypt Microsoft BitLocker (BDE) or Linux Unified Key Setup (LUKS1 and LUKS2) volumes
58+
and write the decrypted content to a file.
59+
60+
If the input file is a disk with multiple volumes/partitions, the output file will be a disk image with the same partition layout,
61+
with the encrypted volumes replaced by their decrypted content.
62+
If the input file is a single encrypted volume, the output file will be a raw image of the decrypted volume.
63+
5464
.. sphinx_argparse_cli::
5565
:module: dissect.fve.tools.dd
5666
:func: main
5767
:prog: fve-dd
5868
:description: Utility to decrypt BitLocker or LUKS volumes and write them to a file.
5969
:hook:
6070

71+
Examples
72+
^^^^^^^^
73+
74+
**BitLocker or LUKS volumes with passphrase:**
75+
76+
.. code-block:: console
77+
78+
$ fve-dd encrypted.dd -p "mypassphrase" -o decrypted_volume.dd
79+
80+
**BitLocker volumes with recovery password:**
81+
82+
.. code-block:: console
83+
84+
$ fve-dd encrypted.dd -r "123456-789012-345678-901234-567890-123456-789012-345678" -o decrypted.dd
85+
86+
**BitLocker volumes with .BEK file:**
87+
88+
BitLocker External Key (BEK) files can be used to unlock BitLocker encrypted volumes.
89+
These files are typically stored on removable media like USB drives.
90+
91+
.. code-block:: console
92+
93+
$ fve-dd encrypted.dd -f /path/to/recovery_key.BEK -o decrypted.dd
94+
95+
**LUKS volumes with key file:**
96+
97+
LUKS key files contain the encryption key and can be used instead of a passphrase.
98+
99+
.. code-block:: console
100+
101+
$ fve-dd encrypted.dd -f /path/to/keyfile -o decrypted.dd
102+
103+
**LUKS volumes with specific key slot:**
104+
105+
You can specify which key slot to use when unlocking a LUKS volume:
106+
107+
.. code-block:: console
108+
109+
$ fve-dd encrypted.dd -f /path/to/keyfile --key-slot 0 -o decrypted.dd
110+
111+
**LUKS volumes with key file offset and size:**
112+
113+
Similar to the ``cryptsetup`` utility, you can specify the offset and size within a key file:
114+
115+
.. code-block:: console
116+
117+
$ fve-dd encrypted.dd -f /path/to/keyfile --keyfile-offset 512 --keyfile-size 32 -o decrypted.dd
61118
62119
Reference
63120
---------

docs/source/projects/dissect.shellitem/index.rst

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,6 @@ Tools
4646
:description: Utility to parse LNK files.
4747
:hook:
4848

49-
5049
Reference
5150
---------
5251

docs/source/projects/dissect.util/index.rst

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,6 @@ Tools
7272
:description: Utility to dump NSKeyedArchiver plist files.
7373
:hook:
7474

75-
7675
Reference
7776
---------
7877

0 commit comments

Comments
 (0)