1. #1

    Registriert seit
    06.11.2011
    Beiträge
    418
    Thanked 686 Times in 246 Posts

    Standard [v9.0acb] Passwort-Kodierung

    Die Methoden zur Passwort-Kodierung in v9.0acb habe ich dem Client damals entnommen ("reversed"). Ich denke, dass da vielleicht noch jemand was mit anfangen könnte. Vielleicht interessiert sich jemand dafür und möchte sich damit weiterhin beschäftigen um eine aktuellere Passwort-Kodierung zu reversen. Solange ihr nicht das Ziel verfolgt Passwörter zu knacken ist es euch überlassen was ihr damit anstellt.

    Code:
    private static String encrypt1(String str, String key) {
        int strLength = str.length();
        int keyLength = key.length();
        int k = keyLength ^ strLength << 3;
        int bufferLength = keyLength > strLength ? keyLength : strLength;
        StringBuilder buffer = new StringBuilder(bufferLength);
        int strChar = str.charAt(0);
        int keyChar = key.charAt(0);
    
        for (int i = 0; i < bufferLength; i++) {
            if (strChar >= keyLength) {
                strChar = 0;
            }
    
            if (keyChar >= strLength) {
                keyChar = 0;
            }
    
            buffer.append((char) (str.charAt(keyChar) ^ key.charAt(strChar) ^ k));
            strChar++;
            keyChar++;
        }
    
        return buffer.toString();
    }
    
    private static String encrypt2(String str, String key) {
        int strLength = str.length();
        int keyLength = key.length();
        int k = strLength ^ keyLength << 4;
        int bufferLength = keyLength > strLength ? keyLength : strLength;
        StringBuilder buffer = new StringBuilder(bufferLength);
    
        for (int i = 0; i < bufferLength; i++) {
            buffer.append((char) (str.charAt(i % strLength) ^ key.charAt(i % keyLength) ^ k));
        }
    
        return buffer.toString();
    }
    
    private static int hash(String str) {
        int i = 0;
        int j = 0;
        int strLength = str.length();
    
        if (strLength < 19) {
            for (int n = strLength - 1; n >= 0; n--) {
                i = i * 3 + str.charAt(n);
                j = j * 5 + str.charAt(strLength - n - 1);
            }
        } else {
            int m = strLength / 19;
            int n = strLength - 1;
    
            while (n >= 0) {
                i = i * 5 + str.charAt(n);
                j = j * 3 + str.charAt(strLength - n - 1);
                n -= m;
            }
        }
    
        int k = i ^ j;
        return k & 0xFFFFFF ^ k >> 24;
    }
    
    private static int hashPassword(String password, String key) {
        key = encrypt1(key, "FnYDHdWwhBt");
        int i = key.length() / 2;
        i = (i * i + i + 16) % key.length();
    
        if (i == 0) {
            i = key.length() / 2;
        }
    
        key = encrypt1(key.substring(i), "HU") + key.substring(0, i);
        i = key.length() / 3;
    
        if (i == 0) {
            i = key.length() / 2;
        }
    
        key = encrypt1(key.substring(i), "ad") + key.substring(0, i);
        i = (key.length() * 3) / 4;
    
        if (i == 0) {
            i = key.length() / 2;
        }
    
        key = encrypt1(key.substring(i), "Hr") + key.substring(0, i);
        return hash(encrypt2(password, key));
    }

  2. #2

    Registriert seit
    17.12.2011
    Beiträge
    151
    Thanked 24 Times in 23 Posts

    Standard [v9.0acb] Passwort-Kodierung

    @Bekackter Kloschüsselrand

    Eine Angabe vom Autor wäre vielleicht nicht schlecht

    denn du hast es eins zu eins Kopiert von Flav
    Der in Übrigen der Autor Und Verfasser ist.
    Geändert von Darkfield (10.03.2014 um 15:15 Uhr)

  3. #3

    Registriert seit
    22.05.2012
    Beiträge
    203
    Thanked 21 Times in 9 Posts

    Standard [v9.0acb] Passwort-Kodierung

    @getsha

    Das ist Flav.
    Geändert von Darkfield (10.03.2014 um 15:15 Uhr)

  4. #4

    Registriert seit
    13.02.2011
    Beiträge
    54
    Thanked 79 Times in 49 Posts

    Standard [v9.0acb] Passwort-Kodierung

    Danke, werde ich morgen mal schauen, ob der mit dem iPhone kompatibel ist... Großes Danke!



    Hier für C#!
    Code:
    private static String encrypt2(String str, String key)
            {
                int strLength = str.Length;
                int keyLength = key.Length;
                int k = strLength ^ keyLength << 4;
                int bufferLength = keyLength > strLength ? keyLength : strLength;
                StringBuilder buffer = new StringBuilder(bufferLength);
    
                for (int i = 0; i < bufferLength; i++)
                {
                    buffer.Append((char)(str[(i % strLength)] ^ key[(i % keyLength)] ^ k));
                }
    
                return buffer.ToString();
            }
    
            private static int hash(String str)
            {
                int i = 0;
                int j = 0;
                int strLength = str.Length;
    
                if (strLength < 19)
                {
                    for (int n = strLength - 1; n >= 0; n--)
                    {
                        i = i * 3 + str[n];
                        j = j * 5 + str[(strLength - n - 1)];
                    }
                }
                else
                {
                    int m = strLength / 19;
                    int n = strLength - 1;
    
                    while (n >= 0)
                    {
                        i = i * 5 + str[n];
                        j = j * 3 + str[(strLength - n - 1)];
                        n -= m;
                    }
                }
    
                int k = i ^ j;
                return k & 0xFFFFFF ^ k >> 24;
            }
    
            private static int hashPassword(String password, String key)
            {
                key = encrypt1(key, "FnYDHdWwhBt");
                int i = key.Length / 2;
                i = (i * i + i + 16) % key.Length;
    
                if (i == 0)
                {
                    i = key.Length / 2;
                }
    
                key = encrypt1(key.Substring(i), "HU") + key.Substring(0, i);
                i = key.Length / 3;
    
                if (i == 0)
                {
                    i = key.Length / 2;
                }
    
                key = encrypt1(key.Substring(i), "ad") + key.Substring(0, i);
                i = (key.Length * 3) / 4;
    
                if (i == 0)
                {
                    i = key.Length / 2;
                }
    
                key = encrypt1(key.Substring(i), "Hr") + key.Substring(0, i);
                return hash(encrypt2(password, key));
            }
    
            private static String encrypt1(String str, String key)
            {
                int strLength = str.Length;
                int keyLength = key.Length;
                int k = keyLength ^ strLength << 3;
                int bufferLength = keyLength > strLength ? keyLength : strLength;
                StringBuilder buffer = new StringBuilder(bufferLength);
                int strChar = str[0];
                int keyChar = key[0];
    
                for (int i = 0; i < bufferLength; i++)
                {
                    if (strChar >= keyLength)
                    {
                        strChar = 0;
                    }
    
                    if (keyChar >= strLength)
                    {
                        keyChar = 0;
                    }
    
                    buffer.Append((char)(str[keyChar] ^ key[strChar] ^ k));
                    strChar++;
                    keyChar++;
                }
    
                return buffer.ToString();
            }

  5. #5

    Registriert seit
    06.11.2011
    Beiträge
    418
    Thanked 686 Times in 246 Posts

    Standard [v9.0acb] Passwort-Kodierung

    Das mag ich bezweifeln, da diese nur für v9.0acb ist. Für die iPhone App gibt es wahrscheinlich eine eigene Kodierung, die sich nicht ständig ändert.

  6. #6

    Registriert seit
    13.02.2011
    Beiträge
    54
    Thanked 79 Times in 49 Posts

    Standard [v9.0acb] Passwort-Kodierung

    ALso ändern tut Sie sich schonmal nicht. Habe ja den ASM Code bereits... Habe aber erfahren, dass die iPhone APP wohl eine verschlüsselung einer älteren Javaapps nutzt.....

    Muss schauen ob ich den ASM Code vernünftig in C umschreiben kann... Gäbe zwar ein guten Decompiler von Hex-Rays, kostet aber auch 3000. (ida pro 6.1)

  7. #7

    Registriert seit
    06.11.2011
    Beiträge
    418
    Thanked 686 Times in 246 Posts

    Standard [v9.0acb] Passwort-Kodierung

    Wenn du herausfinden kannst von welcher Version reverse ich dir die Passwort-Kodierung nochmal wenn ich die Zeit dazu finde. Ansonsten kann ich mich auch nochmal mit den ASM Code beschäftigen, hab da aber nur grundlegende Kentnisse.

  8. #8

    Registriert seit
    13.02.2011
    Beiträge
    54
    Thanked 79 Times in 49 Posts

    Standard [v9.0acb] Passwort-Kodierung

    Ich bin in ASM leider auch noch nicht so weit. Habe aber im Thread die InstructionList dazu gelegt.
    Theoeretisch reicht es, wenn der ASM Code in lauffähigen ASM COde für Intel oder AMD Chipsatz gebracht wird, dann kann man per C#/C++ Compiler ne lauffähige Bibliothek rausbasteln.

  9. #9

    Registriert seit
    17.12.2011
    Beiträge
    151
    Thanked 24 Times in 23 Posts

    Standard [v9.0acb] Passwort-Kodierung

    @The Don of NYC

    Entschuldigung :-( Wusste ich nicht (: *PEINLICH*
    Geändert von Darkfield (10.03.2014 um 15:15 Uhr)

Ähnliche Themen

  1. Knuddels Passwort kodierung
    Von MiBo im Forum Knuddels Programmierung
    Antworten: 0
    Letzter Beitrag: 05.02.2013, 15:47
  2. Huffmann Kodierung / Komprimierung
    Von Snees im Forum Java
    Antworten: 2
    Letzter Beitrag: 25.01.2013, 17:56
  3. [Java] Passwort-Kodierung v9.0alq
    Von Flav im Forum Sourcecode
    Antworten: 0
    Letzter Beitrag: 09.04.2012, 00:57
  4. Passwort von Karibikinsel
    Von Rabbit im Forum Fragen & Probleme
    Antworten: 13
    Letzter Beitrag: 20.02.2011, 01:44
Diese Seite nutzt Cookies, um das Nutzererlebnis zu verbessern. Klicken Sie hier, um das Cookie-Tracking zu deaktivieren.