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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.