Mal eine Frage. Eine Software generiert eine 4 stellige Kombi (nur
Buchstaben, keine Zahlen) und eine zweite Software kann damit einen 8
stelligen Code (auch nur Buchstaben) ausgeben, der wiederum in der
ersten Software gewisse Einstellungen freischaltet.
Wie schwer ist es ungefähr dahinter einen Algorithmus zu finden / die
Antwort-Codes selbst generieren zu können?
Ist es grundsätzlich möglich wenn man einige Codes hat (4 stellige
Anfrage und 8 stellige Antwort dazu) das Muster dahinter rauszufinden?
Ja, ist vermutlich vom Einzelfall abhängig, aber so allgemein?
Die Software selbst zu reverse engineeren kommt in diesem Fall nicht in
Frage.
Danke
Nein, ist nicht möglich. Da kann man ja nur raten, und wenn ein
gefundener Algorithmus bei den "einigen" bekannten passt, muss es bei
den anderen noch lange nicht passen.
Die Software zu analysieren verspricht dagegen schnellen Erfolg. Du
brauchst ja nichtmal den Algorithmus "reverse-engineeren". Es würde
reichen, die Funktion aus der Software in deine zu transplantieren. Wenn
für eine andere Maschine geschrieben, dann halt mit Emulator.
Was spricht denn von deiner Seite dagegen?
> Ist es grundsätzlich möglich wenn man einige Codes hat (4 stellige> Anfrage und 8 stellige Antwort dazu) das Muster dahinter rauszufinden?> Ja, ist vermutlich vom Einzelfall abhängig, aber so allgemein?
Grundsätzlich und allgemein? Nein.
fhbl schrieb:> Ist es grundsätzlich möglich wenn man einige Codes hat (4 stellige> Anfrage und 8 stellige Antwort dazu) das Muster dahinter rauszufinden?> Ja, ist vermutlich vom Einzelfall abhängig, aber so allgemein?
im Allgemeinen hängt es davon ab, wieviel "einige" sind.
Für "einige" im Bereich von 500000 baust du das ganze einfach als
Table-Looup nach, bei "Nicht gefunden" muss man halt einen neuen
Anfrage-Code erzeugen lassen.
One time passwords können per Prinzip nicht entschlüsselt werden. Ein
einziges XOR reicht aus, daß ich dir zu jeder verschlüsselten Nachricht
einen passenden Schlüssel liefern kann, der dir jeden gewünschten
Klartext daraus generiert. Du bist hinterher genau so schlau wie vorher.
Ben B. schrieb:> One time passwords können per Prinzip nicht entschlüsselt werden. Ein> einziges XOR reicht aus, daß ich dir zu jeder verschlüsselten Nachricht> einen passenden Schlüssel liefern kann, der dir jeden gewünschten> Klartext daraus generiert. Du bist hinterher genau so schlau wie vorher.
Du meinst ein One-Time-Pad. Das ist aber nur dann nicht zu entschlüsseln
wenn es max. einmal verwendet wird. Das wird hier nicht der Fall sein.
Trotzdem ist es unwahrscheinlich das Problem zu lösen wenn sich der
Hersteller etwas Mühe gegeben hat. Du kannst ja mal ein simples XOR mit
einem Par von den Codes versuchen. Wenn es das ist bekommst du damit
direkt das Passwort zurück.
Eine Möglichkeit die Methoden auszuprobieren findest du hier:
https://gchq.github.io/CyberChef/
Gerhard schrieb:> Was spricht denn von deiner Seite dagegen?
Ist keine PC Software sondern auf einem Mikrocontroller von Fuji mit
aktivem Lockbit, das ganze übersteigt dann den Aufwand (falls es
überhaupt möglich ist).
Jetzt bin ich trotzdem wieder etwas schlauer :)
4 Ziffern rein heißt prinzipbedingt ja maximal 10000 Möglichkeiten.
Das kann man ausprobieren, bei 1x alle zehn Sekunden kann man das in
knapp 4 Tagen schaffen, Arbeitstage wohlgemerkt.
Das ergibt dann eine feine Tabelle in der man dann einfach nachsehen
kann.
Aber: Mit etwas Intelligenz des Programmierers ist der Code nicht nur
4-stellig sondern bezieht z.B. das Datum oder die Zeit mit ein, und dann
war's das mit der LUT.
Ich kenne aber auch Bedienterminals, bei denen der Code beliebig ist und
z.B. nur die Quersumme identisch sein muss.
So kann der Servicefritze so tun als ob der Code OTP wäre, aber
eigentlich ist es ganz einfach, ähnlich an mancher Maschine "Geben die
das Passwort ein:" und man muss "das Passwort" eingeben: doof und leicht
zu merken, aber Gelegenheitsfummler finden's nicht.
(prx) A. K. schrieb:> Bei den hier aufgeführten 4 Buchstaben sind es ein paar mehr.
Ah sorry, hatte genau falschrum gelesen "nur Zahlen keine Buchstaben",
danke.
Wenns genau andersrum ist, sinds halt ein paar Möglichkeiten mehr.
So 457000 etwa, dauert halt ein wenig länger.
Oder bei Groß/Klein 7,3 Mio.
Und dann hängts ja auch noch davon ab ob sich der Code ändert, nach dem
Motto "abcd? Oh, leider falsch, was passt zu efgh?", dann klappt das
nie.
Sonst könnte man ja einen Hackomaten bauen der die Kombination brutal
forciert ;)
Vielleicht ist es aber auch simpel nur eine Zahl, die z.B. ähnlich
Base64 kodiert wird, d.h. es gibt nicht alle Kombinationen.
Ich habe sowas mal mit mehreren Stufen gemacht, ging um eine Verbindung
zwischen Code-Terminal und eigentlicher Alarmanlage. 32 Bit Startwert
für einen Zufallszahlengenerator, der von der Alarmanlage in kurzen
Zeitabständen vorgegeben wird, eine große Codetabelle, aus welcher der
Terminal-Controller frei wählen kann und zuvor übertragene Daten werden
auch noch mit reingekippt. Alles kräftig durchgerührt, fertig sind ein
paar komplett wechselnde Bytes für einen einzelnen Tastendruck.
Zusätzlich macht der Alarmanlagen-Controller mächtig Radau, wenn er
korrekt kodierte Frames bekommt, diese aber nicht mit dem aktuellen
Startwert entschlüsseln kann. Wer sowas wie Replay-Angriffe probieren
sollte, kriegt was auf die Ohren.
Jens M. schrieb:> Aber: Mit etwas Intelligenz des Programmierers ist der Code nicht nur
...
Schlechte Programmierer entwickeln sowas selber und fallen auf die
Schnauze.
Gute Programmierer verwenden fertige Algorithmen, in diesem Fall wäre
z.B. eine Abwandlung von RFC 4226 (HOTP) denkbar. Mit Berücksichtigung
der Zeit: TOTP.
Echte™ Programmierer schreiben die RFCs.