rss logo

Ouvrir et monter une partition BitLocker sous Linux avec Dislocker ou Cryptsetup

Logo Linux devant le logo bitlocker

Sur mon nouvel ordinateur, j’ai configuré un double démarrage avec Windows et Kali Linux. Par sécurité, j’ai activé BitLocker afin de chiffrer la partition Windows. Comme celle-ci était chiffrée, j’avais besoin d’un moyen d’y accéder depuis Kali Linux ; j’ai donc utilisé l’outil Dislocker.

Comme nous allons le voir, son utilisation est plutôt simple.

Installer Dislocker pour accéder aux partitions BitLocker

Les étapes d’installation ci-dessous sont présentées sur Kali Linux, mais elles fonctionnent de la même manière sur la plupart des distributions basées sur Debian (comme Ubuntu ou Linux Mint).

  • Installez dislocker avec le gestionnaire de paquets :
$ sudo apt update && sudo apt install dislocker

Identifier la partition Windows chiffrée avec BitLocker sous Linux

Une fois dislocker installé, l’étape suivante consiste à localiser la partition Windows chiffrée. Sous Linux, cela peut se faire avec l’outil fdisk.

  • Listez toutes les partitions avec fdisk :
$ sudo fdisk -l
Disk /dev/nvme0n1: 931,51 GiB, 1000204886016 bytes, 1953525168 sectors
Disk model: Samsung SSD 980 1TB
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 16384 bytes / 131072 bytes
Disklabel type: gpt
Disk identifier: 5A1C0C90-61D9-1BBV-96C1-7ED8C4EI8BA5

Device              Start        End    Sectors   Size Type
/dev/nvme0n1p1       2048     206847     204800   100M EFI System
/dev/nvme0n1p2     206848     239615      32768    16M Microsoft reserved
/dev/nvme0n1p3     239616 1022901873 1022662258 487,6G Microsoft basic data
/dev/nvme0n1p4 1022902272 1024237567    1335296   652M Windows recovery environment
/dev/nvme0n1p5 1024239616 1025216511     976896   477M Linux filesystem
/dev/nvme0n1p6 1025216512 1953523711  928307200 442,7G Linux filesystem

Une partition Microsoft basic data avec une taille de 487,6G, je crois que nous avons un gagnant. 🙂

Déchiffrer et monter la partition BitLocker

Selon votre matériel, vous pouvez déchiffrer la partition soit avec un code PIN, soit avec le mot de passe de récupération. Si votre système utilise un TPM (Trusted Platform Module), comme c’est le cas ici, vous aurez besoin du mot de passe de récupération.

  • Si le TPM est activé et que vous essayez de déchiffrer avec un code PIN, vous obtiendrez le message d’erreur suivant :
[CRITICAL] None of the provided decryption mean is decrypting the keys. Abort.
[CRITICAL] Unable to grab VMK or FVEK. Abort.

Préparer les points de montage pour Dislocker

  • Créez deux points de montage pour dislocker — l’un pour le conteneur déverrouillé, et l’autre pour le système de fichiers Windows réel :
$ sudo mkdir /media/bitlocker && sudo chown user:user /media/bitlocker
$ sudo mkdir /media/bitlockerloop && sudo chown user:user /media/bitlockerloop

Déchiffrer la partition BitLocker

  • Déchiffrez avec la clé de récupération (nécessaire si le TPM est activé) :
$ sudo dislocker -V /dev/nvme0n1p3 -p181938-009977-030118-024662-878971-217634-366661-422744 -- /media/bitlocker
  • Déchiffrez avec un code PIN (possible si le TPM est désactivé) :
$ sudo dislocker -V /dev/nvme0n1p3 -u123456 -- /media/bitlocker

Monter la partition BitLocker déchiffrée

  • Montez le fichier dislocker-file déverrouillé (créé par Dislocker) comme périphérique loop :
$ sudo mount -o loop -t ntfs /media/bitlocker/dislocker-file /media/bitlockerloop
  • Vérifiez que vous pouvez maintenant accéder à la partition Windows :
$ ls -l /media/bitlockerloop

Désactiver le démarrage rapide de Windows pour éviter les problèmes avec BitLocker

Pour éviter toute corruption de données lors du montage de la partition chiffrée, et pour ne pas déclencher le mode de récupération BitLocker (où l’on vous demande de saisir la clé de récupération), je recommande de désactiver la fonction Démarrage rapide de Windows. Plus de détails sont disponibles sur la page de documentation de VeraCrypt : Issues and Limitations.

  • Pour cela, exécutez la commande PowerShell suivante dans une console administrateur :
PS > Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Power\" -Name "HiberbootEnabled" -Value "0"
  • Ou bien via le Panneau de configuration Windows :
Options d’alimentation de Windows avec la case Démarrage rapide cochée

Dépannage et alternatives

💡 Remarque : Le problème évoqué ci-dessous venait probablement du fait qu’il faut désormais préciser -t ntfs avec la commande mount.

J’ai récemment rencontré un problème en essayant d’ouvrir ma partition Windows BitLocker. Soudainement, l’erreur suivante est apparue lors de la tentative de montage via le périphérique loop (qui utilise le pilote NTFS3 du noyau) :
mount: /media/bitlockerloop: wrong fs type, bad option, bad superblock on /dev/loop0, missing codepage or helper program, or other error.

  • En consultant les journaux avec dmesg, plusieurs lignes indiquaient des erreurs I/O error :
$ sudo dmesg
[ 1055.272722] loop: module loaded
[ 1055.274749] loop0: detected capacity change from 0 to 1022662258
[ 1055.275657] I/O error, dev loop0, sector 1022662016 op 0x0:(READ) flags 0x80700 phys_seg 1 prio class 0
[ 1055.276241] I/O error, dev loop0, sector 1022662016 op 0x0:(READ) flags 0x0 phys_seg 1 prio class 0
[ 1055.276248] Buffer I/O error on dev loop0, logical block 127832752, async page read
[ 1055.279496] EXT4-fs (loop0): VFS: Can't find ext4 filesystem
[ 1055.283152] I/O error, dev loop0, sector 1022662016 op 0x0:(READ) flags 0x80700 phys_seg 1 prio class 0
[ 1055.283413] EXT4-fs (loop0): VFS: Can't find ext4 filesystem
[ 1055.283691] I/O error, dev loop0, sector 1022662016 op 0x0:(READ) flags 0x80700 phys_seg 1 prio class 0
[ 1055.283736] I/O error, dev loop0, sector 1022662016 op 0x0:(READ) flags 0x0 phys_seg 1 prio class 0
[ 1055.283743] Buffer I/O error on dev loop0, logical block 511331008, async page read
[ 1055.283767] I/O error, dev loop0, sector 1022662018 op 0x0:(READ) flags 0x0 phys_seg 1 prio class 0
[ 1055.283771] Buffer I/O error on dev loop0, logical block 511331009, async page read
[ 1055.283799] I/O error, dev loop0, sector 1022662020 op 0x0:(READ) flags 0x0 phys_seg 1 prio class 0
[ 1055.283802] Buffer I/O error on dev loop0, logical block 511331010, async page read
[ 1055.283820] I/O error, dev loop0, sector 1022662022 op 0x0:(READ) flags 0x0 phys_seg 1 prio class 0
[ 1055.283823] Buffer I/O error on dev loop0, logical block 511331011, async page read
[ 1055.285259] I/O error, dev loop0, sector 1022662016 op 0x0:(READ) flags 0x0 phys_seg 1 prio class 0
[ 1055.285268] Buffer I/O error on dev loop0, logical block 511331008, async page read
[ 1055.285299] I/O error, dev loop0, sector 1022662018 op 0x0:(READ) flags 0x0 phys_seg 1 prio class 0
[ 1055.285305] Buffer I/O error on dev loop0, logical block 511331009, async page read
[ 1055.285322] Buffer I/O error on dev loop0, logical block 511331010, async page read
[ 1055.285337] Buffer I/O error on dev loop0, logical block 511331011, async page read
[ 1055.291290] EXT4-fs (loop0): VFS: Can't find ext4 filesystem
[ 1055.293359] FAT-fs (loop0): bogus number of reserved sectors
[ 1055.293365] FAT-fs (loop0): Can't find a valid FAT filesystem

J’ai lancé smartctl pour vérifier l’état de santé du disque, mais aucun problème n’a été détecté. J’ai également tenté de réparer le système de fichiers Windows avec chkdsk /f /r, mais le problème persistait. Après quelques recherches, j’ai découvert que cette situation pouvait se produire et que la solution recommandée consistait à utiliser le pilote NTFS-3G à la place du pilote noyau NTFS3.

Bien que dislocker ne soit pas en cause, j’ai aussi découvert que depuis la version 2.3.0, cryptsetup est capable d’ouvrir des partitions chiffrées avec BitLocker. Il est toujours intéressant de disposer de plusieurs outils, je vais donc montrer comment utiliser cryptsetup comme alternative.

  • Tout d’abord, si ce n’est pas déjà fait, installez le pilote ntfs-3g et cryptsetup :
$ sudo apt update && sudo apt install ntfs-3g cryptsetup
  • Ensuite, déchiffrez la partition BitLocker. Ici j’utilise cryptsetup, mais vous pouvez aussi utiliser dislocker si vous le préférez :
$ sudo cryptsetup open --type bitlk /dev/nvme0n1p3 bitlocker
  • Enfin, montez le périphérique déchiffré en utilisant le pilote NTFS-3G (au lieu du pilote noyau NTFS3) :
$ sudo ntfs-3g /dev/mapper/bitlocker /media/bitlocker/