
php_mt_seed is a PHP mt_rand() seed cracker
php_mt_seed est un outil de cassage de graine pour mt_rand() de PHP. Dans le mode d'invocation le plus trivial, il trouve les graines possibles à partir de la toute première sortie de mt_rand() après un ensemencement éventuel avec mt_srand(). Avec les modes d'invocation avancés, il est également capable de faire correspondre plusieurs sorties de mt_rand(), non initiales et/ou inexactes, à des valeurs de graines possibles.
L'algorithme de mt_rand() de PHP a changé au fil des ans depuis son introduction dans PHP 3.0.6. php_mt_seed 4.0 prend en charge 3 révisions majeures de l'algorithme : PHP 3.0.7 à 5.2.0, PHP 5.2.1 à 7.0.x, et PHP 7.1.0+ (au moins jusqu'à la plus récente au moment de la rédaction, à savoir PHP 7.2.0beta3).
php_mt_seed utilise des réimplémentations optimisées pour l'attaque des algorithmes de mt_rand() de PHP. Il est écrit en C avec des intrinsèques SIMD optionnelles (SSE2, SSE4.1/AVX, XOP, AVX2, AVX-512, ainsi que MIC) et OpenMP. Sur un processeur quad-core moderne, il est capable de rechercher l'intégralité de l'espace de graines 32 bits en moins d'une minute. Sur un Xeon Phi de deuxième génération, il fait de même en 3 secondes.