In der letzten Woche habe ich ja von einem kleinen Experiment berichtet an dem ich den alten FTDI USB Adapter in einem Selbsttest mit einer selbst gebauten Loop überprüft habe: https://steemit.com/frickeln/@gammastern/ftdi-loopback-device
Da dies alles sehr zufrieden stellend verlief und mir neuen Mut gemacht hat, dass das eigentliche Ziel auch erreicht werden kann, habe ich mich einmal weiter dran gesetzt. Und möchte Euch das Ergebnis natürlich auch nicht vorenthalten. Im Kern geht es darum ein paar recht günstige Steckdosen aus chinesischer Produktion so zu verändern, dass man sie selbst programmieren kann und sie keine chinesische Firmware mit einer Cloudanbindung mehr haben. Ich trage nicht umsonst Orwell als Avatar ... wenn das nur mit Cloud in China geht, würde ich die Geräte gar nicht nutzen. Also müssen wir ein wenig digitalen Exorzismus hier betreiben...
Die Steckdosen firmieren übrigens bei uns unter unterschiedlichen Brandings. Das häufigste ist das der Firma "Sonoff", die sich hier bei Amazon für ca. 18€ erwerben lassen und auf den Namen "Sonoff S20 Basic" hören. Wer ein wenig auf die Suche in den tiefen des Netzes geht, kann aber baugleiche chinesische Geräte für ab 8 € finden. Das ist für eine WLAN steuerbare Steckdose beides ein durchaus akzeptabler Preis - zumal man von den Dinger eben ohnehin nicht tausende braucht. Aber jeder im Haushalt wird sicherlich etwas finden, was er gerne automatisiert nach Uhrzeit oder per Knopfdruck an oder ausschalten möchte.
Bei der ersten Recherche im Netz kam mir der Gedanke die Geräte per DNS Spoofing zu flashen. Natürlich haben auch die Chinesen vorgesehen, dass eine neue Firmware auf dem Gerät gespielt werden kann. Gaukel ich dem Gerät also vor, dass ich der chinesische Server bin, sollte es mir die Firmware aus der Hand fressen. Gerade bei so kleinen Geräten ist Speicherkapazität alles und ich gehe stark davon aus, dass keinerlei Schutzmaßnahmen vorhanden sind. Immerhin spart man sich diese schon bei weitaus größeren Geräten meist ein. Während die Überlegung richtig gewesen ist und scheinbar auch gut funktioniert, kommt da doch ein wenig die Paranoia in mir hoch. Wer sagt den, dass in diesem Prozess die Firmware nicht noch ein wenig verändert wird?
Ich will wirklich beim Upgrade-Prozess von Byte 0 bis Ende schreiben können. Also Siegel aufgebrochen und eine Schraube rausgedreht. Auf dem Bord sind die Anschlüsse klar zu erkennen, allerdings leider nur in Form von Bohrungen und nicht Pins wie ich sie erhofft habe. Nun kam also der für mich schwierige Teil ... ein paar Stifte einlöten. Ernsthaft als Mensch mit 2 linken Händen ist das nicht so trivial und noch kann ich mir keine Lötsklaven im Keller leisten.
Der rote Kasten zeigt, was ich eingelötet habe. Von oben kann ich nun ganz normal Jumper-Kabel aufstecken. Alternativ, hätte ich während des Upgrades auch die Kabel einfach so an das Ding halten können, dass es Kontakt hat, aber bei groben ausrechnen, hätten mir da für den Prozess 3 Hände gefehlt und so habe ich wenigenstens eine Teststeckdose bei der man leicht ran kann.
(Es versteht sich von selbst, dass bei ALLEN Arbeiten an dieser STECKDOSE, diese NIEMALS am Stromnetz angeschlossen sein darf. Wenn man daran arbeitet, bekommt die ihren Strom über USB und über NICHTS anderes. Soviel sollte Euch das Leben von Euch und anderen Wert sein, dass ihr da nirgend ein paar Sekunden Zeit einsparen wollt...)
Danach wird schlichtweg das Jumperkabel an dem im letzten Mal vorgestellten FDTI-Adapter angeschlossen und somit die Brücke zum PC gestellt. Wie die genaue Belegung ist, muss man recherchieren und ggf. ein wenig ausprobieren. Bei meinem Adapter (Frontsicht) ist VCC 2 Pin, RX 3 Pin, TX 4 Pin, GRND 6 PIN. Es gilt hierbei aber zu bedenken, dass wir uns nicht wieder eine Loop bauen wollen. Deswegen muss natürlich RX und TX zwischen Steckdose und FTDI gedreht sein. Wenn der eine sendet, liest der andere!
Sobald nun Strom auf der Leitung liegt, beginnt der Adapter zu starten und blinkt ein wenig fröhlich vor sich hin. Die chinesische Firmware "bootet". Zum Flashen des Chips gibt es nun mehrere Möglichkeiten. Während ich noch kurz überlegte ein Kommandozeilentool zu nutzen, habe ich mich dann doch eher für die "DAU"-Lösung entschieden und mir die Arduinio-IDE runtergeladen (https://www.arduino.cc/en/main/software). Da habe ich alle funktionen unter einem Hut und kann erstmal probieren, bevor ich mich irgendwo aufhalte und es am Ende gar nicht geht.
Es sollte gesagt werden, dass von Haus aus die IDE nicht in der Lage ist den Chip richtig anzusprechen. Tragt in den Einstellungen folgende URL als "zusätzliche Board-Verwalterurl" ein: http://arduino.esp8266.com/versions/2.4.0/package_esp8266com_index.json
Danach muss man noch ein wenig an die Einstellungen gehen um der IDE zu sagen, wie das Board angesteuert werden soll. Das wichtigste ist eben zunächst auf ein "Generic ESP8266 Module" zu schalten und den Flash Mode auf "DOUT" zu ändern:
Nun brauchen wir nur noch Code für die neue Firmware.
int Relais = 12;
int Led = 13;
void setup() {
pinMode(Relais,OUTPUT);
pinMode(Led, OUTPUT);
}
void loop() {
digitalWrite(Relais, HIGH);
delay(1000);
digitalWrite(Led, HIGH);
delay(1000);
digitalWrite(Led, LOW);
delay(100);
digitalWrite(Led, HIGH);
delay(100);
digitalWrite(Led, LOW);
delay(1000);
digitalWrite(Led, HIGH);
digitalWrite(Relais, HIGH);
delay(1000);
}
Das Programm macht natürlich überhaupt keinen Sinn, eignet sich aber zum Testen der Funktion. An Pin 12 und 13 liegt das Relay für die Stromschaltung und die Status LED. Deswegen schreiben wir dort nun den Status rein, den wir haben wollen. Wenn das Relay geschaltet wird, hört man auch ein "Klick". Die LEDs schalten ohne Klick, deswegen machen wir einen schnellen Wechsel in der Mitte rein, damit wir irgendwie sehen, dass auch unsere Firmware drauf läuft und der chinesische Geist entwichen ist.
Also Programm kompilieren und hochladen ... klappt nicht. Die Gegenseite verweigert die Annahme der neuen Firmware. War nun doch alles umsonst und die Chinesen haben sich am Ende doch ein wenig mehr Mühe gegeben? Also einmal die Standardtricks versuchen... und im Gegensatz zu modernen Smartphones haben wir nur einen Taster. Also mal stromlos machen, den Taster drücken und wieder Strom drauf ... Schon blinkt einem das Gerät nicht mehr an, sondern die LED leuchtet einem permanent blau an. Also noch einmal Upload und eine Minute später ist dieser abgeschlossen. Die LED erlischt kurz und ich höre ein Klick! Gefolgt von dem Blinken der LED, wie ich es erwartet habe.
Schon ist der chinesische Geist entwichen und das Gerät endlich unter meiner Kontrolle. Wer nun auf der Suche im Netz gibt, findet auch Firmware mit etwas mehr Komplexität: https://github.com/jamct/sonoffSocket. Damit kann man dem Gerät beibringen sich bei Aktivierung mit dem einprogrammierten WLAN zu verbinden und danach über eine minimale Weboberfläche das Relay schalten. Das kann man natürlich auch noch weiter absichern und verfeinern. Aber es zeigt eben wie leicht man nun über den Browser Strom "schalten" kann oder eben in anderen Heimautomatisierungslösungen einbauen kann.
Nicht das ich ein großer Freund von so etwas bin. Aber wenn wir als Mensch jeden Tag irgendwo hinlaufen, um dort eine Steckdose ein oder aus zu schalten, dann ist das eine langweilige repetative Tätigkeit und somit ein klarer Fall für einen Rechner. Mal ganz abgesehen davon, dass der Mensch ständig Fehler macht (Die vergesslichkeit... das Alter...). Fakt ist um aus einem unscheinbaren Fertigmodul einen chinesichen Geist heraus zu kriegen, bedarf es weder Priest, noch Weihwasser, noch wirklich viel Aufwand.
Ein wenig Spaß am Basteln und rumprobieren reicht völlig aus. Und es ist zudem eine sehr schöne Beschäftigung, wenn am Markt wieder nur Elend vorherrscht :)
Wow ! Super Interessant und auch klasse geschrieben !
Kann man sich auch die ursprüngliche Firmware anschauen ? - ist sicher interessant mal zu schauen was in so IOT-Geräten alles so läuft..
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Oh ja. Das wäre auch spannend.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Siehe auch den Parallelthread hier. Um einen Einblick in IOT-Hardware zu kriegen, ist der Vortrag von 34C3 wirklich ausgezeichnet und zudem sehr unterhaltsam. ;)
Ich werde aber mal sehen, ob ich noch irgendwo wieder an die Firmware komme und ob man daraus vielleicht auch mal einen Beitrag gebastelt bekommt. Sofern freie Software zur Verfügung steht und man ein System bereits unter seiner Kontrolle hat, finde ich es normalerweise immer nicht so interessant mich mit propritären Blobs zu befassen ;)
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Klar, von der Seite gesehen hast du Recht. Dann interessiert das natürlich nicht. Ich würd nur gern mal sehen wie die Hersteller das umsetzen und was die da wirklich alles machen 😉
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Der Erfahrung nach her findet man meist eher gruselig Facharbeit vor bei der gängige Bestpractise nicht eingehalten wurde. Wirklich schockierendes ist bei solchen Systemen meist nichts dabei. Das Ding sendet irgendwelche Daten in die Cloud und dort finden ggf. dann die wirkliche Finsternis statt. Um nun hier meine Steckdose zu schalten, warum brauche ich dafür einen externen Server?
Aber überzeugt. Ich wollte mir sowieso mal ne zweite Dose holen und werde dort mal versuchen die Firmware zu extrahieren, bzw. die Kommunikation abgreifen. Meist reicht das bereits aus um zu sehen, was gemacht wird ;)
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Danke :)
Also solange es um Technik geht würde ich immer sagen: Alles ist möglich! ;) Über den gleichen Weg wie ich die Firmware hochgeladen habe, müsste man die bestehende auch herunterladen. Dies habe ich in meinem Fall nicht gemacht, weil ich gar kein Interesse an den ursprünglichen Funktionen habe und ein Teil des gefundenen einen vermutlich verunsichert hätte ;)
Man darf da halt eben nur nicht Code erwarten, sondern muss sich dann mit den üblichen Blob-Analysetools reinhängen. (Softwareempfehlung: https://github.com/radare/radare2). Da solche Geräte nahezu nie gesichert sind, ist es oft auch für Einsteiger ein gutes Übungsfeld.
Wenn Du Dich für IOT interessierst, bitte unbedingt auch folgenden Vortrag des 34C3 ansehen: https://media.ccc.de/v/34c3-9147-unleash_your_smart-home_devices_vacuum_cleaning_robot_hacking. Schlägt in eine ähnliche Kerbe aber von einem komplexeren System. Letztendlich trotzdem über DNS-Spoofing angreifbar ;D ... und wer will den nicht einen mobilen Server haben, der zudem noch über ne eingebaute USV verfügt und nebenher die Wohnung sauber macht ^_-
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Echt schön zu sehen, dass es doch möglich ist ein Gerät wieder zum wirklichen Eigentum machen zu können und nich nur ein geduldeter Benutzer vom Gerät zu sein
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Früher oder später wird jedes Gerät befreit. Das Problem ist halt, dass dies oft sehr aufwendig ist und die Gegenseite mit dem Geld die nächste Generation anfertigt. Leider kriegt man es fast nicht in die Köpfe der Nutzer sich ein wenig über Geräte zu informieren und ihre Auswahl danach zu treffen.
Dieses Gerät habe ich ja auch nur geholt, weil ich wusste, dass ein ESP8266 drin verbaut ist der gut dokumentiert ist. Wir haben nämlich heutzutage teilweise sehr geniale Hardware in Geräten drin ;)
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Congratulations @gammastern! You have completed some achievement on Steemit and have been rewarded with new badge(s) :
Award for the number of comments received
Click on any badge to view your own Board of Honor on SteemitBoard.
For more information about SteemitBoard, click here
If you no longer want to receive notifications, reply to this comment with the word
STOP
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit