Piero V.

Creare tutte le possibili combinazioni di un array di caratteri

Non so se avete letto il mio post di prima…

Comunque lo sfizio di creare un generatore di dizionario per brute-force me lo volevo togliere…

Ed eccolo qua:

<?php
$z=explode(' ',microtime());
$z=$z[0]+$z[1];
$l=8;
$a=array('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z',0,1,2,3,4,5,6,7,8,9);
$b=count($a);
$u=fopen("dizionario.txt", "w+");
for($c=0; $c<$b; $c++) {  ## 1
	$m=$a[$c];
	for($d=0; $d<$b; $d++) { ## 2
		$n=$a[$d];
		for($e=0; $e<$b; $e++) { ## 3
			$o=$a[$e];
			for($f=0; $f<$b; $f++) { ## 4
				$p=$a[$f];
				for($g=0; $g<$b; $g++) { ## 5
					$q=$a[$g];
					for($h=0; $h<$b; $h++) { ## 6
						$r=$a[$h];
						for($i=0; $i<$b; $i++) { ## 7
							$s=$a[$i];
							for($j=0; $j<$b; $j++) { ## 8
								$w=$m.$n.$o.$p.$q.$r.$s.$a[$j];
								fwrite($u, $w."n");
							}
						}
					}
				}
			}
		}
	}
}
$x="#";
$y=explode(' ',microtime());
$y=$y[0]+$y[1];
$v=$y-$z;
fwrite($u, "$x Generated in $v");
fclose($u);

Se non siete pazzi come me non fatelo girare, a meno che non abbiate 23,092060626TiB di spazio libero e tanto tempo da sprecare…

Infatti, questo script crea un documento di testo con tutte le combinazioni alfanumeriche (caratteri latini minuscoli solo, per fortuna) di 8 caratteri…

Ma facciamo un po’ di calcoli alla mano…

Numero di combinazioni: 368=2821109907456
Vale a dire 22568879259648 caratteri senza gli a capo
Quindi 25389989167104 byte il file con gli a capo
Ovvero 24794911296 KiB
Perciò 24213780,5625 MiB
Che equivale a 23646,270080566GiB
Come dire 23,092060626TiB

In pratica, è impossibile farlo…

Se prima finiva la memoria, adesso uno dei due processori è sempre al 100%…

Io dopo un bel po’ di minuti di elaborazione sono arrivato a aacou58n e a 1,2GiB.

Più precisamente a 1308793590byte…

Vedete un po’ voi…