
php_mt_seed is a PHP mt_rand() seed cracker
php_mt_seed è un cracker di seed per mt_rand() di PHP. Nella modalità di invocazione più semplice, trova i possibili seed a partire dal primo output di mt_rand() dopo un eventuale seeding con mt_srand(). Con le modalità di invocazione avanzate, è anche in grado di confrontare più output di mt_rand(), anche non iniziali e/o non esatti, con i possibili valori di seed.
L'algoritmo di mt_rand() di PHP è cambiato nel corso degli anni dalla sua introduzione in PHP 3.0.6. php_mt_seed 4.0 supporta 3 principali revisioni dell'algoritmo: PHP 3.0.7 fino a 5.2.0, PHP 5.2.1 fino a 7.0.x, e PHP 7.1.0+ (almeno fino all'ultima versione al momento della stesura, che è PHP 7.2.0beta3).
php_mt_seed utilizza reimplementazioni ottimizzate per l'attacco degli algoritmi di mt_rand() di PHP. È scritto in C con intrinsic SIMD opzionali (SSE2, SSE4.1/AVX, XOP, AVX2, AVX-512, oltre a MIC) e OpenMP. Su una moderna CPU quad-core, è in grado di cercare l'intero spazio di seed a 32 bit in meno di un minuto. Su Xeon Phi di seconda generazione, fa lo stesso in 3 secondi.