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
c-jwt-cracker — Cracker de force brute JWT écrit en C | Kitploit
Outils/GitHubGitHub/brendan-rius/c-jwt-cracker
Cassage de Mots de PasseSécurité WebTests d'IntrusionAuthentification
GitHubbrendan-rius/c-jwt-cracker

c-jwt-cracker

Cracker de force brute JWT écrit en C

Voir le dépôt
2.6k273il y a 5 ansVé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

Craqueur de JWT

Un craqueur par force brute multi-threadé de JWT écrit en C. Si vous êtes très chanceux ou disposez d'une puissance de calcul énorme, ce programme devrait trouver la clé secrète d'un jeton JWT, vous permettant de forger des jetons valides. Ceci est uniquement à des fins de test, ne vous mettez pas dans le pétrin :)

J'ai utilisé l'implémentation Base64 d'Apple que j'ai légèrement modifiée.

Construire une image Docker

root@kitploit:~
docker build . -t jwtcrack

Exécuter sur Docker

root@kitploit:~
docker run -it --rm  jwtcrack eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.cAOIAifu3fykvhkHpbuhbvtH807-Z2rI1FS3vX1XMjE

Compilation manuelle

Assurez-vous d'avoir les en-têtes d'openssl installés. Sur Ubuntu, vous pouvez les installer avec apt-get install libssl-dev

root@kitploit:~
make

Si vous utilisez un Mac, vous pouvez installer OpenSSL avec brew install openssl, mais les en-têtes seront stockés dans un emplacement différent :

root@kitploit:~
make OPENSSL=/usr/local/opt/openssl/include OPENSSL_LIB=-L/usr/local/opt/openssl/lib

Exécution

root@kitploit:~
$ > ./jwtcrack eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.cAOIAifu3fykvhkHpbuhbvtH807-Z2rI1FS3vX1XMjE

Exécution avec différentes fonctions HMAC

Les fonctions de hachage suivantes sont prises en charge pour HMAC, c'est-à-dire pour générer des codes d'authentification de message à clé hachée : "sha256" pour JSON HS256 (HMAC utilisant SHA-256), "sha384" pour HS384 et "sha512" pour HS512 respectivement. Vous pouvez spécifier le nom de toute autre fonction de hachage exactement comme elle est nommée dans OpenSSL. Si OpenSSL autorise cette fonction de hachage à être utilisée pour HMAC, alors jwtcrack essaiera de décoder le secret. Cependant, étant donné que jwtcrack n'est qu'un décodeur, il n'y a aucune garantie que cet algorithme ait été réellement utilisé pour l'encodage, encore moins parmi la liste des algorithmes autorisés dans le RFC "JSON Web Algorithms". Voir la section 3.1. du RFC 7518 pour plus de détails.

Dans l'exemple suivant, nous utilisons une fonction de hachage sha256 qui correspond à JSON HS256 (HMAC-SHA256), voyez "sha256" comme dernier paramètre de ligne de commande. De plus, dans cet exemple, nous spécifions une longueur maximale de secret de 5 caractères, et limitons l'alphabet aux caractères suivants : ABCSNFabcsnf1234

root@kitploit:~
$ > ./jwtcrack eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.cAOIAifu3fykvhkHpbuhbvtH807-Z2rI1FS3vX1XMjE ABCSNFabcsnf1234 5 sha256

Dans l'exemple ci-dessus, la clé est Sn1f, et cela prend moins d'une seconde sur un ordinateur portable moyen fabriqué vers 2019 (par exemple avec un CPU Intel basé sur la microarchitecture Ice Lake). La version 9.3.0 de GCC avec "-O3" a été utilisée pour compiler le programme jwtcrack. Il a été lié avec la bibliothèque OpenSSL version 1.1.1f sous Linux Ubuntu 20.04.1 LTS.

Ici, dans l'exemple suivant, nous utilisons "sha512" comme dernier paramètre de ligne de commande pour spécifier HS512 (HMAC-SHA512), nous spécifions également une longueur maximale de secret de 9 caractères, et limitons l'alphabet aux sept caractères latins minuscules suivants : "adimnps".

root@kitploit:~
$ > ./jwtcrack eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJyb2xlIjoiYWRtaW4ifQ.RnWtv7Rjggm8LdMU3yLnz4ejgGAkIxoZwsCMuJlHMwTh7CJODDZWR8sVuNvo2ws25cbH9HWcp2n5WxpIZ9_v0g adimnps 9 sha512

Dans l'exemple ci-dessus, la clé est adminpass, et il faut environ 15 secondes en moyenne pour décoder sur un ordinateur portable avec un CPU Intel Core i7 1065G7 sur microarchitecture Ice Lake (2019), fréquence de base 1,30 GHz, turbo max 3,90 GHz). Le nombre total de secondes CPU consommées par chacun des cœurs en mode utilisateur en raison du multithreading est d'environ 100 en moyenne pour décoder ce secret.

Exemple d'utilisation de "sha384" :

root@kitploit:~
$ > ./jwtcrack eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzM4NCJ9.eyJyb2xlIjoiYWRtaW4ifQ.31xCH3k8VRqB8l5qBy7RyqI2htyCskBy_4cIWpk3o43UkIMW-IcjTUEL_NyFXUWJ 0123456789 6 sha384

Mesure du temps consommé par jwtcrack

root@kitploit:~
/usr/bin/time -f "Total number of CPU-seconds consumed directly from each of the CPU cores: %U\nElapsed real wall clock time used by the process: %E" ./jwtcrack eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJyb2xlIjoiYWRtaW4ifQ.RnWtv7Rjggm8LdMU3yLnz4ejgGAkIxoZwsCMuJlHMwTh7CJODDZWR8sVuNvo2ws25cbH9HWcp2n5WxpIZ9_v0g adimnps 9 sha512

Contribuer

  • Aucun état de progression
  • Si vous arrêtez le programme, vous ne pouvez pas reprendre là où vous en étiez

IMPORTANT : Bogues connus

L'implémentation Base64 que j'utilise (d'Apple) est parfois boguée car toutes les implémentations Base64 ne sont pas identiques. Donc parfois, le décryptage de votre jeton Base64 ne fonctionnera que partiellement et vous pourrez ainsi trouver un secret pour votre jeton qui n'est pas le bon.

Si quelqu'un veut implémenter une implémentation Base64 plus robuste, ce serait génial :)

Télécharger l’outil