Wie kann ich dieses Code auf Arduino portieren?

Gast #6650371
Lesenswert?

Wichtig: als uC möchte ich einen ESP32 verwenden! Kann mir jemand einen 
Tip geben wie ich ein C#-Code in Arduino-ESP32 portieren kann?

Die Cipher habe ich bei DES leider nicht verstanden! Würde die gerne mit 
der CryptoLib verwenden und das Ganze drum herum weglassen.
Angehängte Dateien:
Gast #6650510
Lesenswert?

Die Frage ist eigentlich n icht Arduino spezifisch.

Der Code sieht danach aus, als könne man ihn 1:1 nach C++ übersetzen.

Die Fleißarbeit musst du aber schon selbst machen. Also erstmal die 
Grundlagen beider Sprachen lernen, dann siehst du schon von selbst, was 
zu tun ist.
Beitrag #6650665 wurde von einem Moderator gelöscht.
Gast #6650706
Lesenswert?

Nur mal als Hinweis.
Das ist illegaler Code, da dort absichtlich verschlüsselte Daten 
entschlüsselt werden. Ich weiß nicht, was Meteotime dazu sagt, wenn 
dieser hier im Forum veröffentlicht wird.
Gast #6650971
Lesenswert?

Hinweisgeber schrieb:
> Das ist illegaler Code, da dort absichtlich verschlüsselte Daten
> entschlüsselt werden.

Quatsch! Das ist ein DES-Decoder mit einem Schlüssel.

In etwa so wie dein Passwort am PC. Kannst ja auch nicht im Internet 
rumschreien das dein Passwort "hinweigeber0815" illegal ist und nur du 
es nutzen darfst.

Aber zurück zu dem Bibliothek. Find ich interessant dass Arduino so eine 
hat.
Wie müsste man den Chiffer und Key verwenden? DES ist ja standardisiert!
Gast #6650995
Lesenswert?

Mal reingeschaut:

 ArduinoDES/examples/DESexample/DESexample.ino


byte key[] = { 0x3b, 0x38, 0x98, 0x37, 0x15, 0x20, 0xf7, 0x5e };

Da sind 8 Byte also 256Bit. Der Meteotime-Key ist aber 5 Byte:
Key      = 01000000 0x40 00000000 0x00 00001100 0xC0 00100100 0x24 
01001000 0x48

Also 0x40 0x00 0xC0 0x24 0x48

Kann man die restlichen 4 Byte mit 0x00 vorfüllen? Also:
byte key[] = { 0x00 , 0x00 , 0x00 , 0x40 , 0x00 , 0xC0 , 0x24 , 0x48};

Geht das? Oder müsste ich die DES-Routine auf 40Bit reduzieren?
Gast #6650996
Lesenswert?

Ich habe da einiges gefunden, weil ich das auch interessant finde:

https://github.com/tobozo/esp32-dcf77-weatherman

Mit Verweise auf

http://arduino-projects4u.com/home-weather-station/

Mit den Stichworten "arduino meteo data decoder" wirst du einiges 
finden.

Neu für mich war der "HKW581 Meteotime decoder chip"

Eine Suche führt zu
Beitrag "AVR: Wetterinformationen über DCF77"
und
Beitrag "Was ist aus dem Thread der MeteoData geworden?"
und
https://www.hkw-shop.de/Empfangstechnik-AM/Aktivantennen/Aktivantenne-S-DCFn.html

Viel Spaß dabei.
Gast #6651155
Lesenswert?

@irwish:

Ich würde erstmal versuchen, an die Originalquelle
meteocrypt_working.c
heranzukommen. Dann ist die Portierung nämlich
bedeutend leichter, da wir nicht erst C# lernen müssen.

@Martin:
Vorsicht! Der Schlüssel bei DES ist 56 Bit lang, also
7 Byte!!
8 Byte, also 64 bit lang ist der Plaintext-Block, den DES auf einmal 
bearbeitet!

Wenn Du jetzt von den 7 Byte des Schlüssels 2 Byte auf "0" setzt,
hast Du immer noch 7 Byte Schlüssel!
"Ich" als "woman in the middle" habe aber beim Cracken weniger zu tun,
wenn ich weiß, das die letzten beiden Bytes auf "Null" stehen.
ich denk mal Meteotime expandiert seinen Schüssel irgendwie auf 7 bytes,
wenn er wirklich nur nen 5 Byte-Schlüssel nimmt.

Achtung, ich kenn Meteotime nicht!

mfg
Gast #6651176
Lesenswert?

Danke! Ich hab das mit 256 Möglichkeiten verwechselt!

Wie würdest du vorgehen um zu testen ob ich mit 5 Byte bei DES das selbe 
Ergebnis bekomme wie mit vorangestellten 2 Byte a 0x00?

Wenn das gehen würde, müsste man doch einen Key mit 7x 0x00 als Ergebnis 
doch die Eingabe herausbekommen?
Gast #6651226
Lesenswert?

Beim Plaintext,  also dem zu verschlüsseinen Text,
kannst du natürlich auffüllen, das nannt man dann padding.

Beispiel Dein Block
12 21 45 78 35
12 21 45 78 35 00 00 00  Die 3 Letzten Bytes sind aufgefüllt
werden dann nach dem Entschlüsseln wieder
12 21 45 78 35 00 00 00

Die schneidest Du dann ab und Du hast Deinen 5er Block
wieder

12 21 45 78 35

Der Schlüssel muß aber immer 7 Bytes lang sein beim DES,
er muß zufällig sein und von ner Primzahl abstammen.

mfg
Gast #6651313
Lesenswert?

Content B. schrieb:
> Ich habe es mit einem Arduino probiert und es geht nicht.

Wie kann das sein? Du wolltest testen, ob sich beide Varianten gleich 
verhalten. Also sind zwei Ergbnisse möglich:

a) sie veralten sich gleich
b) sie verhalten sich nicht gleich

Beide Ergebnisse wären ein erfolgreicher Test. Es sei denn, du willst, 
dass sich beide gleich verhalten. Das hast du aber so nicht geschrieben. 
Du wolltest wissen, wie man herausfindet, ob sie sich gleich verhalten.
(Firma: Da) #6651463
Lesenswert?

Stefan ⛄ F. schrieb:
> Content B. schrieb:
>> Ich habe es mit einem Arduino probiert und es geht nicht.
>
> Wie kann das sein? Du wolltest testen, ob sich beide Varianten gleich
> verhalten. Also sind zwei Ergbnisse möglich:
>
> a) sie veralten sich gleich
> b) sie verhalten sich nicht gleich
>
> Beide Ergebnisse wären ein erfolgreicher Test. Es sei denn, du willst,
> dass sich beide gleich verhalten. Das hast du aber so nicht geschrieben.
> Du wolltest wissen, wie man herausfindet, ob sie sich gleich verhalten.

Stefan, mal weniger Korinthen scheißen und mehr menschlichkeit zeigen! 
Du weist ganz genau das man den Weg haben will um auf das richtige 
Ergebnis zu kommen. Sonst könnte man auch gleich sagen: ich prüfe ob ich 
mit addition von 1 das Ergebnis bekomme. Oh, geht nicht -> Aufgabe 
gelöst. So ein Blödsinn...
Gast #6651746
Lesenswert?

Was geht denn jetzt nicht?

a) mit 5 Byte bei DES
b) mit vorangestellten 2 Byte a 0x00

Und warum benutzt du dann nicht einfach dei funktionierende Variante?

Worauf ich hinaus will: Du hast dein Problem unzureichend beschrieben. 
Was willst du überhaupt?
(Firma: Da) #6651762
Lesenswert?

Stefan ⛄ F. schrieb:
> Was geht denn jetzt nicht?
>
> a) mit 5 Byte bei DES
> b) mit vorangestellten 2 Byte a 0x00
>
> Und warum benutzt du dann nicht einfach dei funktionierende Variante?
>
> Worauf ich hinaus will: Du hast dein Problem unzureichend beschrieben.
> Was willst du überhaupt?

Nichts verstanden heute? Tag war wohl zu kurz?

Es gibt doch diesen Meteotime-DES-Key, siehst ganz oben. Sowit ok? 
Kannst folgen?
Dann gibt es einmal den verschlüsselten Teil von DCF und einmal den 
entschlüsselten. Auch soweit verstanden?
Und wenn man nun diese Teile mit einer DES-Routine ablaufen lässt, kommt 
entschlüsselt was anderes raus als es sollte. Egal ob 0x00 vorangestellt 
oder füllend dahinter. Kommst mit?
Also was ist daran nicht zu verstehen wenn man den Unterschied für DES 
und MeteoTime-DES verstehen will?

Komm jetzt blos nicht mit der Antwort du wärst kein Kryptoexperte...
Gast #6651772
Lesenswert?

Content B. schrieb:
> Nichts verstanden heute?

Genauf, nix verstanden.

Content B. schrieb:
> Und wenn man nun diese Teile mit einer DES-Routine ablaufen lässt, kommt
> entschlüsselt was anderes raus als es sollte. Egal ob 0x00 vorangestellt
> oder füllend dahinter.

Das passt nicht zu deiner Frage:

Martin schrieb:
> Wie würdest du vorgehen um zu testen ob ich mit 5 Byte bei DES das selbe
> Ergebnis bekomme wie mit vorangestellten 2 Byte a 0x00?

Wenn du beides bereits versucht hast, ist es doch sinnlos, nach der 
Vorgehensweise zu fragen.

Ein Vergleich:

Wie würdest du vorgehen, um herauszufinden ob man eine Bettdecke 
leichter in den Schuhkarton stopfen oder falten kann? Ich weiß schon 
dass beides nicht geht geht, aber beantworte die Frage bitte trotzdem 
ohne ihr auszuweichen und ohne blöde Rückfragen.

So in etwas kommt mir die Sache vor. Ist hier sonst irgendwer, der deine 
Frage beantworten kann? Sieht nicht danach aus.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren