1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Finya Login

Dieses Thema im Forum "Support & Discussion" wurde erstellt von hantoren, 19. August 2017.

  1. hantoren

    hantoren Member

    Registriert seit:
    3. Juli 2017
    Beiträge:
    39
    Zustimmungen:
    6
    Punkte für Erfolge:
    8
    Geschlecht:
    männlich
    Hey,
    ich will mich auf Finya.de einloggen, ich finde den Post nicht, wo er das Passwort sendet

    Kann irgendjemand mal drübergucken?
    User:codebotonly
    pass:fürCodebot
    Bei Erfolg sollte dort stehen:
    Sie müssen Ihre Registrierung noch aktivieren.
     
  2. CptVince

    CptVince New Member

    Registriert seit:
    1. Juli 2017
    Beiträge:
    19
    Zustimmungen:
    12
    Punkte für Erfolge:
    3
    Im Request wird folgendes als body geschickt:
    Code (Text):

    aab=44af5ccf115e28e5f7d8e5c0f3596bfc2fa79a6a2ab392745f6a81e14afe9c27&aaa=b34f06cd2e64ba8deb4981110c4969e6565e39abe1e2c8cc8b586e01303c50d7&aba=codebotonly&abb=0
     
    Und wenn man sich die JS-Datei https://www.finya.de/js/finya_core-new.js?v=16092202 ansieht wird dort in Zeile 44 der eigentliche Request zusammengebaut
    Code (Text):

    $.post($thisForm.attr('action'), {
        'aab': $.sha256hmac($thisForm_pw.data('ch'), $.sha256($thisForm_pw.val())),
        'aaa': $.sha256hmac($thisForm_pw.data('ch2'), $.sha256($thisForm_username.val())),
        'aba': $thisForm_username.val(),
        'abb': $thisForm_stayon,
        }, function(data){
         
            if (data.err == undefined) {
                fail('other');
            }
            else if (data.err != '0') {
                fail(data.err + (data.fwd_url != undefined ? '&ru=' + data.fwd_url : ''));
            }
            else {
                if (data.fwd_url != '') {
                    location.href = data.fwd_url;
                } else {
                    location.reload();
                }
            }
             
            if (data.nc != undefined) {
                $('form.login').find('input[type=password]').data('ch', data.nc);
            }
    }, 'json');
     
    $.sha256hmac kommt aus dem jQuery Plugin https://github.com/alexweber/jquery.sha256 und wird auch von der Seite zur Verfuegung gestellt https://www.finya.de/js/lib/jquery.sha256.min.js (fuer jQuery 2.1.3)
     
    Zuletzt bearbeitet: 19. August 2017
    krusty, source++ und 3HMonkey gefällt das.
  3. hantoren

    hantoren Member

    Registriert seit:
    3. Juli 2017
    Beiträge:
    39
    Zustimmungen:
    6
    Punkte für Erfolge:
    8
    Geschlecht:
    männlich
    Also muss ich jetzt nur diese JS funktion in Python oder Autoit finden, den Usernamen und das Passwort damit verschlüsseln und in den Post einbinden?
    Verschlüsselt er mit einem Passwort oder ist HMAC irgendeine spezielle Hash Form?
     
  4. CptVince

    CptVince New Member

    Registriert seit:
    1. Juli 2017
    Beiträge:
    19
    Zustimmungen:
    12
    Punkte für Erfolge:
    3
    Also von dem Script kann man noch sehen das die Daten ausgelesen werden.
    Code (Javascript):

    $thisForm = $(this);
    $thisForm_username = $thisForm.find('input[type=text]');
    $thisForm_pw = $thisForm.find('input[type=password]');
    $thisForm_stayon = $thisForm.find('input[name=stayon]:checked').length > 0 ? 1 : 0;
    $thisForm_submit = $thisForm.find('input[type=submit]');
     
    Also brauchen wir die Daten fuer die Uebermittlung
    1. username = "codebotonly"
    2. password = "fürCodebot"
    3. stayon (remember me setting) default ist false

    Der Submit wird als POST mit JSON-Daten abgesendet.
    Code (Javascript):

    {
        'aab': $.sha256hmac($thisForm_pw.data('ch'), $.sha256($thisForm_pw.val())),
        'aaa': $.sha256hmac($thisForm_pw.data('ch2'), $.sha256($thisForm_username.val())),
        'aba': $thisForm_username.val(),
        'abb': $thisForm_stayon,
    }
     
    Davon haben wir bereits
    $thisForm_pw.val() = "fürCodebot"
    $thisForm_username.val() = "codebotonly"
    $thisForm_stayon = false (wenn wir den default nehmen)

    Die jQuery Funktion $.data ist hier beschrieben https://api.jquery.com/jquery.data/ was bedeutet, dass hier ein Data-Attribut mit 'data-ch' bzw. 'data-ch2' angegeben ist.

    HTML:

    <input type="password" maxlength="20" tabindex="2" data-ch="cG4Xex5KUP8hmg3SXIZ9Gv26G6SDJFvP1TP9zLXnMSl3ekWFyQfHwcHCqNr32KTU" data-ch2="347fb128f25f0f9b4f5da33481811041efcf0441" placeholder="Kennwort" autocomplete="off">
     
    Wir entnehmen
    Code (Text):

    data-ch=b"cG4Xex5KUP8hmg3SXIZ9Gv26G6SDJFvP1TP9zLXnMSl3ekWFyQfHwcHCqNr32KTU"
    data-ch2="347fb128f25f0f9b4f5da33481811041efcf0441"
     
    Die beiden Keys haben sich immer geaendert irgendwie muss man die rausfinden -> von der Seite holen.
    Damit haben wir alle Daten um den POST abzusenden.

    Vorher schicke ich einen Test los und schneide den Request mit Fiddler mit:
    Code (Text):

    POST https://www.finya.de/Index/trylogin/?ru=L015RmlueWE= HTTP/1.1
    Host: www.finya.de
    Connection: keep-alive
    Content-Length: 159
    Pragma: no-cache
    Cache-Control: no-cache
    Accept: application/json, text/javascript, */*; q=0.01
    Origin: https://www.finya.de
    X-Requested-With: XMLHttpRequest
    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.101 Safari/537.36
    Content-Type: application/x-www-form-urlencoded; charset=UTF-8
    DNT: 1
    Referer: https://www.finya.de/?v=login&msg=fail_data&ru=L015RmlueWE=
    Accept-Encoding: gzip, deflate, br
    Accept-Language: en-US,en;q=0.8
    Cookie: _fds=...; fy_lc=de_DE

    aab=55ff8850a0cb6413923d03ad8c3c60bb58da0f913dfb8fc4d8c3fbd5c3a30189&aaa=db627e56db24f788e6644fbc0b53e4c5d06a85c6ca6c64065bc628a249262605&aba=codebotonly&abb=0
     
    Da das Password so nicht eins zu eins in die Hash-Funktion gegeben wird, suchen wir noch die Funktion dafuer.
    Code (Javascript):

    // char size to 8 bit = ASCII
    var chrsz = 8;
    // ...
    var str2binb = function(str) {
        var bin = Array();
        var mask = (1 << chrsz) - 1; // 0xFF
        for(var i = 0; i < str.length * chrsz; i += chrsz){
            bin[i>>5] |= (str.charCodeAt(i / chrsz) & mask) << (24 - i%32);
        }
        return bin;
    };
     
    NOTE:
    Ich habe es irgendwie nicht hinbekommen ich nehme erstmal "furCodebot" als password ...
    Vielleicht hat hier jemand noch eine Idee.

    Daraus bekommen wir folgendes Password fuer "furCodebot"
    Code (Text):

    > console.log(JSON.stringify(str2binb("fürCodebot")));
    [1718972995,1868850530,1869873152]
     
    Ich habe jetzt mal als Beispiel die Python commands rausgesucht (bin hier geuebter als in Autoit).

    Soweit ich das jetzt fuer Python verstanden habe koennte das so aussehen:
    Code (Python):

    >>> username = b"codebotonly"
    >>> password = b"furCodebot"
    >>> stayon = False
    >>> ch = b"cG4Xex5KUP8hmg3SXIZ9Gv26G6SDJFvP1TP9zLXnMSl3ekWFyQfHwcHCqNr32KTU"
    >>> ch2 = b"347fb128f25f0f9b4f5da33481811041efcf0441"
    >>> import hashlib, binascii
    >>>
    >>> # Wir beginnen mit dem Password als Beispiel
    >>> #  $.sha256($thisForm_pw.val())
    >>> sha_pw = hashlib.sha256(password)
    >>> sha_pw.hexdigest() # test ausgabe (gegenpruefen mit https://emn178.github.io/online-tools/sha256.html)
    '239735e7a96d6d7afab8fd7ba5564694fef089adc73e5709c75c66a5c4cea8ad'
    >>>
    >>> # $.sha256hmac($thisForm_pw.data('ch'), $.sha256($thisForm_pw.val()))
    >>> hmac.new(ch, bytes(sha_pw.hexdigest(), "ascii"), hashlib.sha256).hexdigest()
    '55ff8850a0cb6413923d03ad8c3c60bb58da0f913dfb8fc4d8c3fbd5c3a30189'
    >>>
    >>> # Tada wir haben den ersten Wert aab: 55ff8850a0cb6413923d03ad8c3c60bb58da0f913dfb8fc4d8c3fbd5c3a30189 gefunden
     
    Das gleiche wiederholen wir fuer den Benutzernamen und dann koennen wir das JSON-Objekt von oben zusammenbauen und an die Seite POSTen oder anders Simulieren.

    Sources:
    Lib/hmac.py
    SHA256 online hash function

    Hoffentlich ist das ganze jetzt klarer geworden. Bin aber selbst kein Experte auf dem Gebiet.

    Gruss
    Vince
     
  5. SilverHazard

    SilverHazard Moderator Mitarbeiter Moderator

    Registriert seit:
    2. Juli 2017
    Beiträge:
    68
    Zustimmungen:
    51
    Punkte für Erfolge:
    18
    Geschlecht:
    männlich
    Wo wird denn str2binb verwendet?
    Für mich sieht es danach aus, dass das Passwort direkt in sha256 geht:
    Code (Javascript):
    $.sha256($thisForm_pw.val())
    Ich habe mir aber zugegeben auch den Rest der Webseite noch nicht angeschaut.

    MfG,
    SilverHazard
     
  6. CptVince

    CptVince New Member

    Registriert seit:
    1. Juli 2017
    Beiträge:
    19
    Zustimmungen:
    12
    Punkte für Erfolge:
    3
    Ja $.sha256 kommt aus dem Plugin https://github.com/alexweber/jquery.sha256 und enthaelt die Definition von str2binb.

    Die Funktion dafuer liegt hier https://github.com/alexweber/jquery.sha256/blob/master/jquery.sha256.js#L93 und wenn $.sha256 aufgerufen wird https://github.com/alexweber/jquery.sha256/blob/master/jquery.sha256.js#L160.

    Code (Javascript):

    sha256 : function(string){
        string = prep(string);
        return binb2hex(core_sha256(str2binb(string),string.length * chrsz));
    }
     
    str2binb kommt aus dem Projekt http://anmar.eu.org/projects/jssha2/ sowie ein paar der anderen Funktionen aus dem Script.

    Und es kommt wirklich ein anderer Hash als Ergebnis zurueck:

    Online SHA256 Hash Funktion
    Code (Text):

    >>> SHA256("fürCodebot")
    '76a7a8da8057d8af8abaa406cdebee1e9d8426acc5c93e7dddb18ed775191b43'
     
    Und im JavaScript auf der Seite:
    Code (Javascript):

    console.log($.sha256("fürCodebot"));
    // -> "710f6e472c89c73c38814214b53b871dfc602c777de3c27311ac59dee76cd2e3"
     
     
    SilverHazard gefällt das.

Diese Seite empfehlen

Die Seite wird geladen...