Lässt sich die Stro...
 
Benachrichtigungen
Alles löschen

Lässt sich die Stromzähler-PIN durch Brute-Force Attacke hacken?

53 Beiträge
16 Benutzer
11 Reactions
5,004 Ansichten
E-t0m
(@e-t0m)
Autarkiekönig
Beigetreten: Vor 2 Jahren
Beiträge: 799
 

Dann steht der individuellen Energiewende nichts mehr im Weg! 😉

klick: meine flexible high-end cheap-tech Nulleinspeisung


   
AntwortZitat
(@alexx)
Autarkiekönig
Beigetreten: Vor 2 Jahren
Beiträge: 660
Themenstarter  

Veröffentlicht von: @darktoon

Mein EMH eHZ Generation I (eHZ-IW8E2A5L0EQ2P) von 2012 sendet ohne PIN allerdings schon alle Daten über die optische Schnittstelle (wie ich jetzt weiß). Deshalb hat die automatische PIN Erkennung da nicht funktioniert.

Das kann durchaus auch noch bei anderen Stromzählertypen so sein. Außer Deinem Fall, dass er so oder so die vollen SML-Daten sendet, kann es auch sein, dass man bei manchen Stromzählern nach Eingabe der richtigen PIN erst noch in irgendeinem Menü die ausführlichere SML-Botschaft einschalten muss, sie also nicht gleich von selbst kommt. Dann funktioniert die Methode auch nicht.

 


   
AntwortZitat
(@alexx)
Autarkiekönig
Beigetreten: Vor 2 Jahren
Beiträge: 660
Themenstarter  

Veröffentlicht von: @optipower

Man kann damit seine PIN stark eingrenzen, ggf. eine Kamera dazu.

Da bringst Du mich jetzt aber auf eine Idee: Kamera. Na klar!
Viele Handys haben eine Zeitraffer-Funktion. Und bei denen, die sie nicht per default haben, kann man Apps wie Time Lapse, Lapse It oder dergleichen installieren. Die kann man so einstellen, dass z.B. alle 10 Sekunden ein Foto aufgenommen wird. Das Handy fügt die Einzelbilder dann zu einem Video-Stream zusammen, in dem man die Geschehnisse der letzten Stunden im Zeitraffer sieht. Das würde hier doch genau passen:
Man macht ein solches Zeitraffer-Video vom Display des Stromzählers. Daran kann man dann ablesen, wo das Display mitteilungsfreudiger wurde (Daten in der 2. Zeile), d.h. die PIN richtig war. Die richtige PIN kann man dann auf zwei Arten weit eingrenzen:

- Auf den letzten Bildern vor der richtigen Eingabe wird man hier und da mal die PIN am Display sehen, die gerade eingegeben wurde. Die richtige muss knapp oberhalb liegen.

- Alternativ kann man auf der Zeitachse interpolieren. Vor allem dann, wenn man den Reinblink-Algorithmus so gestrickt hat, dass die PIN-Eingaben stets in festen Zeitabständen beginnen.

Wenn ein kompletter Scan aller PINs um die 50 Stunden dauert, wird man das Handy allerdings an ein Ladekabel hängen müsse, damit es so lange durchhält.

 


   
Optipower reacted
AntwortZitat
(@darktoon)
Vorsichtiger Stromfühler
Beigetreten: Vor 1 Jahr
Beiträge: 3
 

Also wenn ich das mit Kamera machen wollte, würde ich ein ESP32-CAM verwenden und da einen TTL Scheib-Lesekopf dranklemmen.

Dann müsste das Python Skript nach jeder PIN Eingabe nur ein Bild machen. Das entweder (extern) abspeichern oder gleich eine Zeichenerkennung ausführen (das kann die ESP32-CAM Software ja schon).


   
AntwortZitat
 jay
(@jay)
Heroischer Stromgenerator
Beigetreten: Vor 2 Jahren
Beiträge: 1320
 

jetzt wo es gelöst ist, kommen plötzlich die hundert alternativlösungen 🙂

 


   
AntwortZitat
Carolus
(@carolus)
Famous Member Admin
Beigetreten: Vor 2 Jahren
Beiträge: 6998
 

Veröffentlicht von: @jay

jetzt wo es gelöst ist, kommen plötzlich die hundert alternativlösungen 🙂

 

Das ist der Lauf der Dinge. Wenn einer mal die Kraft hat, etwas auszuprobieren und erfolgreich ist, öffnet sich der Weg wie man es auch, besser, schneller oder anders machen kann.

Umgekehrt gilt das genauso: Wenn einer für ein Problem mal jeden Stein umgedreht hat und damit bewiesen, dass es NICHT geht, ist das zwar im Ergebnis erfolglos, aber unendlich wichtig, weil man sich jede Arbeit damit zukünftig ersparen kann. Diese Betrachtungsweise wird leider gerne übersehen.

 

Ich bin kein Amateur, aber ich lerne trotzdem noch.
Bürokratie schafft man nicht durch neue Regeln oder Gesetze ab.


   
AntwortZitat
 remy
(@remy)
Newbie
Beigetreten: Vor 7 Monaten
Beiträge: 1
 

Ich sitze hier mit einem eBZ DD3 sowie dem Hichi IR WLAN-Modul. Auslesen klappt, aber eben nur eingeschränkt, da ich natürlich keine PIN für den Zähler in einem Einfamilienhaus bekommen habe. Da ich bei den örtlichen Stadtwerken davon ausgehen muss, ebenfalls nach 3 Monaten noch keine PIN erhalten zu haben (geht nur postalisch, "Datenschutz"), schließe ich mich hier mal an.

Leider kann ich nur über das Netzwerk auf den Hichi zugreifen. Mittels Script habe ich es immerhin geschafft, die interne IR-LED zum Blinken zu bringen, aber der Zähler scheint nicht darauf zu reagieren. Ist die LED zu schwach? Mit der iPhone-Taschenlampe ist es schon nicht so einfach, überhaupt zur PIN-Eingabe zu kommen.


   
AntwortZitat
maximilianh
(@maximilianh)
Vorsichtiger Stromfühler
Beigetreten: Vor 1 Jahr
Beiträge: 145
 

Veröffentlicht von: @alexx
Und außerdem ist das Hacken ökologisch viel besser. Man bedenke, wie viel Papier und CO2-Emissionen eingespart werden können, wenn kein Brief verschickt werden muss.

Mein Stromversorger hat mir die PIN per E-Mail geschickt innerhalb 24 Stunden nach der Anfrage. Kein Papier…

 


   
AntwortZitat
(@petrel)
Autarkiekönig
Beigetreten: Vor 1 Jahr
Beiträge: 485
 

Das ist vom vnb abhängig, bei Bayernwer muss man sich nur einloggen und kann dort dann die Pin zum Zähler ablesen.

Bei Netze Bw hatte ich angerufen und die wollten Zählernummer und Marktlokation wissen und haben mir dann die Pin per Post geschickt. Hat glaube ich ca. 1 Woche gedauert 


   
AntwortZitat
E-t0m
(@e-t0m)
Autarkiekönig
Beigetreten: Vor 2 Jahren
Beiträge: 799
 

Veröffentlicht von: @remy

Mit der iPhone-Taschenlampe ist es schon nicht so einfach, überhaupt zur PIN-Eingabe zu kommen.

Benutz doch die App dafür (weiter oben im Thread)

Es hilft den Hintergrund zu verdunkeln bzw. Reflexionen vermindern.

 

klick: meine flexible high-end cheap-tech Nulleinspeisung


   
AntwortZitat
 Desi
(@desi)
Vorsichtiger Stromfühler
Beigetreten: Vor 7 Monaten
Beiträge: 5
 

Hallo zusammen,

ich habe leider auch das Problem das der Netzbetreiber keine PIN hat.

Wenn das IT-System des Netzbetreibers sagt es ist keine "Moderne Messeinrichtung" dann kann man auch keine PIN beantragen. Ende....

 

Der Bauvorschlag mit der weißen LED würde mich brennend interessieren, leider sind alle interessanten Links offline.

Hat noch jemand Infos? Gerne auch per PM.

Danke

 

 

Diese r Beitrag wurde geändert Vor 6 Monaten von Desi

   
AntwortZitat
(@pacmanii)
Newbie
Beigetreten: Vor 6 Monaten
Beiträge: 3
 

 

Hi zusammen,

habe heute meinen Zweirichtungszähler für die PV gesetzt bekommen. Den alten "normalen" Zähler hatte ich schon per Lesekopf ausgewertet, das wollte ich beim neuen auch tun, allerdings war dieser leider noch mit einer Pin gesichert, die der Monteuer nicht wusste. Ich habe daraufhin bei meinem Netzbetreiber (Pfalzwerke) angerufen und wurde von der Dame mit einem Lachen begrüßt: wenn der Zähler gerade erst getauscht wurde, soll ich doch bitte in ca. 12 Wochen nochmal anrufen. Gerade mit den Zweirichtungszählern seien sie massiv in Rückstand und bis dieser im System erfasst ist dauert es eben noch. 🤮 

Also hab ich mal ChatGPT gefragt, ob sie mir einen Arduino Sketch für einen ESP8266 schreiben könnte. Einen BruteForce Algorithmus für Stromzähler PINs war ihr aber zu heiß und sie hat ermahnend abgelehnt. Einen Sketch mit dem man eine 4-stellige Zahl mittels LED am GPIO morsen kann fand sie jedoch nicht bedenklich 🤣 

Nach einer längeren Unterhaltung und Spezifikation meiner Anforderungen kam das heraus:

// Smartmeter PIN Brute-Force
// written 99% by ChatGPT ;)
int ledPin = D2;  // Verwendet Pin D2 des D1 Mini
int blinkDuration = 200;   // Dauer des Blinkens für eine Ziffer (in Millisekunden)
int blinkPauseDuration = 200;  // Dauer der Pause zwischen den Blinkimpulsen für eine Ziffer (in Millisekunden)
int digitSpaceBetweenDuration = 3000;  // Pause zwischen den Ziffern (in Millisekunden)
int wordSpaceDuration = 500;  // Pause nach der gesamten 4-stelligen Zahl (in Millisekunden)

void setup() {
  pinMode(ledPin, OUTPUT);

  // Durchprobiere alle Zahlen von 0001 bis 9998
  //for (int i = 1; i <= 9998; i++) {
  for (int i = 9998; i >= 1; i--) {
    // Kurz 2x Blinken vor jeder Zahl um den Pin-Eingabemodus zu starten ()
    blink();
    blink();

    // 4-stellige Zahl morsen
    morseDigit((i / 1000) % 10);  // Tausenderstelle
    morseDigit((i / 100) % 10);   // Hunderterstelle
    morseDigit((i / 10) % 10);    // Zehnerstelle
    morseDigit(i % 10);           // Einerstelle

    // Pause nach jeder Zahl
    delay(wordSpaceDuration);
  }
}

void loop() {
  // Die loop Funktion ist leer, da der Code im setup einmalig ausgeführt wird,
  // und wir keine kontinuierliche Wiederholung benötigen.
}

void blink() {
  digitalWrite(ledPin, HIGH);
  delay(blinkDuration);
  digitalWrite(ledPin, LOW);
  delay(blinkPauseDuration);
}

void morseDigit(int digit) {
  for (int i = 0; i < digit; i++) {
    // Blinkimpulse für die Ziffer
    blink();
  }

  // Pause zwischen den Ziffern
  delay(digitSpaceBetweenDuration);
}

Funktioniert bei meinem Zähler (Modell: Apator Picus) bislang einwandfrei, bei anderen Modellen muss der Code (insbesondere das Timing) höchstwahrscheinlich etwas angepasst werden. Das soll nur als Basis dienen...

Zum Aufbau: die LED und den 220 Ohm Vorwiderstand hab ich aus dem Arduino Baukasten meines Sohnes entwendet. Wie man eine LED an einen Arduino anschließt ist im Netz eigentlich genügend erklärt, aber das Foto sollte schon reichen.

Ergänzung: die PIN weiß man nach erfolgter Freischaltung natürlich nicht, außer man stellt eine Kamera auf und sichtet hinterher die Aufzeichnung.

Diese r Beitrag wurde geändert Vor 6 Monaten 3 mal von PacmanII

   
AntwortZitat
 Desi
(@desi)
Vorsichtiger Stromfühler
Beigetreten: Vor 7 Monaten
Beiträge: 5
 

@pacmanii 

Guten Abend,

anbei ein paar Infos, die ich in der Woche gesammelt habe, vielleicht hilft es ja dem nächsten.

 

Ich hatte vorher einen ISKRA MT175, den kann man gut über eine LED freischalten. Pin war oberhalb 5000. Eine PIN vom Messbetreiber war nicht zu bekommen.

Sobald die richtige Pin eingegeben wird ist der Zähler freigeschaltet und im Display erscheint eine zweite Zeile mit dem aktuellen Verbrauch.

Die Datensatzmenge hat sich an der optischen Schnittstelle dadurch nicht geändert. Dort gab er den aktuellen verbrauch aus (Einspeisung mit einem minus Vorzeichen) den Zählerstand und Seriennummer.

Das Script habe ich etwas angepasst so das die Timings so schnell wie möglich arbeiten. https://pastebin.com/kF0XBKys dauert ca 50 Stunden für alle 9999 Versuche.

 

 

Jetzt habe ich Zweirichtungszähler bekommen den EMH mMe4.0.

Es gibt ja hier ein Python Script für den HICHI lese Schreib Kopf, den bekomme ich nicht zum senden einer Pin.

Ich habe da viel mit "str100ms = b'\x00'" rumgespielt und mit einem alten Handy die IR Signale versucht zu deuten. Ab und zu hat der Zähler reagiert und der Displaytest ging an. Leider nicht so zuverlässig das man da etwas hätte eingeben können. Ich habe keine Ahnung wie man über das Serielle Protokoll vernünftig morsen können soll.

Daher habe ich mir einen Kopf gebaut der über einen GPIO eine LED sendet und über die Serielle Schnittelle das aktuelle Datenpaket empfängt, um die größen zu vergleichen.

Die Empfänger Diode habe ich aus einem alten Heizkostenverteiler einfach zwischen GND und Serial Pin angeschlossen.

Ich wollte die Pin hinterher kennen. Sollte der Strom mal ausfallen muss die Pin erneut eingegeben werden.

Hier das passende Script, dauert pro Pin ca. 21 Sekunden pro Pin: https://pastebin.com/5EesevEh

Standardmäßig sendet der Zähler (optische Schnitstelle) den aktuellen Verbrauch und Zählerstand jedoch als 0.

Leider ist das bei dem Zähler so das man durch das Script die ganzen Pin Nummern durchprobieren kann. Jedoch sich an der Datenmenge an der Optischen Schnittstelle wieder nichts ändert. Die Pin muss eingegeben werden, anschließend muss man den Punkt suchen und den erweiterten Datensatz aktivieren.

Im Display steht statt einem OBIS Code dann "inF" Aktivierung von Zusatzinformationen der opti-schen Info-Schnittstelle.

Daher hätte ich so nicht dokumentieren können welche Pin es war. Und das erraten hat mit dem Script nicht funktioniert. Ich glaube der Zähler sperrt sich nach einiger Zeit wieder. Im Menü kann man die Pin Abfrage deaktivieren. (Deaktivierung/Aktivierung PIN-Schutz)

Ich habe für zwei Zähler EMH mMe4.0 eine PIN mittlerweile vom Messstellenbetreiber bekommen. Die eine fing mit 2 und die andere mit 3 an. Also nicht rückwärts bei 9999 anfangen.

 

Ein Hinweis noch. Ich dachte am Anfang das die Statistischen Daten die man sich anschließend im Display anzeigen lassen kann auch über die optische gesendet werden. Ich meine verbrauch 1 Tag, 7 Tage, 31 tage, 1 Jahr. Das ist nicht der Fall.

EMH mMe4.0 überträgt nach dem Freischalten die nachvollgenden OBIS Codes:

1.8.0 Zählerstand Total

2.8.0 Eingespeiste Energie Total

16.7.0 aktuelle verbrauch Summe über alle drei Phasen

36.7.0 Wirkleistung L1

56.7.0 Wirkleistung L2

76.7.0 Wirkleistung L3

96.1.0  Seriennummer

96.50.1 Hersteller EMH

+1,14,s,16,9600,EMH
1,77070100010800FF@1000,1.8.0 Zählerstand,kWh,Total_in,4
1,77070100020800FF@1000,2.8.0 Einspeisung,kWh,Netzeinspeisung,4
1,77070100100700FF@1,16.7.0 Wirkleistung,W,Power_curr,0
1,77070100240700FF@1,36.7.0 Wirkleistung L1 ,W,Power_curr_l1,0
1,77070100380700FF@1,56.7.0 Wirkleistung L2 ,W,Power_curr_l2,0
1,770701004C0700FF@1,76.7.0 Wirkleistung L3 ,W,Power_curr_l3,0
;1,77070100600100FF@1,96.1.0 Seriennumer,Sn,unbekanntes_mqtt_topic_3,0
;1,7707010060320101@1,96.50.1 Name,Name,unbek_mqtt_topic_1,0

 

PS:

Ich habe gelesen das hier einige Leute die Daten vom Zähler benutzen um mit dem Überschuss der Photovoltaik Anlage den Akku oder das Auto zu laden.

Das stelle ich mir etwas anstrengend vor, da die neuen digitalen Zähler und moderne Messeinrichtungen nur für 8 Jahre geeicht sind und dann ausgetauscht werden. Die alten schwarzen Ferraris-Zähler hatte eine Eichung für 16 Jahre.
Das bedeutet es wird alle 8 Jahre ein neuer Zähler eingebaut, sehr wahrscheinlich ein anderer Typ, von einer anderen Firma. Damit fängt der Spaß mit neue Pin anfordern und welche Datensätze werden mit wievielen Nachkommastellen übertragen neu an.

Daher würde ich mir überlegen ob ich mir nicht einen zweiten eigenen Zähler hinter dem Zähler verbaue, z.B. Shelly 3em oder so....

PPS:

Ich gehe mal davon aus das die meisten Tasmota als Firmware benutzen werden, mit einem ESP8266 und HICHI lese Schreib Kopf.

Eigentlich wäre es super wenn man ein Script hätte um die Nummern mit Tasmota Script durchprobieren. Tasmota kann ja angeblich eine Pin eingeben.

So müsste nicht ein Raspberry und Python her.

 

 

Diese r Beitrag wurde geändert Vor 6 Monaten 3 mal von Desi

   
AntwortZitat
(@hosenstrampler)
Vorsichtiger Stromfühler
Beigetreten: Vor 3 Jahren
Beiträge: 19
 

Hi,

ich hatte bei mir auch einen Arduino vor den Zähler gehängt, der durch An- und Ausschalten einer IR-Reflexlichtschranke (lag in der Bastelkiste) die Pin knacken sollte. Die Eingabe der Pin hat auch prima funktioniert, aber auch nach 2 Wochen zählen von 0-9999 hat sich die Anzeige nicht geändert.

Also bin ich den vermeintlich mühsameren Weg gegangen und hab eine Mail an den Stromversorger geschrieben, was ich tun muß, um die Pin zu erhalten. Die Antwort: Wir haben beim Technikteam nachgefragt und Sie erhalten die Pin per Post. Und 3 Tage später war die Pin im Briefkasten.

Jetzt, wo ich die Pin kannte, habe ich mein Programm gezielt getestet. Ergebnis: das hat prima funktioniert. Aber mit dem Freischalten ist es nicht getan.

Auf Seite 2 https://www.stwbo-netz.de/fileadmin/Dateien_Netz/Dokumente/Kurzanleitungen/eBZ_DD3_-_Kurzanleitung_V1.01_.pdf steht der schöne Satz 'Der Zähler verlangt bei jeder Nutzung erneut eine PIN- Eingabe (außer bei Deaktivierung der PIN) und ist somit dauerhaft vor Blicken Unbefugter geschützt.' Also doch die Taschenlampe gezückt, Pin eingemorst, Inf und P eingeschaltet und PIN ausgeschaltet. Jetzt ist die Anzeige so, wie ich mir das vorstelle.

Am Wochenende werde ich an den Arduino eine IR-Empfangsdiode anstöpseln und versuchen, das Ausgabeprotokoll zu lesen/entschlüsseln.

Gruß

Jürgen


   
AntwortZitat
 Desi
(@desi)
Vorsichtiger Stromfühler
Beigetreten: Vor 7 Monaten
Beiträge: 5
 

Moin,

das gibt's schon alles Fertig. Dein Zähler ist auch schon bekannt. Siehe: https://tasmota.github.io/docs/Smart-Meter-Interface/#ebz-dd3-obis Wobei ich mir den Dump mit dem SML Decoder angeschaut habe. Manchmal gibt's mehr Infos.

 

ESP8266 z.B. D1 Mini - Tasmota flashen, IR Empfänger anschließen, fertig.

 

Wenn du das Tasmota bin nicht selbst kompilieren willst hier ist ein fertige Firmware und die Anleitung dazu.

https://ottelo.jimdofree.com/stromz%C3%A4hler-auslesen-tasmota/#Downloads

 

Diese r Beitrag wurde geändert Vor 6 Monaten 2 mal von Desi

   
AntwortZitat
Seite 3 / 4
Lässt sich die Stro...
 
Teilen: