
php_mt_seed is a PHP mt_rand() seed cracker
php_mt_seed ist ein Cracker für den PHP-mt_rand()-Seed. In der trivialsten Aufrufvariante findet es mögliche Seeds anhand der allerersten mt_rand()-Ausgabe nach einem möglichen Seeding mit mt_srand(). Mit fortgeschrittenen Aufrufvarianten kann es auch mehrere, nicht erste und/oder ungenaue mt_rand()-Ausgaben möglichen Seed-Werten zuordnen.
Der mt_rand()-Algorithmus von PHP hat sich seit seiner Einführung in PHP 3.0.6 im Laufe der Jahre verändert. php_mt_seed 4.0 unterstützt 3 Hauptrevisionen des Algorithmus: PHP 3.0.7 bis 5.2.0, PHP 5.2.1 bis 7.0.x und PHP 7.1.0+ (zumindest bis zur aktuellsten Version zum Zeitpunkt dieser Niederschrift, PHP 7.2.0beta3).
php_mt_seed verwendet angriffsoptimierte Neuimplementierungen der mt_rand()-Algorithmen von PHP. Es ist in C geschrieben, mit optionalen SIMD-Intrinsics (SSE2, SSE4.1/AVX, XOP, AVX2, AVX-512 sowie MIC) und OpenMP. Auf einer modernen Quad-Core-CPU kann es den gesamten 32-Bit-Seed-Raum in unter einer Minute durchsuchen. Auf der zweiten Generation von Xeon Phi erledigt es dasselbe in 3 Sekunden.