Forum: Mikrocontroller und Digitale Elektronik Wie kann ich dieses Code auf Arduino portieren?


von Irwish (Gast)


Angehängte Dateien:

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.

von Oliver S. (oliverso)


Lesenswert?

Das nach C++ umzuschreiben sollte doch kein großes Problem sein. Wenn 
doch, dann musst du dir halt eine andere Lösung suchen.

Oliver

von Stefan F. (Gast)


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.
von Hinweisgeber (Gast)


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.

von Franz (Gast)


Lesenswert?

Hinweisgeber schrieb:
> Ich weiß nicht, was Meteotime dazu sagt,

Wahrscheinlich nicht viel, denn Softwaredecoder gibts schon seit Jahren 
im Netz und die Seiten sind bis jetzt auch nicht offline gegangen.

von Experte (Gast)


Lesenswert?

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

Hobby-Jurist?

von Ingo D. (ingo2011)


Lesenswert?

@Hinweisgeber:
So ganz geheim sind diese Infos ja nun auch wieder nicht...


https://gist.github.com/kronoc/c669eb8cceece1ea7f7ce3f964c511ee
created 2 year ago

: Bearbeitet durch User
von Frank (Gast)


Lesenswert?

Hinweisgeber schrieb:
> da dort absichtlich verschlüsselte Daten entschlüsselt werden.

Ah ja. Und normalerweise werden die unabsichtlich entschlüsselt?

von Martin (Gast)


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!

von Martin (Gast)


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?

von Franz (Gast)


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.

von Martin (Gast)


Lesenswert?

Die Verarbeitung der Wetterdaten interessiert mich jetzt nicht, sonder 
nur wie man den Key richtig anwenden muss. Sieht der TO sicherlich 
anders :-)

von Lotta (Gast)


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

von Martin (Gast)


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?

von Lotta (Gast)


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

von Stefan F. (Gast)


Lesenswert?

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?

Ausprobieren

von Content B. (Firma: Da) (contentblocker_da)


Lesenswert?

Stefan ⛄ F. schrieb:
> 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?
>
> Ausprobieren

Ich habe es mit einem Arduino probiert und es geht nicht.
Was ist an der Arduino-DES anders als am Meteotime-DES?

von Stefan F. (Gast)


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.

von Content B. (Firma: Da) (contentblocker_da)


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...

von Stefan F. (Gast)


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?

von Content B. (Firma: Da) (contentblocker_da)


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...

von Stefan F. (Gast)


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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.