Man kennt es aus der Welt der Smartphones: Das “Rooten” oder beim iPhone das “Jailbreak”. Es bedeutet alles das eine: Der Nutzer bekommt Admin Rechte und kann die Einschränkungen des Herstellers umgehen.
Bei der Fibaro HC2 bedeutet das für uns wir können per SSH Zugriff erlangen und das aufgespielte Linux verändern. Auf die HC2 können wir beispielsweise zusätzlich einen MediaServer installieren oder wir betreiben eine NAS über die USB Ports. Für mich war es natürlich einerseits interessant ein paar Fakten über die Funktionsweise der Fibaro Software zu erhaschen und andererseits möchte ich gern einen Gateway mit API direkt auf die Fibaro installieren. Per USB können dann eigene Funksticks installiert werden und die Steuerung von 433 Mhz oder auch von Open Source Hardware wie MySensors wird möglich. Genauso können wir diverse Protokolle anzapfen. Der MAX! Cube kann dann ohne Umwege direkt mit der HC2 gesteuert werden. Klingt alles nicht schlecht oder?
Hier muss ich selbst die Notbremse ziehen! Fibaro möchte natürlich nicht, dass sich unerfahrene Nutzer an der Software vergreifen. Alles was hier beschrieben wird, führt umgehend zum Verlust der Garantie und es besteht keinerlei Service-Anspruch. Weder bei uns noch bei Fibaro! Wer also mal Lust hat seine 500€ Zentrale aufs Spiel zu setzen, kann das hier ausprobieren. Alle anderen lesen vielleicht lieber nur und bilden sich eine Meinung!
Benötigt wird
- Eine HC2 (Aktuelle Software Version)
- Eine Linux Installation (z.B. Ubuntu in der VM-Ware bzw. Virtual Box)
- Ein USB Stick
- Win 32 Disk Imgager
- PuttY
Backup erstellen bevor etwas schief geht
Dazu müssen wir die HC2 als Erstes öffnen. Das Betriebssystem auf der HC2 ist Debian 6 und befindet sich auf einem USB Stick, welcher mit dem Mainboard verbunden ist. Wir kommen sehr leicht an den Stick, indem wir die 4 Schrauben auf der Unterseite lösen und das Mainboard vorsichtig herausziehen. Der Stick ist mit etwas Kleber befestigt, also vorsichtig beim Abstecken. Den Stick dann in den PC stöpseln.
[carousel arrows="display"] [panel][/panel] [panel][/panel] [panel][/panel] [panel][/panel] [panel][/panel] [/carousel]Auf unserem Windows Rechners starten wir nun Win 32 Disk Imager um ein Backup zu erstellen. Dazu auf dem Desktop eine neue Textdatei erstellen und umbenennen in “fibaro.img”. Im DiskImager wählen wir dann über den blauen Ordner die Datei aus und außerdem den Laufwerksbuchstaben, unter welchem der Stick eingelegt wurde. Dann READ Klicken und warten. (Hier vorsichtig sein, denn wer WRITE klickt, löscht seinen Fibaro Stick.) Wenn alles fertig ist haben wir eine Backup Datei. Diese spielen wir jetzt gleich auf den neuen Stick auf, indem wir das Spiel umkehren: Fibaro Stick beiseite legen und den neuen Stick anstecken. Den blauen Ordner klicken und das Image auswählen. Als letztes nun WRITE klicken und warten. Wenn alles fertig ist, könnt ihr probehalber den neuen Stick in die Fibaro stecken und einmal booten. Es sollte bis hier her alles aussehen wie immer und wir müssen nun nicht mehr auf dem original Fibaro Stick herumbasteln.
Ein paar Hintergrundinformationen
Der Fibaro Stick wurde Hardware codiert. Im Stick selbst befindet sich eine Serial und ein spezieller Name, der den Stick einzigartig macht. Die Kopie unseres Sticks hat diese Daten nicht und kann somit (theoretisch) von der HC2 erkannt werden. Fibaro rät explizit davon ab den Stick bzw. den Recovery Stick zu kopieren. Bei mir funktioniert alles wie immer, aber es gibt ein paar Beiträge im Netz, welche von Problemen beim Remote Zugang usw. sprechen. Ihr könnt mir hier gern Feedback zu euren Erfahrungen lassen. Sollte ich Infos von Fibaro bekommen, werde ich diese auch gern teilen. Es ist übrigens durchaus möglich auch die Serial des Sticks zu schreiben, darauf möchte ich hier aber aus gegebenem Anlass nicht weiter eingehen.
Das “Rooten” der HC2 Software über Linux
Mit Windows kommen wir nun nicht weiter, denn das Dateisystem von Linux hat Windows nicht gern (Es kann damit nichts anfangen). Wir starten also unsere Ubuntu VM / Unsere Linux-Installation oder unsere LIVE-CD und legen den Stick (die erstellte Kopie) ein. Es sollten nun 2 Partitionen angezeigt werden. Ich beschreibe den Workflow jetzt über Ubuntu, je nach Linux-Distribution kann sich hier einiges ändern.
Wir Starten das Terminal und loggen uns als Root ein. Das Passwort hat man in der Regel bei der Installation gesetzt.
1 |
sudo su |
Jetzt navigieren wir zu unserem Stick. Als Erstes
1 |
cd /media/daniel/ |
("daniel" ist mein Benutzername, hier muss natürlich euer eigener hinein, den ihr bei der Installation gewählt habt.)
1 |
ls |
Jetzt werden die Partitionen angezeigt. Gebt nun cd und dann die ersten paar Buchstaben ein. Ihr könnt mit TAB anschließend die Eingabe vervollständigen. Als Bsp.:
1 |
cd b23l34s…. |
Nun bearbeiten wir die User mit
1 |
nano etc/shadow |
Es öffnet sich eine Datei die in etwa wie folgt aussieht:
In der Zeile von root ändern wir den Passwort Hash zwischen dem ersten “:” und zweitem “:” Wir generieren uns als Erstes einen eigenen. Öffnet als erstes ein neues Terminal Fenster und gebt dort folgende Zeile ein:
1 |
python -c "import crypt,random,string; print crypt.crypt(raw_input('clear-text password: '), '\$6\$' + ''.join([random.choice(string.ascii_letters + string.digits) for _ in range(16)]))" |
Jetzt könnt ihr ein neues root Passwort eingeben und nachdem ihr ENTER drückt, wird eine Passwort Hash generiert.
Wer darauf keine Lust hat, für den hier eine fertige HASH (Das Passwort ist hier “admin”)
1 |
$6$s91CJxNWqeB1AIAZ$.hKR8bLNMNbB40XHNYKpfRJIOScUqSe4DwrmV2SIOHtL0V8HOkxPEKQItcC1q3.P6d0K/9HVz/PnadOVfN4310 |
Die Hash muss nun wie beschrieben zwischen den 1. und 2. Doppelpunkt in der shadow Datei. Der bereits darin stehende Hash wird überschrieben bzw. vorher gelöscht. Am Ende noch speichern mit Strg+X, Y, Enter.
Fertig! Alle Terminal-Fenster schließen und den Stick auswerfen per Rechtsklick in der Leiste links. Der Stick kann jetzt wieder in die Fibaro und ab jetzt haben wir unser ganz eigenes root-Kennwort gesetzt.
Login via ssh wie beim Raspberry Pi
Als Letztes können wir uns nun als root per SSH einloggen. Wir haben nun alle Möglichkeiten mit dem aufgespielten Linux zu arbeiten und können z.B. via apt-get install unsere eigenen Pakete und Programme installieren. In Putty dann einfach als Name "root" und als Passwort das jeweilige Wort, aus dem der Passwort-Hash generiert wurde.
Ich habe gelesen, dass man in einer LUA-Szene mit os.execute(...) Shell-Befehle ausführen kann, u.a. auch passwd. Wenn es stimmt, würde bedeuten, dass Szenen als Root ausgeführt werden.
Dann spart man sich die VM.
Das geht soweit ich weiß schon eine ganze Weile nicht mehr. Shell befehle können nicht mehr über LUA ausgeführt werden...
Theoretisch müsste die Fibaro Software doch auch auf anderen x86 Systemen Laufen, gibt es da schon versuche ?
Wie ich sehe kann man auch den Arbeitspeicher austauschen, 4GB und mehr sollten wohl möglich sein ?
Weisst du genau welche Atom CPU drin steckt und die Anzahl der kerne ?
Also das Linux auf dem USB Stick kannst du einfach im PC Starten. An sich bringt es aber nicht viel, denn das Z-Wave Modul etc. fehlen und die Software startet nicht komplett... Upgrade auf 4GB geht sicher auch problemlos, ein SLOT ist frei. Nutzen hat es aber eher keinen.
Das Verbaute Mainboard ist meiner Meinung nach dieses:
http://www.intel.de/content/www/de/de/motherboards/desktop-motherboards/desktop-board-dn2800mt.html
Dual Core 1,86 Ghz wäre also die Antwort auf deine Frage. Fibaro schreibt 1,6 Ghz auf der Seite, möglicherweise ist die CPU heruntergetaktet....
Grüße
I've done the above, and when booting up with the USB stick in the PC I can login as root/admin,
When using the same stick in HC2, and SSH'ing to it the password does not work :-(
What am I doing wrong????
Never mind.... I did all the above on the EXTERNAL USB stick.. I should have read better.. It needs to be done on the INTERNAL USB stick :-/ ..... Wie gewonnen, so zerronnen.
I'm trying to redo everything but this time with the internal USB stick.
Unfortunately the stick does not show up in my Windows 10 File explorer (it does get recognized!)
So making an ISO with Win32 Imager does not work as it does not show up in the device option :-(
Any help on this appreciated!
Need to do it with bootable linux version, windows can not handle the file system.
Yahoooo.... I've got root :-)
Thank you for the how to.
Nice to hear :) good luck!
Daniel
Hi,
Thank you very much for this great tutorial. It worked great!
I did it entirely from Linux (Ubuntu) and used command dd to create the backup image and write to a new USB flash thumb drive.
Ove
Ove N,
Yes I also used dd to make the copy (sudo dd if=/dev/sdb of=~/USB_name_image )
Only problem that I have now is that I can not make a backup within HC2 (Configuration > Backup & Recovery)
Not sure if this is a root issue, or an USB one!
Würde das Backup denn auch auf einem Raspberry mit Razberry-Modul funktionieren? Da wäre ja die Z-Wave-Komponente vorhanden.
Oder auf einem x86-Rechner mit Zwave-USB-Modul?
Hat hier schon jemand Erfahrung?
Lacky
Das war auch mein erster Gedanke als ich das hier gelesen habe.
@danielboe
Zitat:
und andererseits möchte ich gern einen Gateway mit API direkt auf die Fibaro installieren. Per USB können dann eigene Funksticks installiert werden und die Steuerung von 433 Mhz oder auch von Open Source Hardware wie MySensors wird möglich. Genauso können wir diverse Protokolle anzapfen. Der MAX! Cube kann dann ohne Umwege direkt mit der HC2 gesteuert werden. Klingt alles nicht schlecht oder?
Zitat Ende
ich würde gerne mehr darüber erfahren???
I have done the above to get root on a clone of the USB stick, but after doing some research on the box once I had root access I would change this process. If you perform the above on a clone of the stick, put the new cloned stick back in to your Fibaro box, log in as root and go in to /usr/bin and execute the command ./led getPassword you will obtain the original root password for your box as it appears to be stored on the daughterboard.
Once you have this if you put your original USB drive back in the the Fibaro or clone the original again on to your memory stick you will now have root with Fibaro's password so no loss (or potential loss) of features as you can logon with the original password set by Fibaro.
It is interesting to note, the "led" app appears to be what controls the GPIO board that Fibaro have placed on to the daughter board within your HC2 originally appearing to be to control the front LED's, this GPIO looks like a ATMega 168 with custom code running and in their is hard coded your serial number, hardware "key" as well as what appears to be the root password for the box (not exactly secure). I worked this app out because I noticed in the Fibaro startup script that they pull this information from the GPIO chip and place it in to the SQL database, I am trying to reverse engineer the daughter board at the moment just for fun :-) I want to dump its memory and see what else I can learn.
So far as I have 2 Fibaro HC2 boxes I have managed to test the following:
Running the entire solution in VMWare - This works successfully and I have even managed to clone the USB key and recovery keys to virtual disks so all that is now running is the single USB connection to the daughterboard for the Zwave and LED controller.
Running the entire solution in VMWare and using a different daughterboard - this worked fine the Fibaro initialised successfully with a different daughterboard without issue, the only issues encountered were due to the device "memory" of the Zwave controller being different so the devices appeared unconfigured but it worked and I added a new device with the controller and it worked fine. I didn't check the serial number though as I had not worked out the LED GPIO information above when I tried this so am going to try this again, my suspicion is that my Fibaro installation serial number and key will change when I change boards.
Some interesting things I noticed...
The internal USB drive is just a USB pass through from the pin header pins 2 and 3 (the data pins) are just direct tracks from the header to the USB port internally so I bypassed the internal board for USB and plugged the USB stick directly in to my server and allocated it to the VM with VMWare without issue.
The recovery stick doesn't seem to be hardware locked to the box as such, it doesn't appear to be acting as a dongle as people suspected using the USB serial number as I read in a few forum posts (the box also worked fine without the key installed). I suspect the recovery stick if it is locked to an installation, is locked when it initially boots by copying the information from the GPIO board and configuring itself to the system it is in, although this might happen at every boot as when I disconnected the daughter board and booted recovery the system did not show its serial number information on the recovery page. More investigation is needed...
I shall carry on my investigations but it is great to be running my Fibaro on VMWare, one less device to have to power :-)
@Jamessss194
Wow.. I've been running John the Ripper on the passwd / shadow file for some time (619 days till today) with no luck.
Your ./led getPassword trick did work perfect.
Please keep posting updates here if you find any nice things :-)
Keep up the good work.
@Jamessss194
Does backup work for you when using a cloned copy of the original HC stick?
The Fibaro IS linux so if doing the VM stuff is too hard so would be the fibaro
We are going to, on the VM:
* add a user with a password
* give the user sudo privileges
Instead of fooling Fibaro's root/passwd. (which has consequences)
copy those entries to fibaro
on the VM (use the GUI or useradd) to add you/yourpasswd
on the VM as root ie in a terminal $ sudo visudo
make an entry like the root one saying your name
now transfer the /etc/password/you and /etc/passwd/shadow/you lines to the fibaro stick
add you as a user then use visudo (on the VM) to give yourself all privileges then update your fibaro stick to be like this
eg using the name daniel
$ sudo nano /media/daniel//etc/passwd
$ sudo nano /media/daniel//etc/shadow
$ sudo cp -a /home/daniel /media/daniel//home
(the spaces are subtle but important)
Put the memstick back in the fibaro, and power it on
if you undo the 2 screws covering the vga connector then you can plug-in a VGA or HDMI cable after the back plate falls off. If you plug-in a usb keyboard - that works
Wow the formatting:
/ is not followed by
there are no entries
slash is not followed by space
there are no slash slash entries
Das ist wirklich interessant! Ein Freund von mir ist seit einigen Jahren Besitzer einer Fibaro HC2. Leider haben wir die Software, also diese Warte-Kringel-Oberfläche, noch nie für besonders benutzerfreundlich gehalten, sodass wir jetzt darüber nachdenken, Home Assistant auf diesem Gerät zu installieren. Dann könnten wir auch Z-Wave Geräte einbinden, die von Fibaro - aus welchen Gründen auch immer - nicht unterstützt werden. Sogar ZigBee würde gehen. Vor allem aber wäre keine neue Hardware notwendig und wir könnten die HC2 weiterverwenden.
Hiho, für die interessierten unter Euch, hier der Python3 code zum Passwort generieren:
import crypt,random,string
pw = crypt.crypt(input('clear-text password: '), '\$6\$' + ''.join([random.choice(string.ascii_letters + string.digits) for _ in range(16)]))
print(pw)
Grüße