Problem mit RC4 verschlüsselung

  • Naja soweit ich bei mir getestet habe gab diese AutoIt Funktion egal bei welchen Zeitzonen Einstellungen immer den normal unix timestamp zurück der identisch mit der PHP time Funktion war

  • Ok ich hab das Problem gefunden, und zwar benutze ich die ersten 8 Stellen des Unix Timestamps für die Verschlüsselung, extra nur die ersten 8 Stellen um irgendwelche lags möglichst zu umgehen, wenn nun das Autoit Skript einen anderen Timestamp angibt wie der Server gibt es eine out of sync Rückmeldung und das Skript probiert es nochmal.


    Auf jeden Fall ist es nun bei manchen Usern so, dass sie eine ganz andere Zeit als mein Server bekommen.

    Du möchtest vermutlich einen Timestamp verwenden, damit sich der Key in regelmäßigen Abständen ändert, korrekt ?

    1.

    Eine Möglichkeit wäre es, einen 'echten' Zeitserver zu nutzen (Stichwort : NTP Server).

    Hier muss meines Wissens aber ein spezielles Protokoll beachtet werden.

    (Beispiele liefert Dir die Suchmaschine Deines Vertrauens :P)

    2.

    Es gibt Websites, die Dir direkt die UTC (Weltzeit) zurückliefern. Ein Beispiel, welches Du bei einer Recherche häufiger finden wirst ist : http://www.timeapi.org/utc/now

    Hier würde folgender Code bereits ausreichen :

    $sUTCNow = BinaryToString(InetRead("http://www.timeapi.org/utc/now"))

    ConsoleWrite("! UTC = " & $sUTCNow & @CRLF)

    Leider ist http://www.timeapi.org/utc/now seit geraumer Zeit (2017 ?) down.

    Auch hierfür gibt es Alternativen, allerdings habe ich da keinen Favoriten.

    3.

    (ggf. der einfachste Weg)

    Viele 'normale' Websites haben bereits einen UTC-Datumsheader in ihren Responses - z.B. Google.

    Hier ein Skript von UEZ :

    Die Rückgabe von Google sieht wie folgt aus : Thu, 28 Mar 2019 17:37:41 GMT

    Das Skript von UEZ generiert daraus das Array :

    [0] 2019 (Jahr)

    [1] 03 (Monat)

    [2] 28 (Tag)

    Dies könntest Du auch in PHP so machen.

    Idee (ungetestet) :

    Um Dir die ganze Umformerei zu sparen, könntest Du den Teilstring Thu, 28 Mar 2019 nehmen, und den MD5-Hash bilden (dieser hat immer die Länge 32, wäre als Key also gut geeignet) .

    EDIT : Alternativ kannst Du auch nur die ersten 8 Stellen des Hashes nehmen, so wie jetzt.

    Es geht Dir ja nicht um das Datum an sich, sondern um einen wechselnden Key.

    Gruß Musashi

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

    Einmal editiert, zuletzt von Musashi (28. März 2019 um 19:28)

  • Ja korrekt du hast genau verstanden worum es mir geht, ich hab das ein wenig anders gelöst, meine PHP hat nun einfach eine gewisse Toleranz falls der Timestamp nicht synchron ist, in diesem Fall benutzt er dann denn Timestamp des Clients als Key. (der Timestamp ist natürlich nicht das einzige das den Key bildet)

    Ich hatte auch kurz darüber nachgedacht die Zeit aus dem Netz zu holen aber da wäre es ja auch zu Delays gekommen daher war die Toleranz so oder so nötig

    Aufjedenfall ist das ganze jetzt gelöst

    Danke für all deine Hilfe hier du bist wirklich super hilfsbereit :)