Forum: Mikrocontroller und Digitale Elektronik C source code zum DLMS Security (Suite 0) dechiffrieren?


von Andi B. (andi_b2)


Angehängte Dateien:

Lesenswert?

Kennt jemand C source code zum Entschlüsseln der Daten von unserem 
Stromzähler? Bis jetzt hab ich nur Python scripte gefunden. Ich will die 
Daten aber selbst in C, wenn's sein muß C++, dechiffrieren. Den 
Schlüssel hab ich schon.

Im Bild die Definition des Datenpakets und der Verschlüsselung.

: Verschoben durch Moderator
von Wegstaben V. (wegstabenverbuchsler)


Lesenswert?

Andi B. schrieb:
> Bis jetzt hab ich nur Python scripte gefunden. Ich will die
> Daten aber selbst in C,

es wäre hilfreich, wenn du die gefundenen Python scripte hier 
einstellst. Das sollte wohl möglich sein, daraus C herzuleiten ...

von Andi B. (andi_b2)


Lesenswert?

Dieser Link wird von der EVN als Beispiel angegeben - 
https://github.com/ric-geek/DLMS-APDU-Encrypter-Decrypter

Das könnte ev. auch funktionieren 
-https://github.com/haklein/smarty_dsmr_proxy

Ich hätte gerne von meinem C Programm die regelmäßig ankommenden Daten 
von der seriellen Schnittstelle an eine Funktion übergeben welche mir 
diese dechiffriert. Gleich decodiert in ein struct wäre noch besser. 
Alternativ könnte ich den stream auch einem c Programm über 
Kommandozeile füttern welches mir das Ergebnis ausgibt.

von Otto (Gast)


Lesenswert?

Andi B. schrieb:
> Ich hätte gerne von meinem C Programm die regelmäßig ankommenden Daten
> von der seriellen Schnittstelle an eine Funktion übergeben welche mir
> diese dechiffriert. Gleich decodiert in ein struct wäre noch besser.
> Alternativ könnte ich den stream auch einem c Programm über
> Kommandozeile füttern welches mir das Ergebnis ausgibt.

Gute Idee! Dann mach das doch so...

von Andi B. (andi_b2)


Lesenswert?

Ich habe gehofft, jemand hat das schon gemacht und jemand hier hat einen 
Link dazu. Ich selbst hab mit python zu wenig Erfahrung, als dass ich 
das so auf die Schnelle umbauen könnte.

von Fpgakuechle K. (Gast)


Lesenswert?

Andi B. schrieb:
> Ich selbst hab mit python zu wenig Erfahrung, als dass ich
> das so auf die Schnelle umbauen könnte.

dann machs auf die Langsame Tour:
-algorithmus aus script herauslesen
-Algo in C nachprogrammieren
-beide Implementierung auf gleichen Output bei gleich generierten 
Eingangsdaten überpüfen

von Dieter (Gast)


Lesenswert?

Andi B. schrieb:
> Kennt jemand C source code zum Entschlüsseln der Daten von unserem
> Stromzähler? Bis jetzt hab ich nur Python scripte gefunden.

Wie fast immer hilft eine Suchmaschine weiter:

https://www.weigu.lu/tutorials/sensors2bus/04_encryption/index.html

Abgesehen davon ist AES-GCM jetzt auch wirklich keine große Kunst,
dafür gibt es genügend fertige Libraries.

Zu dem obigen Beispiel aus dem Screenshot, das stammt wohl von hier:

https://www.netz-noe.at/Download-(1)/Smart-Meter/218_9_SmartMeter_Kundenschnittstelle_lektoriert_14.aspx

Da scheint jemand "Decryption" mit "Encryption" verwechselt zu haben,
um das Beispiel nachzuvollziehen muss man die Daten verschlüsseln.

Eine entsprechende Anmerkung gibt es auch hier:

https://github.com/culvermelanie/SmartMeter

von Wolfgang (Gast)


Lesenswert?

Andi B. schrieb:
> Alternativ könnte ich den stream auch einem c Programm über
> Kommandozeile füttern welches mir das Ergebnis ausgibt.

Es ist doch erstmal völlig egal, in welcher Programmiersprache die 
Entschlüsselung passiert und wie Ein- und Ausgabe ablaufen. Entscheidend 
ist doch, dass die Routine für die Entschlüsselung funktioniert. Den 
Rest kann man hinterher dazu bauen bzw. die Routine in die 
Lieblingssprache umsetzen. Am Ende wird sowieso Maschinencode benötigt 
;-)
Was wäre schlimm daran, wenn man erstmal Python verwendet?

von Peter R. (peter_r689)


Angehängte Dateien:

Lesenswert?

Hi Guys,
Die Entschlüsselung nach AES-GCM (DLMS Suite0) ist nicht leicht zu 
verstehen. Aber hier ein Sketch zur Erklärung.
Im Kontext ist nur der Kaifa-Zähler zu entschlüsseln. Man braucht für 
jeden Zähler ein separaten Einstiegsvektor. Aber egal, hier ein 
einfaches Entschlüsselungs-Skript für Arduino.

Gruß Peter

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.