C source code zum DLMS Security (Suite 0) dechiffrieren?

OP #6986878
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.
Angehängte Dateien:
OP #6987765
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.
Gast #6988961
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...
Gast #6989472
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
Gast #6989757
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
Gast #6989775
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?
#7395367
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

Angehängte Dateien:

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