[PHP] "String hinaufzählen"

kathelene

Well-known member
ID: 313775
L
28 Oktober 2007
107
15
Guten Morgen

Ich möchte ein wenig mit Bruteforce herumspielen, und habe mir gedacht, ein kleines PHP Skript dazu zu schreiben. Damit ich den kreiierten String nicht "zufällig" generieren muss, möchte ich es systematisch tun (wie manch ein Bruteforce-Tool funktioniert):

$char = 'abcdef';

a = array(1);
b = array(2);
c = array(3)
....
aa = array(1, 1);
ab = array(1, 2);
ac = array(1, 3);
..
af = array(1, 6); [if $n == 6; then:] $string[($n-1)]++; (möglichst rekursiv)

Gibt es einfachere Varianten?
 
Hallo,

geht meiner meinung nach einfacher, wenn man von char nach int castet.

$arr_asc=array();

for($i=32; $i < 127; $i++)
array_push($arr_asc,$i);

for($m=0; $m < count ($arr_asc); $m++)
{
$pw=chr($arr_asc[$m]);
echo "$pw <br>";
}

Entweder mehrere Schleifen für mehrstellige Passwörter oder du packst das ganze ganze in eine Funktion, damit du sie aufrufen kannst und lässt dir den Ergebniss-Array zurückgeben.

mfg Angel
 
AFAIK gibt es aber zwischen 0 und .. auch Sonderzeichen, die ich nicht gerne in den Passwörtern haben möchte, andererseits, brauchts nach oben eine Grenze. Zumal kann man mit einem Charset auch bestimmen, WELCHE Zeichen zum Brutig bereit stehen sollten. So kann man z. B. zuerst "numerisch bruten", etc.
 
1) ein 1d-array, jedes Element vom beinhaltet den Zaehler fuer jeden Buchstaben des String
2) ein 1d-array als Charset, die Zaehler aus 1) repräsentieren Buchstaben aus dem Charset
BSP:
$chrset=array('a','b','1','2'); $count=array(1,2,0,0,0);
ergibt string "b1"


3)eine schleife die die Laenge des String zaehlt, vorzugsweise von klein nach gross
4)darin weitere schleife die von 1 bis count(charset) durchzaehlt und entsprechend die variable aus 1) veraendert
5)darin die Abfrage des neu generierten Strings auf validitaet mit der Zielroutine
6) normal den zaehler an der stelle der Laenge +1, bei erreichen von count(charset) an der Stelle der Laenge --> Laenge++;
7)zaehler an den vorigen stellen wieder auf 0.


viel Spass damit:ugly:

[NACHTRAG]
PHP:
//erstellen des Charset, Alphabet g/k+Zahlen
$letters=array();
$b=0;
for($a=1;$a<=(2*26+10);$a++)
{
 if($a>26) $b=6;
 if($a>(2*26)) $b=(-2*26)-17;#Zahlen
 $letters[$a]=chr(65+$a-1+$b);
}
 
Zuletzt bearbeitet:
@Ich-Ess-Nudeln:
Mit dem Codestück kann man sich nicht viel vorstellen, was es tut.
Bau dir halt einfach einen String und nutze diesen als Array:
PHP:
$charset = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890";
for($i = 0; $i < strlen($charset); $i++)
  make_use_of_character_somehow($charset{$i});