PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Zeichenkette aus Array



Hu5eL
03.08.2008, 22:50
Hi, bin zu blöd um eine Art Brutforce-Liste zu erstellen...
habe ein array und daraus sollen alle möglichen zeichen von bsp 2-12 zeichn erstellt werden. bestimmt geht das mit rekrusiven programmieren, aber ich hab ka wie ich das genau machen soll, vllt hat jemand nen tipp für mich
dankeschön.
edit:
überlegung: reicht es einfach von dem string die letzte stelle (also ganz rechts) immer um eins zu erhöhen, solange bis das letzte zeichen des arrays erreicht wurde, und dann setzte ich die nächst höhere stelle eins hoch...

z.b aax, aay aaz, aba ...

wenn das schon eins höher ist, shieb ich das durch also so ca:

azx,azy,azz,baa...

stimmt die idee soweit?

-=Player=-
04.08.2008, 00:18
das sollte dir helfen

<?php
ini_set("max_execution_time",0);

$start = 1;
$ende = 5;
$source = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVW XYZ0123456789öäüÜÄÖß !?-_.,:;&$+#/§';
$array = array();

for($i=0;$i<strlen($source);$i++){
$array[]=$source[$i];
}

for ($i=$start;$i<=$ende;$i++){
permutation($array,'',$i);
}

function permutation($ar,$now,$end) {
if(strlen($now)==$end){
echo $now.'
';
return;
}

for($i=0;$i<count($ar);$i++){
$a=$now.$ar[$i];
permutation($ar,$a,$end);
}
}
?>

Hu5eL
04.08.2008, 08:02
hey nice thx. werde es mir mal anschauen

36c
04.08.2008, 08:03
Beispiel mit foreach Schleifen:


<?php
$chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVW XYZ0123456789öäüÜÄÖß!?-_.,:;&$+#/§';
$chars_with_space = $chars.' ';
$result = array();

foreach($chars_with_space AS $a){
foreach($chars_with_space AS $b){
foreach($chars AS $c){
//foreach($chars AS $d){
//foreach($chars AS $e){
//foreach($chars AS $f){
//foreach($chars AS $g){
//foreach($chars AS $h){
//foreach($chars AS $i){
//foreach($chars AS $j){
//foreach($chars AS $k){
//foreach($chars AS $l){
$string = $a.$b.$c.$d.$f.$g.$h.$i.$j.$k.$l;
$result[] = $string;
//}}}}}}}}}
}}}

var_dump($result);

?>

Ist etwas einfacher zu verstehen und erfüllt den selben Zweck.
Für weitere Iterationen die // passend wegmachen.

Achja, mehr als ein paar tausend Einträge wirst du in ein Array nicht hereinbekommen. Musste also vorher die Daten wegschreiben.

Ganz nebenbei:
Soeine BruteForce Worlist ist schwachsinnig, jedes Bruteforce Programm kann selber den nächsten String generieren.

Hu5eL
04.08.2008, 10:30
bekomm ich da nicht probleme mit dem speicher? also ichs chreibe es direkt in ne db, aber trotzdem?! kann das sein?

36c
04.08.2008, 11:21
Achja, mehr als ein paar tausend Einträge wirst du in ein Array nicht hereinbekommen. Musste also vorher die Daten wegschreiben.

Ganz nebenbei:
Soeine BruteForce Worlist ist schwachsinnig, jedes Bruteforce Programm kann selber den nächsten String generieren.


bekomm ich da nicht probleme mit dem speicher? also ichs chreibe es direkt in ne db, aber trotzdem?! kann das sein?

Genauer lesen.
Und ja, wenn man das in eine DB schreibt wird die Festplatte voll.

Hu5eL
04.08.2008, 11:23
naja damit das die platte voll wird rechne ich ja.. ok dann mach ich das erstmal. mal schaun was bei rauskommt, nächstes prob sind die sonderzeichen :-( scheiß zeichensätze. werde vllt heute abend den "quellcode" posten um vllt verbesserung zu erhalten

Added after 10 hours 39 minutes:

ok nach langer zeit melde ich mich... so verwender für die sonderzeichen jetzt iso-8859-15. benutze folgende zeichen
string(67) "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWX YZäÄöÖüÜ!§$%&.-_#"

fällt euch nich was ein was vllt rein sollte?

Added after 10 hours 48 minutes:

ok gehe jetzt dann mal in bett, erstelle alle möglichkeiten von 1-8 stellen... mal sehen wie groß die db wird

2called-chaos
08.08.2008, 01:33
@Player:

Ich versteh diesen Schritt nicht:

for($i=0;$i<strlen($source);$i++){
$array[]=$source[$i];
}

Wenn $source ein Array wäre würde ich das verstehen aber so o.O

Mfg

Chaos

36c
08.08.2008, 10:30
Ich versteh diesen Schritt nicht:

for($i=0;$i<strlen($source);$i++){
$array[]=$source[$i];
}

Wenn $source ein Array wäre würde ich das verstehen aber so o.O

Ich glaub das ist ein Typo.
Er wollte wohl nicht auf Source als Array zugreifen sondern auf die einzelnen Buchstaben. Dann müsste es aber heissen:

for($i=0;$i<strlen($source);$i++){
$array[]=$source{$i};
}