Hallo Zusammen,
könnte mir jemand erklären wie die Boolean- Methode funktioniert? (Bin noch Anfänger)
Es wird ein etwas längerer Text. So kann ich am meisten von euch lernen. Ich hoffe das es ok ist
Es handelt sich um diese Übung:
Ich kann einfach nicht aufhören herausfinden zu wollen wie die untere Methode funktioniert.
(Die Aussage, dass es für die absoluten Cracks ist und ob man erklären kann wie der Algorithmus funktioniert hat mich getriggert und nun will ich es unbedingt wissen)

Mein bisheriger Stand: Ich weiß das die Ergebnisse 46, 56, 70 und 82 lauten. Was ich jedoch nicht verstehe ist Warum.
Meine Annahmen:
0x6c ist Hexidezimal und lautet 108 (Googlesuche hat häufig darauf verwiesen)
(3 << (14 % 6)) Damit ist der Binärcode von 3 und 2 gemeint. Der Binärcode von 3 wird um 2 nach links verschoben und dadurch ist das Ergebnis 12.
Auf die Idee mit dem Binärcode bin ich durch https://de.wikibooks.org/wiki/Java_Standard:_Operatoren gekommen. Wüsste sonst nicht was das mit den Bits sein soll
Für die Ermittlung der Binärcodes habe ich diese Seite benutzt: http://www.thematrixer.com/binary.php
Dies hat zur Folge, dass 42 mit jedem Schleifendurchgang um 12 addiert wird. Dann müssten die Ergebnisse doch 42, 54, 66, 78, 90 und 102 lauten oder? ( 114 ist über 108 und wird somit nicht ausgeführt (Deshalb hab diesen Wert als Endwert in der Main Schleife
)).
Aber was genau macht dann die if-Anweisung? Diese soll doch nur die Schleife abbrechen oder nicht?
Wie genau laufen die Schleifen den ab? Werden beide Schleifen gleichzeitig durchgelaufen ( die von Main- und Boolean-Methode)?
Oder kann man sich das so vorstellen, dass die Schleife von Boolean bereits abgelaufen ist und nun mit der der main Variable verglichen wird?
Die Annahmen für die if-Anweisung sind das die Variable E1337 immer um 1 erhöht wird und dann dessen Binärcode mit der unveränderten Variable einer Bitweisen Oder "manipuliert bzw verändert?" wird. Bei der Annahme mit den immer um 12 addieren würde aber immer die Werte mit ++ übrig bleiben (Also +1). Dies würde nochmal mit +1 gerechnet werden? und mit ^ (Xor) verglichen? oder ist damit eher die bitweise exklusive Oder gemeint? Bei 1 + H4X0R müsste die Variable H4X0r doch immer 1 sein, weil es ja nicht gespeichert wird richtig , sondern lediglich zur Kontrolle dient ?
123456789 & 0 ist doch wieder eine bitweise Veränderung und hat doch zur folge das immer ein Binärcode mit nur 0en übrig bleibt.
Daher ist es ja egal wie der Binärcode lautet.
Vielen Dank, dass du dir das alles bis hierher durchgelesen hast und natürlich für die Mühe die sich hier der ein oder andere machen wird, um mich aufzuklären.
Edit: Natürlich auch die ein oder andere
und so (will ja kein Geschlecht ausschließen)
könnte mir jemand erklären wie die Boolean- Methode funktioniert? (Bin noch Anfänger)
Es wird ein etwas längerer Text. So kann ich am meisten von euch lernen. Ich hoffe das es ok ist
Es handelt sich um diese Übung:
Ich kann einfach nicht aufhören herausfinden zu wollen wie die untere Methode funktioniert.
(Die Aussage, dass es für die absoluten Cracks ist und ob man erklären kann wie der Algorithmus funktioniert hat mich getriggert und nun will ich es unbedingt wissen)
Mein bisheriger Stand: Ich weiß das die Ergebnisse 46, 56, 70 und 82 lauten. Was ich jedoch nicht verstehe ist Warum.
Meine Annahmen:
0x6c ist Hexidezimal und lautet 108 (Googlesuche hat häufig darauf verwiesen)
(3 << (14 % 6)) Damit ist der Binärcode von 3 und 2 gemeint. Der Binärcode von 3 wird um 2 nach links verschoben und dadurch ist das Ergebnis 12.
Auf die Idee mit dem Binärcode bin ich durch https://de.wikibooks.org/wiki/Java_Standard:_Operatoren gekommen. Wüsste sonst nicht was das mit den Bits sein soll
Für die Ermittlung der Binärcodes habe ich diese Seite benutzt: http://www.thematrixer.com/binary.php
Dies hat zur Folge, dass 42 mit jedem Schleifendurchgang um 12 addiert wird. Dann müssten die Ergebnisse doch 42, 54, 66, 78, 90 und 102 lauten oder? ( 114 ist über 108 und wird somit nicht ausgeführt (Deshalb hab diesen Wert als Endwert in der Main Schleife
Aber was genau macht dann die if-Anweisung? Diese soll doch nur die Schleife abbrechen oder nicht?
Wie genau laufen die Schleifen den ab? Werden beide Schleifen gleichzeitig durchgelaufen ( die von Main- und Boolean-Methode)?
Oder kann man sich das so vorstellen, dass die Schleife von Boolean bereits abgelaufen ist und nun mit der der main Variable verglichen wird?
Die Annahmen für die if-Anweisung sind das die Variable E1337 immer um 1 erhöht wird und dann dessen Binärcode mit der unveränderten Variable einer Bitweisen Oder "manipuliert bzw verändert?" wird. Bei der Annahme mit den immer um 12 addieren würde aber immer die Werte mit ++ übrig bleiben (Also +1). Dies würde nochmal mit +1 gerechnet werden? und mit ^ (Xor) verglichen? oder ist damit eher die bitweise exklusive Oder gemeint? Bei 1 + H4X0R müsste die Variable H4X0r doch immer 1 sein, weil es ja nicht gespeichert wird richtig , sondern lediglich zur Kontrolle dient ?
123456789 & 0 ist doch wieder eine bitweise Veränderung und hat doch zur folge das immer ein Binärcode mit nur 0en übrig bleibt.
Daher ist es ja egal wie der Binärcode lautet.
Vielen Dank, dass du dir das alles bis hierher durchgelesen hast und natürlich für die Mühe die sich hier der ein oder andere machen wird, um mich aufzuklären.
Edit: Natürlich auch die ein oder andere
Java:
[/B]
public static void main(String[] args) {
// Passwort Knacken! Zahlen von 1 bis 1.000 und nur 4 gültige zahlen.
for(int i = 1; i <= 114; i++) {
if(checkPasscode(i))
System.out.println("Das Passwort wurde geknackt! Es lautet " + i);
}
}
public static boolean checkPasscode(int H4X0R) {
// returns true if passcode is valid
boolean result = false;
for (int E1337 = 42; E1337 <= (52 ^ (0x6c)); E1337 += (3 << (14 % 6))) { // 0x6c ist Hexadezimal!!! und bedeutet 108?
// (108) (Binarcode von 3 wird auf 12 verändert? Von 00000011 zu 00001100?)
if (result = ((++E1337 | E1337 + (2 >>> 1)) ^ (1 + H4X0R)) == (123456789 & 0))
// 43 42 + 1 1 ( mit | und & wird der binärcode verändert?)
break;
}
return result;
}
}
[B]