
Générer un favicon qui produit n'importe quel hash cible sur Shodan
Générez un favicon qui produit n'importe quel hash cible sur Shodan
Cet outil implémente une méthode de force brute pour générer n'importe quelle préimage pour l'algorithme http.favicon.hash de Shodan. Vous pouvez, par exemple, faire apparaître votre site lors d'une recherche pour un hash spécifique de votre choix :
Pour en savoir plus sur la méthode et l'implémentation, consultez mon article de blog ici :
"How I got a Shodan Favicon Hash = 1337"
Tout d'abord, installez Rust, le langage de programmation avec lequel ce projet est réalisé, afin de le compiler depuis les sources. Ensuite, ces commandes le transforment en un exécutable optimisé :
git clone https://github.com/JorianWoltjer/shodan-favicon-preimage.git && cd shodan-favicon-preimage
cargo build --release
./target/release/shodan-favicon-preimage --help
Usage: shodan-favicon-preimage [OPTIONS] <INPUT> [TARGET]
Arguments:
<INPUT> File to compute hash on
[TARGET] The target hash to find (32 bits) [default: 1337]
Options:
-o, --output <OUTPUT> Output file to store the base64 encoded content [default: output.b64]
-h, --help Print help
Prenez n'importe quel fichier .ico existant et passez-le en premier argument. Vous pouvez éventuellement choisir un hash cible différent de la valeur par défaut 1337 :
$ shodan-favicon-preimage favicon.ico 31337
Aligning input...
State: 2363324422 @ 20948 bytes
Starting search...
SUCCESS: Found hash=31337 for input 4107189463 ("17zO9A==\n")
Wrote result to "output.b64"
Decode it using `base64 -di "output.b64" > output.ico`
Le fichier output.b64 sera la forme encodée qui produit votre hash cible via MurmurHash3, mais vous pouvez aussi le décoder en un fichier .ico classique. Ensuite, verify.py peut être utilisé pour vérifier que le hash est bien correct :
$ base64 -di "output.b64" > output.ico
$ ./verify.py output.ico
31337