Elég népszerű a kamerahackelés az utóbbi években. Szóval felültem a vonatra, annyi eltéréssel, hogy nem egy kémeszköz került ki valakihez, hanem meg kellett (volna) javítani egy ilyen izét. A módszerek viszont hasonlóak.
Ez a Fülöpsz M120D/10 bébikamera elég aluldokumentált. Nagyjából nem találni róla semmit. A tulaj macskamegfigyelésre szerette volna befogni, ha már otthon kallódott évek óta (2016-os cucc amúgy, az oprendszere meg még régebbi), de csak egy sárga fényt kapott az előlapon.
Első lépésként egy használati utasítást kellett kitúrni, meg egy appot hozzá (Play-en nem látszott, lehet még fent van, de az újabb eszözökhöz már nem jelenik meg). A használati elég szűkszavú, de legalább benne van, mit jelent a LED az elején. Sárgán világított, azaz éppen bootolt. Mondjuk bármeddig sárga volt, tehát valószínű volt, hogy nem ezt kéne csinálnia (Sárga=bootol, sárga villog=indul a kameraszerver/állítsd be az appból, zöld villog=csatlakozás hálózatra, zöld=csatlakozva. Piros=hiba.)
Az alkalmazást külön macera volt telepíteni, mert újabb Androidokra nem települ, csak Adb-n át a adb install --bypass-low-target-sdk-block In.Sight+.apk
parancssal. És el is lehet felejteni, mert a wifi nevéhez nem tud hozzáférni, így nem lehet beállítani a kamerát. Egy Android 6.0-s eszközön simán települt és működött is, csak a kamerát nem érdekelte, hogy milyen QR kódot generál neki az alkalmazás. (Amúgy újabb Droidokon csak a beállítás nem megy, ha egy másik eszközön felvettük a kamerát, az az összesen nézhető, amin be vagyunk jelentkezve az alkalmazásba.)
Szétszedve a kamerát (4 csavar az alján, kipattintani a fém talpat, felszedni a szürke fóliát) feltűnt egy GND RX TX felirat. Soros port, azzal már lehet kezdeni valamit! A tápja USB (mini USB), de azon át nem lehet vele kommunikálni.
Sorosssss
...soros.
Kapott 3 vezetéket a sorosra, 115200 bauddal kommunikál, szépen látszott a boot az Arduino soros monitorán. Linux fut rajta, nem meglepő módon, mert a proci egy ARM alapú Ambarella A5S. Hopp, no space left on device. (A device amúgy egy Ubifs-el működő flash.)
Némi Google után kiderült, hogy az init=/bin/sh hack ezen is működik. Volt kis bénázás a setenv-el, mert ez a valószínűleg U-Boot származék bootloader nem egészen úgy várja, mint a többi. Tehát :
setenv cmdline console=ttyS0 ubi.mtd=lnx root=ubi0:rootfs rw rootfstype=ubifs init=/linuxrc lpj=2392064 snd_soc_core.pmdown_time=500 init=/bin/sh
reboot
Tehát nem tudsz csak úgy bootolni, hanem beállítani a cmdline-t, és utána újraindul, már azzal, amit kapott. Nagyon elmés. Később ez azért volt macera, mert ilyen hosszú sorokban állandóan hibázott a soros átvitel, és random maradtak ki karakterek. Tehát addig kellett bemásolgatni, amíg az echo-n nem látszott, hogy jól ment át
Bootol
És ott a root shell!
Ezután már egyszerű volt nek tűnt. A /opt/default-ban van egy .tgz file, az az alkalmazás. Ez nem szabad bántani. A /opt/ivideon-ba van symlinkelve, oda a videoserverd-be bontja ki magát. Volt mellette még egy update .tgz file, ami szemmel láthatólag felesleges. Töröltem, és a következő boot már rendben lement. Láthatólag elindult az iVideon szerver.
Ilyen, amikor normálisan indul (és a Putty beállítás is egyúttal)
Az alkalmazásból generáltam egy QR kódot, meg is ette, szépen elkezdett zölden villogni, aztán folyamatos zöld, tehát fent volt a wifin. Volt IP-je is, az alkalmazásból lehetett nézni. Ennyi is lett volna a történet. Deszépislettvó'na.
Az alkalmazásban így látszik
1-2 újraindítás, minden jó, leszedtem a sorost, úgy is elindult, rakjuk össze. Azután pedig egy sárga fény következett. Hogy mi van.
Elindult
Szétszed. Soros visszaköt. No space left on device. 4k maradt. (Ilyenkor a Pulseaudio indításakor maga a boot is megáll.)
Nézegetés, a /opt/ivideon/videoserverd
törölhető, hiszen abba csomagolja ki a 6MB-os szervert. (A flash 128MB, a rootfs 52 körül.) Töröl, lett 3,6MB hely. Az kicsit kevés. De amúgy pár KB hiányzott ahhoz, hogy lefusson a kicsomagolás. És mindig csak pár K hiányzott, akármit töröltem előtte.
Reboot, elindult rendben. 740k szabad. De akkor miért nem volt hely az előbb?! És hogyhogy most van?
A biztonság kedvéért azért még akartam egy root jelszó cserét, hogy rendesen szét lehessen nézni (a hackelt root shellből csomó mindent nem húz fel, mintha rendes filerendszer se lenne, de azért írni lehet ). Az alapérték root:24e8UjXhE3Cls:15874:0:99999:7::: , de amúgy mindegy, mert ezt a jelszót nem eszi meg
(És tippre nincs is hashelve.) Egy
passwd root
után egy /bin/sh -s
shellből már jó volt. SSH is lett, mert SSH szerver van, de csak a localhoston figyel. Nagyon értelmes. A /etc/sshd_config
-ba kell egy Passwordauthentication yes
, meg a végén a ListenAddress-t 0.0.0.0
-ra. (Előtte törölni kell a /tmp/ -ből a sshd lockfile-ját, és kilőni a sshd-t.) Érdemes nem a rootot használni SSH-hoz, tehát pl. a default usernek is lehet adni jelszót.
Ez ugye még pár újraindítás volt, és teljesen jól viselkedett, összeraktam, szintén jó volt. Innentől már be lehetett menni SSH-n is, és mivel be volt állítva a wifi, még akkor is bejutottam, amikor legközelebb elfogyott a hely , és jött a sárga lámpa.
De mi a franc ette meg a helyet? Na erre nem jöttem rá. Tippre valamilyen Ubifs hülyeség lehet, de teljesen érhetetlen, mert a filerendszer mérete nem változik, de ugyanazt az archívot kicsomagolva vagy van elég hely, vagy nincs. Amikor legközelebb sikerült kicsomagolni a szervert, akkor már csak 260k szabad hely volt (korábban meg ugye 740... meg egyszer volt 360k is). A .tgz-t nem érdemes törölni, mert a kamera resetje esetén onnan csomagol ki. (Illetve volt még egy hangteszt .wav, amit láthatóan semmi nem használ, az 2MB.)
A vége az lett, hogy eltűnt a /etc/init.d/S95ivideon file tartalma, ami tkp. a szervert indítja. Hogy mitől, az elég nagy kérdés, mert egy normálisan működő filerendszerről nem szoktak eltűnni dolgok (pláne nem csak a tartalmuk).
Mondjuk ezután legalább az OS elindul, mert nem csomagolja ki a szervert, és nem fogy el a hely Csak hát kamerának nem jó így.
Természetesen firmware, vagy bármi nem található ehhez a cucchoz, illetve ami van, az konkrétan ugyanannak a .tgz file-nak az újabb verziója. Korábban a telefonos alkalmazásból is megpróbáltam frissíteni a szervert, de nem működött (találós kérdés, hogy vajon miért
igen, elfogyott a hely
)
Kár érte, még akkor is, ha macskamegfigyelésre nem lett volna jó, mert amúgy csak helyi hálón működik az egész cucc, ami különben nem rossz dolog. Ez egy bébiőr kamera eredetileg, semmi értelme, hogy távolról lehessen nézni. Mindenesetre rendkívül bosszantó, hogy ilyen kevésen múlt a használhatóvá tétele.
További észrevételek :
- Pár port nyitva van a kamerán (volt még egy 3010 is asszem vagy 3001). A webfelületen jelszót kér. Ez vagy a /etc/lighttpd.conf -ban levő, vagy a /etc/webpass.txt -ben. (A webpass.txt-ben legalább hashelve vannak, rá sem jöttem, hogy mi a jelszó Visszafejtős oldalak sem tudták azonosítani.)
Starting Nmap 7.95 ( https://nmap.org ) at 2025-08-15 19:38 CEST
Nmap scan report for Philips-InSight.lan (192.168.3.16)
Host is up (0.053s latency).
Not shown: 996 closed tcp ports (conn-refused)
PORT STATE SERVICE
22/tcp open ssh -> ez alapból nincs ugye
80/tcp open http
443/tcp open https
9090/tcp open zeus-admin
Nmap done: 1 IP address (1 host up) scanned in 2.53 seconds
- A SSH szerver borzalmas buta, a jelszó végét lehagyva beenged
- A "default" usernek alapból nincs jelszava
- A Ubifs mountolása mount -t ubifs ubi0:rootfs
/valahova (mondjuk a /-re)
- Nem meglepő, hogy shell script hegyekkel működik az egész kamera, de az OS tele van ott hagyott tesztfile-okkal, stb.
- Brutálisan melegszik, pár óra után nem hogy a fém hűtés forró az alján, hanem az egész kamera
Felhasznált oldalak :
https://blog.includesecurity.com/2014/04/reversing-the-dropcam-part-2-rooting-your-dropcam/
https://github.com/santeri3700/opticam_o8_hacking
https://defcon.org/images/defcon-22/dc-22-presentations/Moore-Wardle/DEFCON-22-Colby-Moore-Patrick-Wardle-Synack-DropCam-Updated.pdf
https://www.tom-it.nl/gaining-root-access-on-philips-b120n-babycam/
iVideon szerver file-ok (az utolsó linkről) :
http://philips.iv-cdn.com/b120/fw_updates_release.tar.gz
http://philips.iv-cdn.com/b120/ivideon-server_release_philips-m120.tar.gz