WLAN-Steckdosen und Funksteckdosen

Artikel  in Arbeit – öffentliche Vorabversion; Fehler sind sicherlich noch enthalten.

Ein Freund hat zu Weihnachten eine TP-Link HS110 „Smart-Steckdose“ bekommen und ist davon begeistert. Ich habe vor Jahren bereits eine HS100 ausprobiert, aber meine Begeisterung für diese ganze Gerätegruppe unterschiedlicher Hersteller ist mittlerweile etwas abgeklungen. Die Geräte sind durchaus praktisch sind, sofern man etwas Vorsicht walten lässt, und man weiß, was das Gerät tut – ein Erfahrungsbericht.

WLAN-Steckdosen

Als ich mich für das Thema Smart Home zu interessieren begonnen habe, waren WLAN-Steckdosen gerade das Nonplusultra. In diversen Webshops habe ich danach gesucht und hatte für das kleinere Budget am Ende die Wahl zwischen Dosen mit und ohne „Energieverbrauchs“messung. In die engere Auswahl kamen TP-Link mit den Modellen HS100 und HS110 und Edimax mit SP-1101W und SP-2101W.

Meine erste WLAN-Steckdose – TP-Link HS100

Ich habe mich dann, wie bereits erwähnt, für die HS100 von TP-Link entschieden. Dieses Modell wird mittels der App „Kasa“ angesteuert, die relativ viel App-Speicher benötigte. Für mein damaliges Smartphone, das unter permanentem Speichermangel litt, war diese Lösung auf Dauer nichts.

Nur über die App steuern?!

Zum Glück gibt es OpenSource-Lösungen wie FHEM und das  FHEM-Forum, an dem eine Menge kundige Leute mitarbeiten. Relativ schnell war ein Skript gefunden, das ein anderer Forenposter dort veröffentlicht hat. Im Zuge des Threads ergab sich, dass viele Geräte der Marke „Medion“, „TP-Link“, „Maginon“ und „Silvercrest“ im Grunde einer mit einer recht ähnlichen Sequenz angesteuert werden. Ich werde diese Erkenntnisse zusammenfassen und später näher erläutern.

Der nächste Schritt – WLAN+Funksteckdosen (433 MHz) –  MD 16173

Aus Kostengründen bin ich dann, als eine Erweiterung anstand, zunächst auf ein Set aus WLAN-Steckdose und Funksteckdosen gestoßen. Der Artikel mit der Bezeichnung Medion MD 16173 besteht einerseits aus einer „intelligenten“ Dose und andererseits drei Funksteckdosen mit einer Fernbedienung, wie wir sie gemeinhin als „Baumarkt”-Funksteckdosen kennen. Angesteuert werden die Dosen über die App „icomen“ respektive „icomen x2“.

Andere Hersteller – und kompatible Funksteckdosen

Ich habe später auf Amazon äußerlich baugleiche Modelle sowohl der Wlan-Steckdose („Aplic“, „CSL“) als auch der Funksteckdosen („hama“) gefunden. Zusätzlich gibt es von hama und CSL kompatible Außensteckdosen.

Die Funksteckdosen sind als Zwischenstecker ausgeführt. Sie lassen sich mit den Fernbedienungen der jeweils anderen Scheinhersteller schalten.

WLAN-Funksteckdosen-Gateways

Über die zuvor genannten Apps icomen und icomen x2 können sowohl die WLAN-Steckdosen geschaltet werden, wozu auch ein Zeitschalt und Zufallszeit-Schaltprogramm wie bei der TP-Link HS100/HS110 gehört, als auch die Funksteckdosen, die zuvor an die jeweilige Steckdose als Gateway angelernt werden kann. Man kann sie also fortan beinahe wie über die Fernbediendung ansteuern.  Eine Steckdose reagiert dabei auf zumindest bis zu drei verschiedene angelernte Codes. Der Nachteil dieser Funksteckdosen ist, dass man im Gegensatz zur Haupteinheit den Schaltzustand nicht überprüfen kann.

Recherchen

Pairing mittels App und Cloud

In den Steckdosen ist ein Modul „Hi-flying HF-LPB100“ verbaut.  Die Steckdose verfügt über ein Webinterface mit dessen Hilfe sie im Grunde vollständig konfiguriert werden könnte. Im Regelfall wird man die Dose über die App einrichten.  Dazu drückt muss man das Smartphone ins Ziel-WLAN-Netz einbuchen, worauf man den Ein-/Ausschalter der Dose drückt, bis seine LED  schnell rot blinkt. Nun fügt dann das Gerät in der App hinzu. In der Folge muss man das WLAN über die App einrichten, während man sich in unmittelbarer Nähe des Gerätes befindet. Wenn die Dose über DHCP eine IP-Adresse und ein Gateway erhält, klappt  das Pairing. Stellt man die Internetverbindung für unbekannte Geräte aber ab, schlägt auch das Pairing fehl. Wir haben es also an sich mit einem Cloud-Service zu tun.

Einrichten ohne Cloud

Möchte man auf die App verzichten, gibt es einen Trick: Die Steckdose ist im Werkszustand und im Pairing-Mode darauf ausgelegt, als Client der ESSID „LSD“ zu fungieren. Konfiguriert man einen offenen Access Point/WLAN-Router mit dieser Kennung, erhält die Steckdose eine IP-Adresse aus dessen Netz und kann über das Web-Interface des HF-LBP100 konfiguriert werden.
Die Funktionsweise kann je nach Hersteller abweichend sein. Mit einem WLAN-Sniffer kann man allerdings die unverschlüsselten Daten, die die Dose anfordert, sichbar machen.

Konfiguriert man das WLAN nun manuell, kann man die Dose über ihre IP mittels UDP-Befehlssequenzen ansprechen.

Befehlssequenzen

Das FHEM-Forum hat alle Informationen bereits zusammengetragen. Ein PHP-Skript des dortigen Nutzers „SebiM“ mit kleinen Modifikationen zum Anschalten von Funksteckdosen kann zur Ansteuerung dienen – hier ist sein rfswitch.php:

#!/usr/bin/php
<?php
// 2016 Sebi, public domain

// Insert your WiFi plug data here // Daten der eigenen WiFi-Funksteckdose hier eintragen
$ip = $argv[2];
$mac = getMacFromArp($ip);
if ($argc==4) {
$code = $argv[3]; // Company code + device code + auth code
} else {
$code=’C1117150′;
}
// Comment out the following line for WiFi plug switching instead of RF slave plug switching
// Folgende Zeile zum Schalten der WiFi-Dose selbst anstatt einer RF-Slave-Dose auskommentieren
if ($argc==5){
$rfslave = $argv[4];
}

function getMacFromArp($IP) {
$REACHABLE=shell_exec(‚ping -W1 -c1 ‚.$IP);
$MAC=shell_exec(‚echo -n $( egrep „‚.$IP.'“ /proc/net/arp | egrep -oe \'([0-9a-f]{2}:*){6}\‘ | sed \’s/\://g\‘ | tr [:lower:] [:upper:])
‚);
return „$MAC“;
}
function encodePacket($packet) {
$td = mcrypt_module_open(MCRYPT_RIJNDAEL_128, “, MCRYPT_MODE_CBC, “);
$key = ‚0123456789abcdef‘;
mcrypt_generic_init($td, $key, $key);
$result = mcrypt_generic($td, $packet);
mcrypt_generic_deinit($td);
mcrypt_module_close($td);
return $result;
}

$msg = hex2bin(„0140{$mac}10“);

if (isset($rfslave)) {
if ($argv[1] == ‚on‘) {
$value = ’60‘;
} else if ($argv[1] == ‚off‘) {
$value = ’70‘;
} else {
exit(2);
}
$msg .= encodePacket(hex2bin(„00ffff${code}08${rfslave}${value}04040404“));
} else {
if ($argv[1] == ‚on‘) {
$value = ‚ff‘;
} else if ($argv[1] == ‚off‘) {
$value = ’00‘;
} else {
exit(2);
}
$msg .= encodePacket(hex2bin(„00ffff${code}010000${value}ff04040404“));
}

echo ‚UDP packet: ‚ . bin2hex($msg) . „\n“;

$sock = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
for ($i = 0; $i < 4; $i++) {
socket_sendto($sock, $msg, strlen($msg), 0, $ip, 8530);
usleep(50 * 1000); // 50 ms
}
socket_close($sock);

Zur Funktionsweise des Skripts

Das Skript ermittelt zunächst anhand der übergebenen Parameter die MAC-Adresse der Steckdose aus deren zuwiesener IP-Adresse. Anschließend wird eine Hexdezimalzahl der Länge 8 Byte (64 Bit) definiert, die sich von Gerät zu Gerät unterscheiden kann. Sie besteht aus dem Herstellercode, dem Gerätecode und einem Authcode. Innerhalb einer Geräteserie ist dieser Code jedenfalls ident und manche Hersteller verwenden offenbar denselben Code, der daher im Script als Fallback eingetragen ist: C1117150 (CX-Herstellercode, YY-Gerätecode; ZZZZ-Authcode.  Der FHEM-User „enterpriseII“ hat dies gepostet: https://forum.fhem.de/index.php/topic,38112.msg501942.html#msg501942

Ein weiterer, optionaler Parameter enthält einen  sechs Byte langen Code, der eine Funksteckdose, die zuvor angelernt worden ist, anspricht.

Das Skript generiert nun ein Paket, das anschließend über einen UDP-Socket als Unicast versendet wird. Seine Fracht enthält einen Präfix (0140), die Ziel-MAC-Adresse, einen Postfix (10) enthält, vermehrt um eine mit AES128 verschlüsselte Binärcodesequenz mit dem trivialen Schlüssel 0123456789abcdef, die aus  dem Präfix „00ffff, dem Gerätecode (C111750), der Zeichenfolge 08, dem angelernten Schaltcode der Funksteckdose, dem Schaltwert (70 für aus, 60 für ein und dem Postfix 4 mal 04 besteht. In Kenntnis dieser Details kann man es gut nachprogrammieren. Im simpelsten Fall kann ein Bash-Skript, das netcat (nc) aufruft diese Funktion erfüllen, solange man den 128 Bit Rijandel Algorithmus zur Verfügung hat.

Anlernen über die App, Auslesen der Schaltcodes aus der Cloud

Hat man die Funksteckdose über die App angelernt, kann man den Code mit einem weiteren Skript von SebiM vom Cloudserver abrufen. Man erhält dann einen JSON-Datensatz mit allen Dosen und deren zugehörigen Funksteckdosen.


php rfswitch.php {on|off} [IPADRESSE DER DOSE] [HERSTELLER-CODE, GERÄTECODE, AUTHCODE - Default :C1117150] [6 BYTE HEXADEZIMALZAHLEN]

  • Zum Ansteuern der Funksteckdosen

php rfswitch.php {on|off} [IPADRESSE DER DOSE] [HERSTELLER-CODE, GERÄTECODE, AUTHCODE - Default :C1117150] [6 BYTE HEXADEZIMALZAHLEN]

Sicherheitsaspekte

Nutzlose Verschlüsselung

Man sollte sich dessen bewusst sein, dass die Schaltsequenzen, die gegen den String „0123456789abcdef“ verschlüsselt sind, trotz AES128/Rijandel ausgelesen werden können. Damit kann ein Angreifer, der Zugriff auf die Broadcastdomain erlangt grundsätzlich Euer SmartHome beeinflussen.

Seit der Entdeckung der WPA2-KRACK ist das kein abwegiges Szenario mehr, denn die WLAN-Schaltdosen verfügen über das HF-LBP100-Modul zusätzlich über einen Repeater-Mode. Zwar dürfte dieser simple Repeater-Modus kein WDS beherrschen und somit höchstwahrscheinlich nicht anfällig für Key-Replay-Attacken sein, dennoch ist die Firmware V1.0.04b nicht auf dem letzten Stand. Wer nun die glorreiche Idee haben sollte, die Firmware von der Herstellerseite des Moduls zu verwenden, sei gewarnt: Wer das HF-LPB100 updated, ruiniert die Funksteckdosen-Funktionalität auf seinem Gerät unwiderbringlich. Der jeweilige Hersteller hat die Firmware an die Erfordernisse seiner Cloud und seiner Relaisanordnung angepasst.

„ET nach Hause telefonieren“ – CloudApps

Wer die Cloud-App verwendet, sollte sich darüber im klaren sein, dass sämtliche Schaltzeiten nebst Username und Passwort auf einem chinesischen Cloud-Server landen. Freilich fehlt jeglicher Hinweis darauf, der  im Sinne der DSGVO wäre. Auch das manuelle Schalten würde, damit die Schaltzustände mit der App synchron bleiben, einen derartigen Home-Call auslösen, wenn die WLAN-Steckdose über das Internet verbunden ist.

Wer das nicht möchte, dem sei angeraten, dies  über die Firewall zu unterbinden. Freilich ist damit die App nutzlos. Alternativen zu ihr, samt fremden Cloudserver bestehen in selbstgehosteten Lösungen wie FHEM.

Ansteuerung via Cron-Script

Die beiden zuvor genannten Schaltbefehle lassen sich freilich auch ohne FHEM via Cron-Job anwenden. Der Linux-Server dienst somit als Zeitschaltuhr, die sich automatisch der Zeitumstellung anpasst.

Praktisch wird es, wenn dies etwa nach einem Backup die USB-Platte vom Netz trennt oder der SAT-IP-Server über Nacht abgeschaltet werden soll. Anwendungsmöglichkeiten gibt es viele.

Vorsicht…

… ist geboten, da es sich um Geräte handelt, die mit Netzstrom arbeiten. Achtet jedenfalls auf die maximal verträgliche Spitzen- und Dauerlast des jeweiligen Gerätes und beachtet die Sicherheitshinweise in der Bedienungsanleitung.

Noch ein Hinweis: wenn Du mehrere dieser WLAN-RF-Gateways verwendest, ist der RF-Code, wenn Du ihn über ein Skript steuerst, auf allen Dosen in Reichweite, die denselben Code angelernt haben, nutzbar. In der App ist eine Slave-Steckdose stets an einen einzigen Master gebunden. Du kannst die Befehle, die „fremde“ Slaves betreffen, aber auch in einer Schleife an all Deine Dosen senden. Das wird dann praktisch sein, wenn Du eine Funksteckdose nicht immer an derselben Wandsteckdose benützt, oder, wenn Du eine Dose im Empfangsbereich zweier Gateways hättest (1.+3. Stock Gateway, 2. Stock RF-Slave). Bei allen Dosen, die ich bisher getestet habe, besteht durchaus ein Reichweitenproblem mit der in ihnen verbauten RF-Feder-Antenne für 433 MHz. Anders als bei WLAN mit MiMo und mehreren Streams machen sich hier Abdeckungsprobleme innerhalb einer Wohnung stark bemerkbar.

Kennt man die Problem und Möglichkeiten, steht dem Spaß mit der Heimautomatisierung nicht mehr viel im Wege.

 

Feedback und Erfahrungen sind herzlich willkommen!

Ein herzliches Dankeschön  an die Mitwirkenden im FHEM-Forum, ohne das dieser Beitrag nicht möglich gewesen wäre! Der nächste Artikel wird sich vielleicht FHEM widmen.

Telnet auf der Videotürklingel

 

Kürzlich habe ich mir gedacht, eine WLAN-Türklingel wäre eine sinnvolle Investition, etwa schon allein deshalb, weil sich manchen Zustelldienste gerne in meiner Gegend verirren. Als Sparfuchs, der ich ja bin, wurde es auf Amazon eine [externer Link zu Amazon:  Generic TS-IWP708 Wifi Digital Wireless Video Tür Bell]. Zum Zeitpunkt des Erwerbs lag der Preis bei etwa 30 Euro. Es f olgt eine

Analyse:

Paket und Inhalt

Die weiße Schachtel war relativ neutral. Ein Produktbild und der Name des Produkts auf der Oberseite, seitlich rechts noch ein paar Bildchen, Strichcode-Aufkleber, einer davon mit dem Aufdruck „TS-IWP708“ unter dem Code. Keine Herstellerangaben in irgendeiner Form.

Inhalt der Schachtel

  1. User’s Manual (20 Seiten mit farbigen Illustrationen und Screenshots)
  2. Die Haupteinheit im wiederverschließbaren Plastiksack.
  3. Ein Montagerahmen, der zugleich als Wetterschutz oder Regenblende dient.
  4. Ein Stromadapter 230V zu 5V 1A mit einem 2-Pin Stecker. CE-Loge auf dem Adapter.
  5. LAN-Adapter (8x17cm ungeschirmte Kabel mit acht-pinnigem, einreihigem Stecker auf einer Seite, auf der anderen ist ein RJ45-„Weiberl“ .
  6. Ein Adapter mit drei Kabeln, die jeweils ca. 10,50 cm lang sind und offene Enden haben.
  7. Zwei Stück gepolstertes Teppichband.
  8. Ein Sackerl mit vier billigen Schrauben und ebensolchen Dübeln. Eine weitere, winzige Schraube mit Metallgewinde. [Werbung: Wenn Du an Webhosting, VPS und RootServern interessiert bist, kannst Du gerne meine Liste von Gutscheinen für netcup durchschauen. Es gibt Rabatte oder eine Neukundengutschrift. netcup – german quality webhosting.]

Anmerkungen:

  1. Die Bedienungsanleitung hat keine Lizenzinformation oder gar ein Impressum angefügt.
  2. Die Haupteinheit im Klavierglanzlook, die eine helle, blaue LED unter dem Klingelknopf hat, wirkt sauber verarbeitet. Links und rechts des Knopfes sind je eine weitere LED angebracht.  Im oberen Bereich sitzt der Kamerasensor mit einer Auflösung von 640×480, umgeben von je drei IR-LEDs links und rechts von ihm. Für den Lautsprecher und das Mikrophon gibt es Vertiefungen. Auf der Rückseite ist der abgesenkte Reset-Knopf zu finden. Ein „QC passed“ und das Produktionsdatum sind auf je einem Aufkleber zu sehen.
  3. Das Wetterschutzgehäuse, wenn man die Blende so nennen möchte, hat auf der Unterseite ein Loch, durch das die winzige Metallschraube aus 1.1.1.8 passt. Damit wird die Haupteinheit mit der Blende fixiert. Deshalb würde ein Einbrecher oder Dieb, der die Klingel haben wollte, ein leichtes Spiel haben. Es wäre sinnvoll die Schraubschlitze mit Epoxidharz zu verschließen, wenn man die Klingel nach Lektüre dieses Artikels noch behalten möchte. Aber wie kommt man dann an den Reset-Knopf, wenn man ihn braucht? Aufgrund dessen kommt mir das Konzept in diesem Punkt nicht ganz schlüssig vor.
  4. Das Stromkabel des Netzadapters ist, gemessen daran, dass wir hier eine Außeneinheit vorliegen haben, mit 80cm lächerlich kurz. Ich werde deswegen wohl einen selbstgebastelten PoE-Adapter verwenden müssen.
  5. Der ungeschirmte LAN-Adapter mit seinen ungeschirmten, nicht verdrillten könnte Funkstörungen bewirken. Ich würde ihn mit Alufolie umwicklen, bevor ich ihn letztlich montiere.
  6. Das dreipolige Kabel dient zum Anschluss an einen elektrischen Türöffner. Wie das geht siehst Du in 3.2.

Einrichtung

Vorbereitungen

  1. Auf Seite 7 der Bedienungsanleitung findet man QR-Codes, die auf eine App in entweder dem Google Play Store oder dem iOS App Store verweisen sollten. Nun, sollten, denn der Link für die in einem der Screenshots als  „Door Phone 4.1“ bezeichneten Apps war tot. Ich habe stattdessen mit dem Suchterm „doorphone“ eine andere app gefunden „Door Phone 4.4“, Herausgeber ist „ShenZhen Gogo Link Tech.limited“, die bei mir funktioniert hat.
  2. Fallstrick: Bevor man versucht, eine Verbindung mit der App herzustellen, sollte man jedenfalls das „Mobile Internet“, die „Mobile Datennutzung“, etc. deaktivieren. In meinem Fall hat die App das Gerät nicht detektieren können, solange LTE aktiv war.  (Es könnte sich um einen länderspezifischen Effekt handeln, wenn die privaten IP-Adressbereiche des 4g/3g/2g – Netzes vorrangig behandelt werden und der Broadcast fehladressiert wird.).
  3. Schließen wir also den zweipoligen Stromadapter an der Rückseite der Türklingel an und geben ihr Strom.
  4. Warten wir einen Moment, während die Türklingel bootet. Sie begrüßt und mit „welcome to smart home“ über den Lautsprecher. Nach weiteren 30 Sekunden dürfen wir den blauen Touchbutton für ca. fünf Sekunden drücken. Nach dem Loslassen sagt die Türklingel: „Network configuration mode, please set it down in five minutes“.
  5. Sowie man dies hört, ist auch schon eine WIFI Access Point mit der SSID „GBELL-{Teile der MAC Adresse}“ auf dem Handy sichtbar. Verbinde Dich damit. Das Einrichtungspasswort ist „123456789“.
  6. Sowie das WLAN verbunden ist, öffne die App „Door Phone“ und folge den Anweisungen auf Seite 9 der Antleitung: „Please click here to add bell“, dann „Search“. Und dann tippt man auf den Text „GBELL …“.
  7. Man kann jetzt das Zahnradsymbol in der Übersicht der App antippen, um das lokale WLAN zu konfigurieren.
  8. Man sollte an dieser Stelle nicht vergessen, nach Abschluss der Einrichtung zurück ins heimische WLAN zu wechseln. [Werbung: Puh, nach dem das geschafft ist, möchtest Du vielleicht einen Blick auf meine netcup-Gutscheine werfen? netcup – german quality webhosting.]

Abschluss

  1. Nun, nachdem die Klingel grob eingerichtet ist, kann man ans Feintuning gehen. Als erstes sollte man den Alarmton abstellen, sonst wird man während der nächsten Schritte noch irr …
  2. In den „User settings“ kann man weitere Benutzer anlegen. Bedenke, dass die App Passwörter abverlangt, die zwar länger als sechs Zeichen sein sollen, aber keine Sonderzeichen beinhalten dürfen. Man kann sie zwar eingeben, aber die App lässt sie beim Speichern unter den Tisch fallen.
  3. Bei der Wahl des Passworts bitte auf den vorhergehenden Punkt genau achten. Ansonsten kann man sich mit der App nicht wieder einloggen. Die Reset-Prozedur über den Knopf auf der Rückseite- ist mühsam, man muss von Vorne beginnen. [Werbung: Wie wäre es zur Entspannung mit etwas völlig anderem:  FreeTime Unlimited von Amazon – kindgerechte Inhalte von Amazon?]

Tiefere Einblicke

Dienste

  1. Ein Portscan auf die nun zugewiesene IP der Klingel offenbart folgende drei TCP-Dienste: PORT STATE SERVICE 23/tcp open telnet 81/tcp open hosts2-ns 8600/tcp open asterix
    1. Auf den Telnet-Dienst – oder sollen wir ihn Backdoor nennen? – kann über folgende Nutzerdaten zugegriffen werden User: „root“ Passwort: „123456“
    2. Auf Port 81, kann man ein Webinterface erreichen, auf das nach einem Reboot mit dem selbstgewählten Benutzer zugegriffen werden kann. Bedenke, dass etwaige Sonderzeichen schlicht weggelassen worden sind. Die Schnittstelle wirkt unfertig und kaputt. Sie bietet fünf Funktionen:
      1. Ein Fenster für den Videostream – es ist immer schwarz und funktioniert augenscheinlich nicht.
      2. WLAN scan – man sieht die erreichbaren Netze, kann aber nicht mit ihnen verbinden.
      3. Ein Auslöser für den Türöffner – eigentlich sinnloss, wenn Audio und Video nicht funktionieren…
      4. Audio in – (Gegensprechfunktion) ohne Funktion
      5. Audio out – (Gegensprechfunktion) ohne Funktion
    3. Der Zweck von Port 8600 war mir an dieser Stelle unklar. Es ist kein Asterisk, sondern scheint vom Dienst „go-service“ auszugehen, das ist jene Schnittstelle, die mit der App kommuniziert. Ich konnte das noch nicht tiefer analysieren, aber dahinter steckt anscheinend eine monolithische  Binärdatei, die die ganze Klingel kontrolliert.
  2. Ein genauerer Blick in die Firmware wird durch den zuvor genannten Root-Telnetzugang ermöglicht. Jetzt wird es spannend:
    1. Das Gerät meldet auf Linux und Busybox zu laufen, u.z. konkret auf einem Realtek-SDK mit  Linux 2.6. Nirgendwo auf der Packung oder den Beilagen konnte ich eine Kopie der GPL Lizenz finden. Es gibt keine Hinweise auf wiederverwendeten Code aus unter der GPL lizenzierten Projekten. Aus diesem Grund habe ich den von Amazon genannten Hersteller „Sawful“ und Amazon darüber in Kenntnis gesetzt. Bisher wurde nur meine Rezension auf Amazon wieder gelöscht: Sie enthalte unzulässige URLs. Ich warte auf eine Antwort. #cat /proc/version Linux version 2.6.21 (root@mailzxh-desktop) (gcc version 3.4.2) #655 Wed Nov 21 22:21:46 CST 2012
      # busybox BusyBox v1.12.1 (2012-11-21 22:17:05 CST) multi-call binaryCopyright (C) 1998-2008 Erik Andersen, Rob Landley, Denys Vlasenkoand others. Licensed under GPLv2.See source distribution for full notice.
    2. Zur Hardware:
      1. SoC: Realtek MIPS24K with rt5350 WIFI. # cat /proc/cpuinfo system type : Ralink SoC processor : 0
        cpu model : MIPS 24K V4.12 BogoMIPS : 239.10
        wait instruction : yes
        microsecond timers : yes
        tlb_entries : 32
        extra interrupt vector : yes
        hardware watchpoint : yes
        ASEs implemented : mips16 dsp
        VCED exceptions : not available
        VCEI exceptions : not available

        # ls /proc/rt5350 gmac skb_free tx_ring rx_ring cp0 esw_cnt
      2. RAM: 32MB # cat /proc/meminfo | grep MemTotalMemTotal: 29336 kB
      3. Flash
        1. Konfiguration/Partitionierung # cat /proc/mtd dev: size erasesize name
          mtd0: 00800000 00010000 "ALL"
          mtd1: 00030000 00010000 "Bootloader" mtd2: 00010000 00010000 "Config"
          mtd3: 00010000 00010000 "Factory"
          mtd4: 00100000 00010000 "Kernel"
          mtd5: 00330000 00010000 "RootFS"
          mtd6: 00300000 00010000 "sys"
          mtd7: 00080000 00010000 "param"

          Ok, ein anscheinend acht MB großer Flash mit sieben Partitionen. Die Firmware kann man mittels TFTP-Client aus Busybox’s wegsichern. Dazu setzt man einen TFTP-Server auf einer Maschine innerhalb der eigenen Broadcast Domain auf. Mit „tftp -l [lokale Datei] -r [entfernt gelegene Datei ] -p [IP Adresse des Servers]“ kann man die Inhalte von /proc/mtdblock* auf den Server kopieren.
        2. Partitionen sind wie folgt eingebunden:
          # mount rootfs on / type rootfs (rw) /dev/root on / type squashfs (ro) proc on /proc type proc (rw) none on /var type ramfs (rw) none on /etc type ramfs (rw) none on /tmp type ramfs (rw) none on /media type ramfs (rw) none on /sys type sysfs (rw) none on /dev/pts type devpts (rw) /dev/mtdblock6 on /system type jffs2 (rw) /dev/mtdblock7 on /param type jffs2 (rw
      4. WIFI iwconfig zeigt einen ra0 RTWIFI SoftAP und einige   wds-Interfaces. wds0 hat die SSID mit GBELL… – es scheint, dass der GBELL-AP also weiterhin konfiguriert ist, aber ich konnte nun nicht mehr damit verbinden. Vermutlich also nicht bloß eine versteckte SSID, sondern mit geänderten Einstellungen. apcli0 zeigt die Klingel als Klient am heimischen AP. Ich konnte bisher keine Einstellung zur Regulationsdomäne (Ländereinstellung) finden. Wahrscheinlich hat sie die Weltdomain eingestellt, in der Kanal 12 und 13 (und 14) nicht funktionieren.
      5. Aktive Netzwerkdienste # netstat -aWp Active Internet connections (servers and established)Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:81 0.0.0.0:* LISTEN 133/encoder tcp 0 0 0.0.0.0:23 0.0.0.0:* LISTEN 28/telnetd tcp 0 0 0.0.0.0:8600 0.0.0.0:* LISTEN 31/go-daemon tcp 0 213 192.168.246.1:23 192.168.246.2:32798 ESTABLISHED 28/telnetd udp 0 0 127.0.0.1:8832 0.0.0.0:* 133/encoder udp 0 0 0.0.0.0:3073 0.0.0.0:* 133/encoder udp 0 0 0.0.0.0:3074 0.0.0.0:* 133/encoder
      6. udp 0 0 0.0.0.0:3075 0.0.0.0:* 133/encoder udp 0 0 127.0.0.1:6666 0.0.0.0:* 133/encoder
      7. udp 0 0 0.0.0.0:8600 0.0.0.0:* 31/go-daemon udp 0 0 0.0.0.0:9632 0.0.0.0:* 133/encoder udp 0 0 127.0.0.1:9123 0.0.0.0:* 31/go-daemon udp 0 0 127.0.0.1:9124 0.0.0.0:* 133/encoder udp 0 0 0.0.0.0:67 0.0.0.0:* 102/udhcpd udp 0 0 0.0.0.0:32108 0.0.0.0:* 133/encoder udp 0 0 127.0.0.1:8813 0.0.0.0:* 133/encoder udp 0 0 0.0.0.0:15733 0.0.0.0:* 133/encoder udp 0 0 127.0.0.1:8822 0.0.0.0:* 133/encoder udp 0 0 127.0.0.1:8831 0.0.0.0:* 30/cmd_threadActive UNIX domain sockets (servers and established)Proto RefCnt Flags Type State I-Node PID/Program name Pat
      8. Binäre Dateiorte: /system/system/bin: # ls -la /system/system/bin-rwxr-xr-x 1 0 0 156768 go-daemon-rwxr-xr-x 1 0 0 8260 cmd_thread-rwxr-xr-x 1 0 0 877540 encoder drwxrwxrwx 5 0 0 0 ..drwxrwxrwx 2 0 0 0 .
      9. Kamera: Ein Schnappschuss von der Kamera ist mit den selbstgewählten Benutzerdaten zu bekommen – hier im Beispiel mit der Defaultadresse des WLANs im Einrichtungsmodus: http://192.168.246.1:81/snapshot.cgi Es sollte eigentlich auch -so flüstert es mir der Befehl „strings encoder“ auf dem lokalen PC, eine videostream.cgi geben, die mjpg-Streaming macht. Sie funktioniert aber nicht. Warum, das weiß ich noch nicht

Sicherheitslücken

  1. Telnet mit Trivialpasswort, über das man Root-Berechtigungen erhält.
  2. WDS ist möglicher weise für WPA-KRACK anfällig, was noch getestet werden muss. Wenn das Programm go-service Programmcode des alten hostapd beinhaltet, dann ist es wahrscheinlich. Abwehrmaßnahmen gegen KRACK, also Key Replay Attacken sind nicht nur einseitig am Access Point vorzunehmen.  Es ist anzunehmen, dass viele  Smart Home Gadgets auch weiterhin kein Update erhalten haben.

Zusammenfassung.

  1. Qualität: Das ist einer der billigsten WIFI-Videotürklingeln, die ich finden konnte. Während die Haupteinheit auf den ersten Blick einen überraschend grundsoliden Eindruck in Relation zum Preis erweckt, ist das Zubehör von entsprechend schlechter Qualität. Etwa die Schrauben, die nicht sauber gefräst waren und der LAN-Anschluss. Die Bedienungsanleitung ist überaltert und stimmt so nicht mehr.
  2. Lizenzfragen. Verstörend wirkt auf mich, dass der Hersteller es verabsäumt hat, die paar Cent, die eine GPL-konforme Erklärung kosten, zumindest für Linux und Busybox zu investieren. Wir werden ja sehen, wie der Hersteller und Amazon mit der mutmaßlichen Lizenzverletzung umgehend werden. Für beide gilt die Unschuldsvermutung.
  3. Sicherheit: Aus sicherheitstechnischer Sicht sind Root-Zugänge heute, wie auch vor 15 Jahren und länger eigentlich ein absolutes No-Go. Ich habe in einem Artikel von Pentest Partners aber ähnliches gefunden. (Danke!) Die Autoren haben damals eine Maginon IPC-20C analysiert, die offenbar dasselbe SDK/Framework verwendet – wer Interesse hat, sei auf die anregende Lektüre verwiesen: [Externer Link See: Hacking the IP camera (part 1)].
  4. Allgemein Die Türklingel könnte soviel bequemer zu bedienen sein, wenn es eine durchgehende deutsche Übersetzung in der Gogo-Link Door Phone App gäbe. Ich bin etwa in einer Fehlermeldung auch auf chinesische Schriftzeichen gestoßen. Dass die Kamera kein vollwertiges Webinterface bietet, sodass man lokal auch vom PC und ohne die APP auskäme, ist störend. Auch, dass die vom Hersteller empfohlene App, bereits einmal aus dem Goolge Play Store verschwunden ist, aber für’s Konfigurieren zwingend erforderlich wäre, verunsichert mich. Aus Entwicklersicht ist das Gerät dennoch attraktiv, etwa, wenn man eigene  Firmware schreiben wollte oder, wenn man Alternativen zum vermeintlichen Asterisk-Dienst, der in Wahrheit ein proprietärer Dienst für die Ansteuerung sein dürfte, entwickeln wollte. Es wäre spannend OpenIPCam auf dieses Gerät zu übertragen.

[Werbung: Nach einem so langen Text hast Du Dir etwas verdient. Wie wäre es mit etwas Musik von Amazon Music Unlimited?]

Spaß mit NFC-Tags

Near Field Communication (NFC)  – was sagt die Wikipedia dazu?

„Die Near Field Communication (dt. Nahfeldkommunikation, abgekürzt NFC) ist ein auf der RFID-Technik basierender internationaler Übertragungsstandard zum kontaktlosen Austausch von Daten per elektromagnetischer Induktion mittels loser gekoppelter Spulen über kurze Strecken von wenigen Zentimetern und einer Datenübertragungsrate von maximal 424 kBit/s. “

Quelle: NFC auf Wikipedia

Wenn Du ein NFC-taugliches Smartphone besitzt, dann kannst Du mit ein paar NFC-Aufklebern, wie etwa NTAG216-kompatiblen Tags lustige Dinge tun.

Zum Bespiel kann man die Visitenkarte mit drahtlos übertragbaren Zusatz- oder Kontaktinfos spicken. Die Informationen werden von einem kompatiblen Telefon ausgelesen und können gleich gespeichert werden.

Oder man setzt damit das Gäste-WLAN auf. Handy an den Sticker halten – WLAN läuft. Oder man kann im Auto auf die gleiche Weise beim Einsteigen schon Bluetooth und GPS aktivieren und den Hotspot starten.

Was man dafür braucht:

Ein NFC-taugliches Android-Smartphone. iPhone (r)(tm) soll angeblich das Schreiben von NFC-Tags nicht unterstützen.
NFC Aufkleber oder Karten (Aufkleber sind billiger als Schlüsselanhänger und Karten).

Spannend ist, dass Android im WLAN-Menü dann bereits anbietet, die Verbindungsinformationen auf einen NFC-Tag zu schreiben.

In medias res

Möchte ich also mehrere Aktionen ausführen, wird der Speicherplatz auf dem Tag schnell voll. Abhilfe verspricht da eine App namens Trigger mit der man Aktionen auf dem Handy ablegen und dann die Referenz auf dem Tag speichern kann.

App: Trigger

So lassen sich in einem Ruck Bluetooth verbinden, GPS und der Hotspot einschalten, ich kann das  Display im gleichen Vorgang auf Auto-Rotation  zurückgesetzen, das Lautstärkeprofil wechseln, und ich kann zugleich auch Google Maps oder Google Auto damit aufrufen.  Einmal auf den Tag tippen und das ältere Auto aus den 90er Jahren hat mit dem Handy eine Onboard-Zentrale mit Gast WLAN. Trigger schreibt auch eine Referenz zu sich selbst im App Store auf den Tag – wenn ein Gerät, das die App nicht installiert hat, den Tag scannt, will Trigger erst einmal auch dort installiert werden, aber das wäre unnötig.

Automatisches WLAN – kompatibel ohne Zusatz-App

Ein zusätzlicher Tag, beschrieben mit Android oder der TagWriter App auf der hinterer Mittelkonsole angebracht, stellt das WLAN den Mit- und Beifahrern zur Verfügung.

Spielereien mit Text und Nachrichten

Wenig sinnvoll aber geekisch ist es, die SMS-App mittels Tag mit einem Standardtext zu füttern. Das Absenden muss man sowieso noch manuell bestätigen.  Um dem Bruder nachdem man Essen gekocht hat, die Standard-SMS „Essen ist fertig! Komm!“ zu senden, ist die Sache aber nicht gerade das Non-Plus-Ultra, denn eine freie Hand braucht man zum Senden immer noch.

Für Gewinnspiele, wo man eine SMS an die immer gleiche Nummer mit einem Codewort im Text senden soll, ist das aber sicher ein nettes Feature. Dasselbe klappt übrigens auch mit E-Mails oder nur mit einem Text, der einfach nur auf dem Display des Handys angezeigt werden soll.

Captive-Portal mit NFC-Voucher?

Als nächstes spiel ich mich vielleicht mit dem Counter. Vielleicht kann ich eine Voucher-Blogroll für das Captive-Portal meines WLANs auf einen Tag schreiben, die bei jedem Aufruf den Browser mittels HTTP-GET anweist, den Vochercode als Parameter zu übergeben?

Fortsetzung folgt