Skip to content

Casser un fichier Office ou PDF protégé par mot de passe avec hashcat

Extrayez le hash d'un Word, Excel ou PDF chiffré avec office2john / pdf2john, puis choisissez le bon mode hashcat — de 9400 à 10700 — pour retrouver le mot de passe.

Publié le 4 min de lecture

Un .docx verrouillé par « Restreindre la modification » et un PDF qui exige un mot de passe avant même qu'Acrobat ne l'ouvre ressemblent à deux problèmes différents. En dessous, c'est le même problème : une clé de chiffrement dérivée d'un mot de passe, via une fonction de dérivation qu'il faut recalculer à chaque essai. Extrayez le bon hash, choisissez le bon mode hashcat, et les deux tombent avec le même flux wordlist-et-règles que vous utilisez déjà ailleurs.

Étape une : sortir le hash du fichier

Ni hashcat ni John the Ripper ne lisent directement un .docx, un .xlsx ou un .pdf. Il faut d'abord extraire les paramètres de chiffrement avec le script *2john correspondant, fourni par la distribution jumbo de John the Ripper (dans son dossier run/) :

python3 office2john.py protege.docx > office.hash
python3 pdf2john.py protege.pdf > pdf.hash

Les deux impriment une ligne nom:hash. Retirez le préfixe du nom de fichier avant de la passer à hashcat — John, lui, accepte la ligne telle quelle :

cut -d: -f2- office.hash > office_hashcat.txt

Choisir le mode Office

Les hash Office s'auto-décrivent : la chaîne commence par $office$*2007*, $office$*2010* ou $office$*2013*, inutile de deviner :

Version OfficePréfixe du hashMode hashcatDérivation
2007$office$*2007*-m 9400SHA-1, 50 000 itérations
2010$office$*2010*-m 9500SHA-1, 100 000 itérations
2013 / 2016 / 2019 / 365$office$*2013*-m 9600SHA-512, 100 000 itérations
hashcat -m 9600 office_hashcat.txt rockyou.txt -r /usr/share/hashcat/rules/best64.rule

John détecte automatiquement les trois sous un seul format :

john --format=office office.hash --wordlist=rockyou.txt

2013 est la version pour laquelle il faut prévoir du temps. Office est passé de SHA-1 à SHA-512 en gardant les 100 000 itérations, ce qui atterrit quelque part dans les centaines de milliers d'essais par seconde sur un bon GPU — un terrain proche de bcrypt, très loin des milliards par seconde du NTLM brut.

Choisir le mode PDF

Le chiffrement PDF a évolué différemment selon les versions d'Acrobat, et hashcat le répartit sur plusieurs modes. Les deux extrémités de la plage sont couvertes sur ce site :

Révision PDFMode hashcatRemarques
1.1–1.3 (Acrobat 2–4)-m 10400RC4 40 ou 128 bits, pas de KDF par essai — rapide
1.4–1.6 (Acrobat 5–8)-m 10500RC4 ou AES-128, un seul tour de MD5
1.7 Level 3 (Acrobat 9)-m 10600AES-128, SHA-256
1.7 Level 8 (Acrobat 10–11)-m 10700AES-256, SHA-256 x 64 tours — le lent

pdf2john.py inscrit la révision directement dans la chaîne $pdf$, donc vous lisez le mode sur le hash plutôt que de le deviner à partir du fichier :

hashcat -m 10700 pdf_hashcat.txt rockyou.txt -r /usr/share/hashcat/rules/best64.rule

John, là encore, couvre toute la famille sous un seul format :

john --format=pdf pdf.hash --wordlist=rockyou.txt

Un vieux PDF (10400) se casse quasiment à la vitesse d'un hash brut. Un PDF AES-256 moderne (10700) est volontairement lent, le même compromis de conception que sha512crypt ou DCC2 : le nombre d'itérations existe précisément pour rendre la force brute coûteuse, donc une liste ciblée rapporte bien plus ici qu'une attaque par masque à l'aveugle. Si vous n'avez pas lu choisir sa wordlist et ses règles, commencez par là avant de brûler des heures sur la mauvaise liste.

Le piège du PDF : deux mots de passe, un seul fichier

Un PDF peut porter un mot de passe utilisateur (requis pour ouvrir le document) et un mot de passe propriétaire (requis pour changer les permissions comme l'impression ou la copie), indépendamment l'un de l'autre. Beaucoup de PDF « protégés » ne définissent qu'un mot de passe propriétaire et laissent le mot de passe utilisateur vide, ce qui veut dire que le fichier s'ouvre sans aucune invite même si pdf2john.py en extrait joyeusement un hash et que hashcat le casse tout aussi joyeusement. Avant de dépenser du temps de GPU, essayez simplement d'ouvrir le fichier avec un mot de passe vide. S'il s'ouvre, le vrai « cassage » dont vous avez besoin consiste à retirer les restrictions du mot de passe propriétaire, ce que la plupart des outils PDF font dès que vous fournissez le mot de passe utilisateur vide — sans cassage nécessaire.

Quand ça ne vaut pas le temps de GPU

Si identifier le hash vous indique qu'il s'agit d'Office 2013 ou de PDF 10700 protégeant un document sans autre piste, traitez-le comme un sha512crypt robuste : une liste courte et ciblée bat une liste générique longue, et une attaque par masque exhaustive au-delà de six ou sept caractères n'est pas réaliste sur du matériel grand public. Réglez d'abord la question de la provenance — voir trouver le bon mode hashcat si la chaîne extraite ne correspond pas clairement à l'un des tableaux ci-dessus — puis consacrez votre temps à la wordlist, pas à l'espace des clés.

Articles liés

Comparaison pratique de hashcat et John the Ripper — forces GPU et CPU, détection automatique, modes -m, formats jumbo, dictionnaires et règles — avec des commandes d'exemple.
Un hash mystérieux entre les mains ? Découvrez les indices qui révèlent son type — longueur, jeu de caractères, préfixes comme $2y$ ou $6$ — et identifiez-le dans votre navigateur.
MD5 et SHA-1 tombent en quelques secondes sous un GPU car ils sont rapides et souvent non salés. Découvrez pourquoi les KDF lents comme bcrypt et Argon2 résistent.