Mein erstes Crackme... [Solved]

Hi,

Dies ist mein erstes Crackme...

Hier die Regeln:
- Ziel ist es, die Anmeldedaten für seinen Vornamen oder Nicknamen herauszufinden
- Patchen ist erlaubt, wird aber 1. nichts bringen und 2. nicht funktionieren :D

Meine Anmeldedaten lauten wie folgt:
Chris//J0qnV
BlackSun1102//Xnaq9VJ9zGk7

Den Algorithmus habe ich selber entworfen, er ist nicht wirklich sicher, da ich ihn nur
für dieses Crackme geschrieben habe und mir deshalb keine großen Gedanken darüber gemacht habe...
Der Algorithmus arbeitet nicht monoalphabetisch, da sich der Schlüssel mehrmals pro Runde ändert.


Sobald die ersten 3 ihre Anmeldedaten gepostet haben, wird der Sourcecode veröffentlich und das Crackme als gelöst markiert...

Platz 1: Lesco
Platz 2: cagiv
Platz 3: daef

Schwierigkeitsstufe würde ich als leicht einschätzen.

Über Feedback und konstruktive Kritik würde mich sehr freuen!

Viel Spass beim lösen...

Gruß Chris
 
RE: Mein erstes Crackme...

Original von BlackSun1102
Meine Anmeldedaten lauten wie folgt:
Chris//J0qnV
BlackSun1102//Xnaq9VJ9zGk7

Die scheinen nicht zu funktionieren.
Das solltest du mal genauer untersuchen, bevor ich mir damit die Nacht um die Ohren schlage :p
 
Ups :D
Ich hab fast sämtliche Kombinationen ausprobiert, aber die gerade nicht.

Scheint nicht so einfach sein, das Ding überhaupt in Olly reinzubekommen.

Aber: Das Teil hat eine Schwachstelle.
Es wird nicht die minimale Länge überprüft.
Folglich mein Ergebnis nach etwas probieren:
User: a
Pass: x
 
Hi,

Wie gesagt, der Algorithmus ist billig...
Aber du sollst ja keine Kryptoanalyse machen sondern das Passwort zu deinem Nicknamen rausfinden.
Das mit a//x ist wirklich zufall, da der Schlüssel sich mehrmals pro Runde ändert und in abhänigkeit der Gesamtlänge des Benutzernamen steht.

Also wenn du das Teil in OllyDbg reinbekommst, kannst du dich fast Gott nennen ^^

Gruß Chris
 
Original von Anschar
Wie es ändert sich jede Runde? ich kann a//x hundertmal eingeben und es funktioniert oO

Ich denk mal er meint es Algorithmusintern.
Also das über den selben String x mal Keys drüber laufen und demzufolge nicht gilt, dass
aa//xx funktioniert, nur weil a//x es tut.
Nicht monoalphabetisch, wie er schon sagte.
 
Hier mal ein paar Tipps:
1. Versucht es mal mit dem .net-Reflector um den Algorithmus zu finden, der Rest ist dann hauptsächlich Copy&Paste und ggf. auf die Sprache für den eigenen Keygen anpassen.
2. Die beiden Werte werden im Klartext verglichen, d.h es ist keine Kryptoanalyse oder ein Umkehren des Algos notwendig.
3. Da ist ein Schreibfehler im Namen der wichtigen Routine. ;)
4. Beispiel: Lesco//Ctt9P

Meinen Keygen kann ich später noch posten wenn Interesse besteht.
 
Hi,

Eigentlich hab ich gehofft, das ihr ASM Freaks eine weile mit "debuggen" beschäftigt seid :D

Wo ist denn da ein Fehler?

Edit: Respekt, du hast es geschafft! Naja wie gesagt, es ist leicht 8)

Gruß Chris
 
Hi,

Das mit den falschen Sting ist bei der Version die Lesco hat bereits korrigiert 8)

Aber das mit ClacPassword richtig, nacher werd ich das auch mal fixen.

Naja das ist halt das wenn man eine Crackme in 20 Minuten schreibt

Edit:
@Grafix du musst noch dein Passwort posten
@Lesco: Warte mit dem Keygen bitte bis die ersten 3 das Crackme gelöst haben...

Edit2: neue Version hochgeladen...

Gruß Chris
 
Hallo,

dann werd ich meins auch mal posten:
cagiv / 9kxAA

.net ist noch Neuland für unsereins ,
'nen Selfkeygen hätt ich aber erstmal ;)
 
Eigentlich hab ich gehofft, das ihr ASM Freaks eine weile mit "debuggen" beschäftigt seid

Wo ist denn da ein Fehler?

Edit: Respekt, du hast es geschafft! Naja wie gesagt, es ist leicht

Naja, wenn man was in der .net Umgebung coded, dann kann man mit dem Reflector sich den den Source ansehen(und für das Keygen paste & copy), wer da Olly nimmt und den pseudo Assembler-Code zu debuggen versucht, ist selbst schuld. ;)

Ich hab auch mal ein Crackme(welches in der .net2 Umgebung gecoded war) gepostet, da ich den Reflector noch nicht kannte. Wurde mir dann schnell klar, dass es vergebene Mühe ist in dieser Umgebung ein Crackme zu machen... :-/

mfg
IsNull
 
hab kein 2.0'er .Net Framework installiert - kanns daher nicht ausprobieren...
stimmt user [[DaeF]] mit pass IQa7R136 ???
mein Keygen (den ich nicht testen kann) hat 17 Zeilen in .Net 1.1
braucht ihn jemand!? (den source)

lg, daef
 
Original von IsNull
Eigentlich hab ich gehofft, das ihr ASM Freaks eine weile mit "debuggen" beschäftigt seid

Wo ist denn da ein Fehler?

Edit: Respekt, du hast es geschafft! Naja wie gesagt, es ist leicht
Naja, wenn man was in der .net Umgebung coded, dann kann man mit dem Reflector sich den den Source ansehen(und für das Keygen paste & copy), wer da Olly nimmt und den pseudo Assembler-Code zu debuggen versucht, ist selbst schuld. ;)
IsNull

Genau, das ist ja das einzige hinderniss an dem Crackme :D

cagiv hats richtig...
daef leider nicht...

Gruß Chris
 
Original von daef
hab kein 2.0'er .Net Framework installiert - kanns daher nicht ausprobieren...
stimmt user [[DaeF]] mit pass IQa7R136 ???
Ja, stimmt.

[Off-Topic]
Ich hab vergebens versucht den .NET src in mir verträgliches C++ umzustellen...
Irgendwie habe ich eine tiefe Abneigung gegen .NET.
[/Off-Topic]


Edit:
Original von BlackSun1102
daef leider nicht...
Bei mir wirds als Richtig angezeigt.
Und die Wahrscheinlichkeit, dass ein falsches Kopieren ein falsches Ergebnis hervorruft, ist wesentlich höher als die Wahrscheinlichkeit, dass es ein postives Ergebnis bringt.
 
Hier der Alogo "Source" aus Reflector zusammenkopiert:
Code:
Shared Sub New()
      LogonAlgorithm.SBox = New Byte() { 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122 }
      LogonAlgorithm.Key = 170
End Sub



Friend Shared Function CalcPassword(ByVal Username As String, ByVal Rounds As Integer) As String
      Dim buffer1 As Byte() = Encoding.ASCII.GetBytes(Username)
      Dim num1 As Integer = 1
      Do While (num1 <= Rounds)
            Dim num2 As Byte = CByte(((LogonAlgorithm.Key + 7) Xor (num1 + 23)))
            Dim num3 As Integer = 0
            Do While (num3 <= (buffer1.Length - 1))
                  Dim num4 As Byte = CByte(((num3 + 7) Xor (num2 + 23)))
                  buffer1(num3) = CByte((buffer1(num3) Xor num4))
                  If (num3 <> 0) Then
                        buffer1(num3) = CByte((buffer1(num3) Xor buffer1((num3 - 1))))
                  Else
                        buffer1(num3) = CByte((buffer1(num3) And buffer1((buffer1.Length - 1))))
                  End If
                  buffer1(num3) = LogonAlgorithm.SBox((buffer1(num3) Mod 62))
                  num3 += 1
            Loop
            num1 += 1
      Loop
      Return Encoding.ASCII.GetString(buffer1)
End Function

Ein Keygen kann ich momentan nicht liefern, da ich meine VB 2005 Express -Edition nicht mehr zum laufen kriege. ;(


mfg
IsNull
 
Hi,

Das du den Sorce in VB.Net kopiert hast, ist ja fast eine Beleidigung :D

Den Orginal-Source habe ich berreits veröffentlicht... ist etwas übersichtlicher wenn man gescheite Variablennamen hat.

Gruß Chris
 
Zurück
Oben