Brute Force Script gesucht

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
Benutzeravatar
mgutt
Mitglied
Beiträge: 2999
Registriert: 31.08.2004 16:44
Wohnort: Hennef
Kontaktdaten:

Brute Force Script gesucht

Beitrag von mgutt »

Hallo,

ich will nicht brutforcen, das nur vorab. Ich will Referal URLs möglichst "versteckt" konstruieren, damit erfahrene Nutzer nicht erkennen können, dass es sich um ein solchige handelt. D.h ich wollte mit Mod Rewrite eine URL bauen wie folgt:

domain.com/Ajd9

Das normale Zahlensystem von 0-9 reicht mir da nicht. Daher wollte ich von 0-9 über a-z und A-Z mit in die Zählung reinnehmen, um so die Adressen so kurz wie möglich zu halten. Also "Buchstaben und Zahlen hochzählen" könnte man das nennen.

Wichtig ist aber, dass ich das auch rückwärts rechnen kann, also dass z.B. "a" die ID "10" ist und "aa" müsste dann... ...naja schon recht hoch sein ;)

Da Bruteforcescripte genau sowas machen, wollte ich fragen, ob jemand eine Quelle zu einer solchen Funktion hat. Kann von mir aus auch per PN sein, ist mir gleich.

Gruß
meine Foren: http://www.maxrev.de/communities.htm
Ich kaufe Dein Forum! Angebote bitte an marc at gutt punkt it
Benutzeravatar
Pyramide
Ehrenadmin
Beiträge: 12734
Registriert: 19.04.2001 02:00
Wohnort: Meschede

Beitrag von Pyramide »

D.h. du suchst [php:base_convert]?
KB:knigge
Benutzeravatar
mgutt
Mitglied
Beiträge: 2999
Registriert: 31.08.2004 16:44
Wohnort: Hennef
Kontaktdaten:

Beitrag von mgutt »

5 mal gelesen und trotzdem nicht verstanden. Was hat es mit den Angaben auf sich:

Code: Alles auswählen

frombase
Die Basis zu der number kodiert ist 

tobase
Die Basis zu der number konvertiert werden soll 
Ich hab ein paar Zeichenketten durchgetestet, kann mir da aber nicht wirklich einen Reim drauf machen.

Ich suche was, was mir bei 1 die 1, bei z die 36, bei 00 die 37, bei 01 die 38 und bei 0z eben die 72 ausgibt.

Und dann brauche ich was, was so zählen kann: 1, 2, 3, 4, ... a, b, c, .... z, 00, 01, 02, ... 0z, 10, 11, usw.

Nur am besten noch mit Großbuchstaben, damit ich noch mehr Möglichkeiten habe.

EDIT:
Ich hab leider so meine Probleme mit rekursiven Funktionen, daher hab ich es mal so "gebastelt":

Code: Alles auswählen

function rec($str, $all)
{
	$i = 0;
	foreach ( $all as $ones )
	{
		echo($ones . ' ');
		$i++;
	}
	foreach ( $all as $tens )
	{
		foreach ( $all as $ones )
		{
			echo($tens . $ones . ' ');
			$i++;
		}
	}
	foreach ( $all as $hundreds )
	{
		foreach ( $all as $tens )
		{
			foreach ( $all as $ones )
			{
				echo($hundreds . $tens . $ones . ' ');
				$i++;
			}
		}
	}
	echo($i);
}
$str = '';
$all = array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, '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', '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');
rec($str, $all);
exit;
Das läuft genau wie ich es brauche. Hört jetzt bei ZZZ auf, was laut Zählung mit 242.234 gleichzusetzen ist. Jetzt brauche ich was, was mir die 242.234 in ZZZ umwandeln kann bzw. etwas was ohne kompletten Durchlauf das gleiche andersherum macht. Dann baue ich das mit 4 Stellen, denn ich denke, dann sind das genug Varianten. Ich denke es werden so 2 Millionen Varianten gebraucht.

EDIT2:
Also ich habe das noch mit Tausender durchprobiert, dann habe ich 15.018.570 Varianten (ZZZZ). Und das finde ich super, da es nur 4 Stellen sind.

EDIT3:
Eine mathematische Grundlade dafür hätte ich auch:

Für jede Stelle muss man 62 hoch Anzahl der Stelle addieren. Also bei 4 Stellen sieht die Formel so aus:

62 hoch 4 + 62 hoch 3 + 62 hoch 2 + 62 hoch 1 = 15.018.570 Varianten

Fragt man sich jetzt nur, wie mir das beim Rückwärtsbestimmen helfen könnte ;)

EDIT4:

Ich weiß laut meinem Script, dass 2.000.000 z.B. 7nh4 ist. Die Frage ist, wenn ich nur 7nh4 habe, wie ich schnellstmöglich auf 2.000.000 komme und wenn ich nur 2.000.000 habe, wie ich schnellstmöglich auf 7nh4 komme.
meine Foren: http://www.maxrev.de/communities.htm
Ich kaufe Dein Forum! Angebote bitte an marc at gutt punkt it
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Beitrag von gn#36 »

Du dividierst den Zahlenwert im einen Zahlensystem durch die Basis des anderen Zahlensystems und bestimmst den Rest der Division (also Modulo). Diesen Rest merkst du dir, denn dass ist eine Zahlenstelle deines Ergebnisses. Mit dem Teil der Zahl der sich bis auf den Rest dividieren ließ verfährst du wieder so bis du bei einer Zahl ankommst wo das nicht mehr geht. Falls das zu verwirrend war hier ein Beispiel mit der Konvertierung von Basis 10 auf Basis 2:
Zahlenwert: 145 (als Beispiel)

Code: Alles auswählen

145 / 2 = 144/2 Rest 1
-> Wiederhole diesen Schritt mit 144/2 = 72
72 / 2 = 72/2 Rest 0
-> Wiederhole diesen Schritt mit 72/2 = 36
36 / 2 = 36/2 Rest 0
-> Wiederhole diesen Schritt mit 36/2 = 18
18 / 2 = 18/2 Rest 0
-> Wiederhole diesen Schritt mit 18/2 = 9
9 / 2 = 8/2 Rest 1
-> Wiederhole diesen Schritt mit 8/2 = 4
4 / 2 = 4/2 Rest 0
-> Wiederhole diesen Schritt mit 4/2 = 2
2 / 2 = 2/2 Rest 0
-> Wiederhole diesen Schritt mit 2/2 = 1
1 / 2 = 0 Rest 1
-> Abbruchbedingung erreicht.
Ergebnis: 10010001 (Rückwärts die Zahlenwerte aneinanderreihen)
Im Prinzip brauchst du also lediglich einen Algorithmus, der in der Lage ist Buchstaben durcheinander zu dividieren. Irgendwann habe ich auch sowas schon mal geschrieben, finde ich aber gerade nicht, das Horner-Schema oben ging noch so im Kopf ;)
Vermutlich macht base_convert nicht viel anderes, allerdings nur bei Basen bis 36.
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Benutzeravatar
Pyramide
Ehrenadmin
Beiträge: 12734
Registriert: 19.04.2001 02:00
Wohnort: Meschede

Beitrag von Pyramide »

gn#36 hat geschrieben:Vermutlich macht base_convert nicht viel anderes, allerdings nur bei Basen bis 36.
Jo.
  • echo base_convert('1234', 10, 36);
    -> ya
  • echo base_convert('ya', 36, 10);
    -> 1234
KB:knigge
Benutzeravatar
mgutt
Mitglied
Beiträge: 2999
Registriert: 31.08.2004 16:44
Wohnort: Hennef
Kontaktdaten:

Beitrag von mgutt »

Ok. Ich hab was gebaut (nachdem ich das mit base_convert() immer noch nicht verstanden habe), was mir einen String in eine Zahl konvertiert und einen String in eine Zahl. Mein oben gebautes Schleifenkonstrukt brauche daher nicht mehr. Was ich mir jetzt gebastelt habe, wollte ich nicht voreilig veröffentlichen, da man damit eine beliebige Zeichenkette von 0 aufwärts aufbauen kann (Bruteforce eben), außer ihr habt nichts dagegen.

Ein paar Ergebnisse:
String bei 237297: YIm (Prüfwert)
Berechnete ID des Strings: 237297
Berechneter String der ID: YIm

String bei 883352: 2GMB (Prüfwert)
Berechnete ID des Strings: 883352
Berechneter String der ID: 2GMB

String bei 109985: rAW (Prüfwert)
Berechnete ID des Strings: 109985
Berechneter String der ID: rAW

String bei 981289: 36ge (Prüfwert)
Berechnete ID des Strings: 981289
Berechneter String der ID: 36ge

String bei 625084: 1BAZ (Prüfwert)
Berechnete ID des Strings: 625084
Berechneter String der ID: 1BB

String bei 5967: 0xe (Prüfwert)
Berechnete ID des Strings: 5967
Berechneter String der ID: 0xe

String bei 187201: LGm (Prüfwert)
Berechnete ID des Strings: 187201
Berechneter String der ID: LGm
Den Prüfwert habe ich mit der oben genannten Schleife ermittelt, danach Berechne ich mit zwei verschiedenen Funktionen die ID des Strings bzw. den String zur ID. Wie man sieht recht erfolgreich :D
meine Foren: http://www.maxrev.de/communities.htm
Ich kaufe Dein Forum! Angebote bitte an marc at gutt punkt it
Antworten

Zurück zu „Coding & Technik“