crackme#8

OK, dass mit dem Stack "zerschossen" hörte sich ein wenig komisch an, allerdings existieren die richtigen Werte ja noch sowie ich das gesehen habe.

Aber wie man auf die Serial kommt weiß ich immer noch nicht. Also CRC von deinem Namen ist 0x03970AA6. Und auf die Serial wird jetzt Base64 angewendet, so dass in Hex-Darstellung das ganze auch 0x03970AA6 ist?
 
Also CRC von deinem Namen ist 0x03970AA6. Und auf die Serial wird jetzt Base64 angewendet, so dass in Hex-Darstellung das ganze auch 0x03970AA6 ist?
Genau. Wenn man eine Zahl mit sich selbst xor nimmt, dann erhält man null. Bei Base64 entsprechen drei Binärzeichen vier ASCII-Zeichen. Für vier Binärzeichen (Ergebnis von CRC32) müssen jedoch ganze acht ASCII-Zeichen verwendet werden, wobei davon drei ASCII-Zeichen nicht benötigt werden. Daher sind mehrere Lösungen richtig, was ich leider bei der Vergabe des Passworts für die ZIP-Datei nicht bedacht habe.
 
Ich komm immer noch nicht drauf wie ich jetzt die Serial berechne. Also folgendes:
Was genau sind für dich Binärzeichen? Für mich sind Binärzeichen, Zeichen aus dem Binärsystem also nur 0 und 1. Du sagst aber das Ergebnis aus CRC32 hat 4 Binärzeichen. Es hat (logischerweise bei x86) 32 Bit, also 4 Byte, wobei 1 Byte ein ASCII-Zeichen ist demnach auch 4 ASCII-Zeichen.

Ich brauch am Ende den 32 Bit Wert 0x03970AA6. Nur wie funktionert jetzt konkret die Rechnung?
Was ich bis jetzt entnehmen konnte:
Ein Base64 Zeichen hat 6 Bit. Unsere eigentlich Passwort ist 8 ASCII-Zeichen lang, demnach 64 Bit, da wir aber nur 32 Bit brauchen und Base64 immer 6 Bits zusammen berücksichtigt brauchen wir 5*6 Bits = 30 Bits + 2 Bits, wobei Base64 direkt 6 Bits "nimmt" also sind von den Bits 31-36 nur die ersten beiden Bits relevant. Deswegen funktioniert die Serial von Redox pgqXA9== genauso wie pgqXAw==. Er sagte zur zweiten Serial, es ist die erste gültige mit den zwei Gleichheitszeichen als 7tes und 8tes Zeichen. Das w hat in Base64 als erstes Zeichen die ersten beiden Bits auf 1 (32+16=48 in Base64 Tabelle nachgucken = w) und alle Zeichen die danach kommen, also die höherwertig sind funktionieren auch, weil diese auch die ersten beiden Bits auf 1 haben.

Ich schaff es aber trotzdem nicht von den 32 Bit Wert auf die Serial umzurechnen :-(.
 
Ich berechne den CRC des Namens und ermittele dann via Bruteforce einen String, welcher mit Base64 kodiert den ersten 3 Bytes des CRCs gleicht. Anschließend wird ein zweiter String gesucht und wieder mittels Base64 kodiert. Diesmal muss jedoch das erste Byte mit dem 4 Byte des CRCs übereinstimmen.

aaaabbbb@h#!@
BASE64("aaaa") ?= CRC(Name)[0-2]
BASE64("bbbb") ?= CRC(Name)[3]
 
OK, aber gibt es da nicht eine simple Umrechnung zu? Ich mein ich weiß was rauskommen soll und kenne das Verfahren. Das ist natürlich bei Krypto Verfahren erstmal auch so, allerdings benutze ich hier keinen Schlüssel und das Verfahren ist recht simpel also sollte man es doch auch ohne BruteForce rechnen können oder?
 
Was genau sind für dich Binärzeichen? Für mich sind Binärzeichen, Zeichen aus dem Binärsystem also nur 0 und 1. Du sagst aber das Ergebnis aus CRC32 hat 4 Binärzeichen. Es hat (logischerweise bei x86) 32 Bit, also 4 Byte, wobei 1 Byte ein ASCII-Zeichen ist demnach auch 4 ASCII-Zeichen.
Tut mir leid, dass ich mich ein wenig unklar ausgedrückt habe. Mit einem Binärzeichen habe ich ein Byte gemeint. Das Problem ist halt, dass man über die Tastatur nicht die Steuerzeichen 0x0-0x1F eingeben kann. Bruteforce wird für die Lösung nicht benötigt. Damit das jetzt hoffentlich ein wenig klarer wird, habe ich mal einen Keygen erstellt.
 
Zuletzt bearbeitet:
Zurück
Oben