2024. április 19., péntek

Gyorskeresés

LG webOS TV hekkelés - I. rész

Írta: | Kulcsszavak: webOS . LG . root . kodi . beágyazott esszköz

[ ÚJ BEJEGYZÉS ]

Az okostévék piaca egy nagyon zárt világ a tapasztalataim szerint. De ma már az ember nehezen ússza meg, hogy új TV vásárlásakor ne smart TV-be ruházzon be. Igen ám, de az okos TV fogalma meglepő módon 2021-ben is kimerül azzal, hogy a TV-d felmegy az otthoni wifire, telepíthetsz rá pár előre megírt alkalmazást és esetlegesen az adott TV keretrendszerét kihasználva fejleszthetsz rá újabb alkalmazásokat. Ennyiben viszont ki is merül a tudomány. Ennek ellenére vannak modellek, amelyek egészen használhatóak Netflixezni stb.

Így történt, hogy én is utánanéztem a lehetőségeimnek az okos TV fronton. A Samsung TV-ket azonnal ki kellett zárnom, mivel az általuk futtatott Tizen OS-ra még nem létezett Jellyfin/Emby kliens, ami saját médiák lejátszásánál jól jönne. A Sony Braviakról nem hallottam ekkoriban sokat, de több fórumon is azt olvastam, hogy külsős appoknak nem is engedi a hardveres gyorsítást médialejátszás közben, tehát egy Plex például igencsak nehézkesen boldogulna meg egy 4K-s tartalommal. Maradt egy harmadik nagyobb gyártó, az LG, akik szintén elkövettek pár ármányt az elmúlt évek során (pl a DTS támogatás kivétele 2020 utáni modelleknél), de ez még elfogadható korlátozásnak tűnt a többi gyártóval szemben. Így esett a végső választás egy LG TV-re.

Ez az LG TV egy évet szépen le is húzott a lakásban, azonban az anomáliák 2021 szeptemberében kezdődtek, amikoris lejárt a Let's Encrypt tanusítvány és a gyártó a mai napig nem adott ki szoftverfrissítést, hogy ezt a problémát orvosolja. Ez annyit jelent, hogy a TV böngészőjében egyetlen Let's Encrypt kulccsal titkosított weboldalt sem tudunk meglátogatni, de ez még számomra nem is lenne olyan nagyon nagy trauma. Azonban a Plex szerverek is ilyen kulcsokat használnak, így az egy éves TV-n egyik pillanatról a másikra volt-nincs Plex.

Nyilván megoldás lett volna a kliensben engedélyezni a titkosítatlan kapcsolatokat, de azt semmiképp nem akartam, hogy titkosítás nélkül streamelje a Plex a távoli szerverről haza a családi videókat.

Így azt a megoldást választottam, hogy várok, hátha az LG frissíti a tanúsítványokat egy még garanciális termékén. Nos, hát nem így történt. Viszont a napokban belefutottam egy LG webOS rootolási megoldásba, aminek a lényege, hogy egy jó pár exploit segítségével gyakorlatilag 2 gombnyomás segítségével be lehet jutni a TV lelkébe és szabadon garázdálkodni rajta. Annyit kell tenni, hogy az ember felmegy a https://rootmy.tv/ oldalra a TV böngészőjével, megnyomja a távirányító ötös gombját és már települ is a homebrew channel, ahonnan többek között root ssh-t is lehet nyitni.

Érdekes módon az LG ezen exploitok kikerülését követően azonnal kiadott egy frissítést a legtöbb modelljére, ami megakadályozta a bejutást. Ez érthető, hiszen egy támadónak csak annyit kellene tennie, hogy bejut az otthoni wifi hálózatra, ahol a TV is van és azonnal teljesen átveheti a kontrollt a TV felett. Azt már kevésbé tudom megérteni, hogy ha már kiadták a frissítést, miért nem tudták a tanúsítványokat is frissíteni, de megértem. Az LG-nek az az érdeke, hogy az emberek új TV-t vegyenek, ha nem mennek az alkalmazások, amire remek alkalmam lenne nekem is.

Ugyanakkor szerencsére a TV-m nem frissítettem jó ideje, így sikerült rootolni az eszközt, majd az első dolgom volt a következő szkript segítségével frissíteni a certet: [link]. Ezt követően csodák csodájára újra elindult és működött a Plex és minden weboldal újra. Fordítottam egy wireguard modult is a TV-re, ami szintén csodásan teszi a dolgát és a segítségével közvetlenül a TV képes VPN-ezni. Illetve körülnéztem a rendszeren.

Mint kiderült egy 4.4.84-es kernel alapú linux rendszer fut a vason. Ami viszont igazán meglepett, hogy a grafikus felületet a zárt moduljaikkal karöltve a desktop rendszereken jól ismert Wayland szerver futtatja. Ezen a ponton határoztam el, hogy márpedig nekem Kodi fog futni a TV-men.

Mivel a korábbi wireguard VPN-es próbálkozásaim eredményeképpen volt szerencsém hozzájutni a kernel forrásokhoz, az volt a tervem, hogy készítek egy módosított kernelt, amit szépen betöltök a TV-n. Azonban mint kiderült a TV hardveresen ellenőrzi a bootloader aláírását, azaz ezt módosítva tégláztam a TV készüléket. A fájlrendszert módosítva pedig a bootloader nem fogja többé soha betölteni a rendszert, így szintúgy tégláztam a TV-t. Tehát ahhoz, hogy nekem egyedi kernel futhasson a TV-n, először mindenképpen meg kell várnom, hogy az eredeti rendszer elinduljon és túljussunk a bootloaderen. Utána pedig egy kexec hívással be tudnám tölteni az új kernelt.

Itt két akadályba ütköztem. Az első a következő:

[mrdini@hal-9000 kernel]$ cat ./.config | grep KEXEC
# CONFIG_KEXEC is not set

A kernel nem támogatja gyárilag a kexec hívást, amivel a futó rendszert újra tudnám indítani egy egyedileg fordított kernelre. Semmi gond, létezik ez a projekt: [link]. Azonban ezt telepítve a TV-re, majd az új kernelbe bootolva fekete képernyőt kapok csak és rebootol a TV. Úgy tűnik az LG itt is gondolt a drága userekre, akik szeretnék ténylegesen felokosítani a TV-jüket és egy tvservices névre hallgató userspace alkalmazást is telepített a TV-kre, amelynek futását egy hardveres watchdog figyeli, és ahogy ezt kilőjük, azonnal újraindul a TV. Érdekes módon, ha debug módba rakjuk a TV-t, akkor ez a watchdog nincs jelen, így ez a probléma áthidalható, bootolható az egyedi kernel. :C Minden működik, ahogy kell, csak okosabb lesz a TV, mint amennyire okos már eddig is volt. :D

Amire még felfigyeltem, az az orbitálisan nagy load average állandóan a rendszeren. Konkrétan az én modellemben egy 4 magos ARMv7 CPU van, ami állandóan 6-7 es load alá van helyezve. Kis körülnézés után találtam rá a miértre, van 2 zombie folyamat, aminek az égvilágon semmi haszna, feltehetően az LG fejlesztői vagy szándékosan, vagy véletlenül, de nagyon durván elbaltáztak valamit, aminek az eredményeképp ez a folyamat rommá terheli a ketyere processzorát, aminek következményeképp a TV minden induláskor kb 1.5x annyi áramot fogyaszt, mint amúgy kéne neki és lassabb is az egész felhasználói élmény. Kis kutatás után rájöttem, hogy a webos-bluetooth folyamat bugos a rendszeremben, amit a beállításokban letiltva, vagy ssh-n kilőve megint gyors a TV, mint régen.

Ezeken végigjárva végre elérkezett a pillanat a Kodira térni! Bár létezik egy remek toolchain a TV-kre, ezekkel nem igazán sikerült GUI-s appokat fordítani, mivel ehhez az kéne, hogy a rendszerfájlokat is lássa a fordító, amit nyilván nem lehet egy cross compile környezetben egyszerűen meegoldani. Így jött az ötlet, hogy kinyerem a TV rendszerét, fordítok hozzá a toolchain segítségével natív gcc-t, majd az aarch64 szerveremen chrootból fogok mindent fordítani. Sajnos az aarch64 alapú fedorám nem volt képes arm soft float binárisokat futtatni:

[root@fedora rootfs]# LD_LIBRARY_PATH=$PWD/lib chroot . /bin/bash
Segmentation fault

És miután meggyőződtem róla, hogy ez nem a processzor hibája, hanem a Fedora kernelé, kipróbáltam ugyanezt egy friss ubuntu telepítést követően:

root@buildah:/home/ubuntu/rootfs# LD_LIBRARY_PATH=$PWD/lib chroot . /bin/bash
/ # cat /etc/os-release
ID="webos"
NAME="webOS OSE"
VERSION="1.0.g"
VERSION_ID="1.0.g"
PRETTY_NAME="webOS OSE 1.0.g"
/ #

Innen pedig folyt. köv., lassan kifogyok a tintából. :B

Hozzászólások

(#1) Luck Dragon

“” LG fejlesztői vagy szándékosan, vagy véletlenül, de nagyon durván elbaltáztak valamit,””

Inkább a szándékosság az ami itt játszik , anno a Philips ambilight vagy wi-fi modulnál is tetten érhető volt hasonló jelenség .

A káosszal teremtek rendet. Philips & TPvision primary visitor. Philips Design line.

(#2) MBazsee


MBazsee
tag

Köszönöm az írást. Nekem is LG TV-m van, de még nem tapasztaltam ilyen bugokat.
Várom a folytatást! :R

Esetleg a műsorújság lassúságára nincs valami megoldásod?

(#3) #90088192 válasza MBazsee (#2) üzenetére


#90088192
törölt tag

Alternatív megoldás: pálinka lassban tudsz majd tőle olvasni. :DD

(#4) fo_di


fo_di
őstag

egyébként a Plex a helyi hálózaton közvetlen a szerveredről húzza a családi videóidat, nem a Plex szerverein keresztül (az csak a kézfogást bonyolítja és delegálja a feladatot a saját szerverednek, hogy direktben küldje a TV-nek az adatfolyamot), így elvileg megengedhető lehet a biztonságos kapcsolat hiánya, de elég gáz, hogy lejárt a rootcert, és élettartam végén már nem küldenek ehhez újabb tanúsítványt

(#5) Mr Dini válasza Luck Dragon (#1) üzenetére


Mr Dini
addikt
LOGOUT blog

Hát, lehet ilyesmiről van szó. Én már nem feltételezek semmit, mint a jó bárány hallgatok, aztán kilövöm. Azóta tényleg hihetetlen gyors a TV... :D

(#2) MBazsee

Ilyenről még sajnos nem hallottam, mivel itt set top box-szal kapja a kábeltv-t. Esetleg a jövő héten utánanézhetek, de nem hiszem, hogy lesz rá megoldás. Sajnos minden ilyen LG-s beépített csoda zárt forráskódú.

Egyébként a hiba mindig jelentkezik, vagy csak akkor, amikor először nyitod meg az EPG-t? Mert ha ez a helyzet, lehet szimplán csak lassan szedi össze a tuner az adást... Meg milyen műsor ez, mezei földfelszíni DVB-T?

(#4) fo_di

Hát naná. Helyi hálózaton a kutyát nem érdekelné, hogyan vándorol az adat. De a Plex szerver nem helyi hálón van nálam, hanem a messzi Németországban egy Hetzner datacenterben. Onnan, mire hazavándorol az adat, átmegy pár routeren...

De ahogy írod is, az a felháborító, hogy egy éves TV-t is már így magára hagynak. Alig várom, hogy a Netflix is így járjon és legyen egy buta TV-m 6 éven belül, amit el se lehet adni.

Hogy hívják az éhes horgászt? Gyere Pista, kész a kaja!

(#6) zsolt501 válasza fo_di (#4) üzenetére


zsolt501
nagyúr

A rootcert hiba nem CSAK az LG tv-t érinti ugyan ez a hiba van nálam Samsung TV-vel is, sajnos nem mai darab, és már erre sem jön újabb plex verzió, itt is már csak a titkosítatlan adatátvitel megy távoli szerverrel, titkosítással hibára fut.

''Mind Így van ezzel aki hasonló időket megélt, de a döntés nem rajta állt neked csak arról kell döntened mihez kezdj az idővel amely megadatik.''

(#7) Lenry


Lenry
félisten

háhh!
imádom az ilyen projekteket, várom a folytatást :R

Gvella Glan! | There are two types of people: Those who can extrapolate from incomplete data

(#8) lajosdani2


lajosdani2
csendes tag

Köszi a bejegyzést, hiánypótló!
Nekem is LG tv-m van, és nem nagyon találtam még a hackelésével kapcsolatos oldalakat, főleg nem magyar nyelven.
Nálam nincs bekötve kábeltévé, csak a sima utp, és mindent interneten nézünk róla. Plexet nem használok, de a Youtube alkalmazás eléggé irritál, hogy nem tudom kilőni a reklámokat belőle.
Telefonon simán megoldja egy Youtube Vanced, de a TV-n eddig nem találtam megoldást rá. (mármint ingyenest, tudom, hogy elő lehetne fizetni premiumra, de azt most hagyjuk :) ) És ha telefonról irányítom át a Vanced-en nézett videót a TV-re , akkor is beleteszi a reklámokat a TV, mert ugye azon csak sima YT alkalmazás van.
Szóval ha valakinek van ilyennel tapasztalata, hogy Root után reklámmentesíteni lehet az LG tévét, azt szívesen meghallgatnám, mert nagy reményt adna :D

(#9) zsolt501 válasza lajosdani2 (#8) üzenetére


zsolt501
nagyúr

Milyen érdekes ugyan ezt tapasztaltam Samsung esetén is a Youtube alkalmazással a tv-n 1-2 percenként pakolta a tv-re a reklámokat, szó szerint nézhetetlenné tette az eredetileg megnézendő videót a 10 percnél fel is adtam, ráadásul teljesen érdektelen reklámokat tolt, ami nem is a témához illett, és még nem is az én érdeklődési köröm...
Nálam eléggé elrúgta a pöttyöst a cég.
Én nagyon sok mindent megértek a cégek részéről, hogy valamiből meg kell élni, és profitot kell termelni, de kissé átestek a ló túloldalára, és ez a hozzáállás eléggé kontraproduktív lesz, ha így folytatják.

''Mind Így van ezzel aki hasonló időket megélt, de a döntés nem rajta állt neked csak arról kell döntened mihez kezdj az idővel amely megadatik.''

(#10) Mr Dini válasza lajosdani2 (#8) üzenetére


Mr Dini
addikt
LOGOUT blog

Szia!

Ha rootolod a TV-t a rootmy.tv meglátogatásával, akkor felkerül a homebrew channel. Le kell gyalulni a gyári youtube appot és a homebrew channelben lévő reklámmentesített youtube-ot kell felrakni. Ez ugyanúgy néz ki, mint a gyári, a screencast is megy rajta, viszont nincsenek reklámok és van sponsorblock.

Viszont elképzelhető, hogy a TV-t előtte downgradelni kell régebbi rendszerre.

Hogy hívják az éhes horgászt? Gyere Pista, kész a kaja!

További hozzászólások megtekintése...
Copyright © 2000-2024 PROHARDVER Informatikai Kft.