Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
bkcrack — Craquer le chiffrement zip legacy avec l'attaque de texte clair connu de Biham et Kocher. | Kitploit
Outils/GitHubGitHub/kimci86/bkcrack
Cassage de Mots de PasseOutils de Chiffrement/DéchiffrementAnalyse des VulnérabilitésCryptographie
GitHubkimci86/bkcrack

bkcrack

Craquer le chiffrement zip legacy avec l'attaque de texte clair connu de Biham et Kocher.

Voir le dépôt
2.2k1885il y a 2 moisVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

bkcrack

CI badge coverage badge release badge license badge GitHub Sponsors badge

Cassez le chiffrement zip hérité avec l'attaque à texte clair connu de Biham et Kocher.

Aperçu

Une archive ZIP peut contenir de nombreuses entrées dont le contenu peut être compressé et/ou chiffré. En particulier, les entrées peuvent être chiffrées avec un algorithme de chiffrement symétrique basé sur un mot de passe, appelé chiffrement traditionnel PKWARE, chiffrement hérité ou ZipCrypto. Cet algorithme génère un flux pseudo-aléatoire d'octets (keystream) qui est combiné par XOR avec le contenu de l'entrée (texte clair) pour produire des données chiffrées (texte chiffré). L'état du générateur, constitué de trois entiers de 32 bits, est initialisé à l'aide du mot de passe puis continuellement mis à jour avec le texte clair au fur et à mesure du chiffrement. Cet algorithme de chiffrement est vulnérable aux attaques à texte clair connu, comme l'ont montré Eli Biham et Paul C. Kocher dans l'article de recherche A known plaintext attack on the PKZIP stream cipher. Étant donné un texte chiffré et 12 octets ou plus du texte clair correspondant, l'état interne du générateur de keystream peut être récupéré. Cet état interne suffit pour déchiffrer entièrement le texte chiffré ainsi que d'autres entrées qui ont été chiffrées avec le même mot de passe. Il peut également être utilisé pour bruteforcer le mot de passe avec une complexité de nl-6 où n est la taille du jeu de caractères et l est la longueur du mot de passe.

bkcrack est un outil en ligne de commande qui implémente cette attaque à texte clair connu. Les principales fonctionnalités sont :

  • Récupérer l'état interne à partir du texte chiffré et du texte clair.
  • Supprimer ou changer le mot de passe d'une archive ZIP en utilisant l'état interne.
  • Récupérer le mot de passe original à partir de l'état interne.

Installation

Paquets précompilés

Vous pouvez obtenir la dernière version officielle sur GitHub.

Des paquets précompilés pour Ubuntu, MacOS et Windows sont disponibles au téléchargement. Extrayez l'archive téléchargée où vous le souhaitez.

Sous Windows, les bibliothèques d'exécution Microsoft sont nécessaires pour exécuter bkcrack. Si elles ne sont pas déjà installées sur votre système, téléchargez et installez le dernier package Microsoft Visual C++ Redistributable.

Compiler depuis les sources

Sinon, vous pouvez compiler le projet avec CMake.

Tout d'abord, téléchargez les fichiers sources ou clonez le dépôt git. Ensuite, exécutez les commandes suivantes dans l'arborescence des sources pour créer une installation dans le dossier install.

root@kitploit:~
cmake -S . -B build -DCMAKE_INSTALL_PREFIX=install
cmake --build build --config Release
cmake --build build --config Release --target install

Paquets tiers

bkcrack est disponible dans les dépôts de paquets listés ci-dessous. Ces paquets sont fournis par des mainteneurs externes.

Packaging status

Utilisation

Lister les entrées

Vous pouvez voir une liste des noms d'entrées et des métadonnées dans une archive nommée archive.zip comme ceci :

root@kitploit:~
bkcrack -L archive.zip

Les entrées utilisant le chiffrement ZipCrypto sont vulnérables à une attaque à texte clair connu.

Récupérer les clés internes

L'attaque nécessite au moins 12 octets de texte clair connu. Au moins 8 d'entre eux doivent être contigus. Plus le texte clair connu contigu est grand, plus l'attaque est rapide.

Charger les données depuis des archives zip

Avec une archive zip encrypted.zip dont l'entrée cipher est le texte chiffré et plain.zip dont l'entrée plain est le texte clair connu, bkcrack peut être exécuté comme ceci :

root@kitploit:~
bkcrack -C encrypted.zip -c cipher -P plain.zip -p plain

Charger les données depuis des fichiers

Avec un fichier cipherfile contenant le texte chiffré (commençant par les 12 octets correspondant à l'en-tête de chiffrement) et plainfile contenant le texte clair connu, bkcrack peut être exécuté comme ceci :

root@kitploit:~
bkcrack -c cipherfile -p plainfile

Décalage

Si le texte clair correspond à une partie autre que le début du texte chiffré, vous pouvez spécifier un décalage. Il peut être négatif si le texte clair inclut une partie de l'en-tête de chiffrement.

root@kitploit:~
bkcrack -c cipherfile -p plainfile -o offset

Texte clair épars

Si vous connaissez peu de texte clair contigu (entre 8 et 11 octets), mais que vous connaissez certains octets à certains décalages connus, vous pouvez fournir ces informations pour atteindre l'exigence d'un total de 12 octets connus. Pour ce faire, utilisez le drapeau -x suivi d'un décalage et des octets en hexadécimal.

root@kitploit:~
bkcrack -c cipherfile -p plainfile -x 25 4b4f -x 30 21

Déchiffrer

Si l'attaque réussit, les données déchiffrées associées au texte chiffré utilisé pour l'attaque peuvent être sauvegardées :

root@kitploit:~
bkcrack -c cipherfile -p plainfile -d decipheredfile

Si les clés sont connues d'une attaque précédente, il est possible d'utiliser bkcrack pour déchiffrer des données :

root@kitploit:~
bkcrack -c cipherfile -k 12345678 23456789 34567890 -d decipheredfile

Décompresser

Les données déchiffrées peuvent être compressées selon que la compression a été utilisée ou non lors de la création du fichier zip. Si la compression deflate a été utilisée, un script Python 3 fourni dans le dossier tools peut être utilisé pour décompresser les données.

root@kitploit:~
python3 tools/inflate.py < decipheredfile > decompressedfile

Supprimer le mot de passe

Pour accéder à toutes les entrées de l'archive chiffrée en une seule étape, vous pouvez générer une nouvelle archive avec le même contenu mais sans chiffrement. Cela suppose que chaque entrée a été initialement chiffrée avec le même mot de passe.

root@kitploit:~
bkcrack -C encrypted.zip -k 12345678 23456789 34567890 -D decrypted.zip

Changer le mot de passe

Il est également possible de générer une nouvelle archive chiffrée avec le mot de passe de votre choix :

root@kitploit:~
bkcrack -C encrypted.zip -k 12345678 23456789 34567890 -U unlocked.zip new_password

Vous pouvez également définir le nouveau mot de passe par sa représentation interne correspondante.

root@kitploit:~
bkcrack -C encrypted.zip -k 12345678 23456789 34567890 --change-keys unlocked.zip 581da44e 8e40167f 50c009a0

Ces deux commandes peuvent être utilisées ensemble pour modifier le contenu d'une archive chiffrée sans connaître le mot de passe mais en connaissant uniquement les clés internes : vous pouvez faire une copie chiffrée avec le mot de passe de votre choix, puis modifier la copie avec un gestionnaire d'archives en entrant le mot de passe choisi lorsqu'il est demandé, et enfin faire une copie de l'archive modifiée avec les clés de chiffrement originales.

Récupérer le mot de passe

Étant donné les clés internes, bkcrack peut essayer de trouver le mot de passe original.

Récupération par force brute du mot de passe

Vous pouvez rechercher un mot de passe en utilisant des caractères d'un jeu donné :

root@kitploit:~
bkcrack -k 1ded830c 24454157 7213b8c5 -b ?p

Vous pouvez restreindre la recherche aux mots de passe d'une longueur donnée ou d'une plage de longueurs :

root@kitploit:~
bkcrack -k 1ded830c 24454157 7213b8c5 -b ?p -l 9
bkcrack -k 1ded830c 24454157 7213b8c5 -b ?p -l 8..10

L'option -r <length> <charset> est un raccourci pour -l 0..<length> -b <charset> :

root@kitploit:~
bkcrack -k 1ded830c 24454157 7213b8c5 -r 10 ?p

Récupération par masque du mot de passe

Si vous avez une idée de la façon dont le mot de passe est formé, vous pouvez spécifier un masque pour restreindre l'espace de recherche et rendre la récupération beaucoup plus rapide. Ceci est pertinent pour les mots de passe longs (tels que ceux de 12 caractères ou plus) pour lesquels la force brute devient très chronophage.

Par exemple, en supposant que vous vous souvenez vaguement que votre mot de passe est composé de 8 lettres minuscules, d'un trait d'union et de 6 chiffres décimaux, vous pouvez utiliser cette commande :

root@kitploit:~
bkcrack -k 1940e266 d3fd3d89 71ce9871 -m ?l?l?l?l?l?l?l?l-?d?d?d?d?d?d

Cela s'exécute en millisecondes, alors que l'alternative par force brute prend des heures.

Jeux de caractères

L'espace de recherche pour la récupération par force brute et par masque est défini par des jeux de caractères. Un jeu de caractères est une séquence de caractères ou de raccourcis pour des jeux de caractères existants. Les jeux de caractères prédéfinis sont listés ci-dessous.

En plus des jeux de caractères prédéfinis, vous pouvez définir des jeux de caractères personnalisés avec l'option -s. Les jeux de caractères personnalisés peuvent référencer des jeux prédéfinis ou d'autres jeux personnalisés. Ils sont particulièrement utiles pour spécifier précisément l'espace de recherche de la récupération par masque.

Par exemple, si vous savez que votre mot de passe est composé de 10 lettres (majuscules ou minuscules) et de 5 chiffres binaires, vous pouvez utiliser cette commande :

root@kitploit:~
bkcrack -k b8c377a6 f603160f 1832a78b -m ?x?x?x?x?x?x?x?x?x?x?y?y?y?y?y -s x ?u?l -s y 01

Apprendre

Un tutoriel est fourni dans le dossier example.

Pour plus d'informations, consultez la documentation et lisez le code source.

Contribuer

N'hésitez pas à suggérer des améliorations ou à soumettre des demandes de tirage (pull requests) sur GitHub.

Si vous souhaitez montrer votre soutien au projet, vous pouvez faire un don ou parrainer le projet via GitHub Sponsors.

Licence

Ce projet est fourni sous les termes de la licence zlib/png.

Télécharger l’outil
RaccourciDescriptionValeur
?llettres minusculesabcdefghijklmnopqrstuvwxyz
?ulettres majusculesABCDEFGHIJKLMNOPQRSTUVWXYZ
?dchiffres décimaux0123456789
?scaractères spéciaux !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
?acaractères alphanumériquesidentique à ?l?u?d
?pcaractères ASCII imprimablesidentique à ?l?u?d?s
?btous les octets0x00 .. 0xff