Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
lg-webos-kexec — Avvia un kernel Linux personalizzato su TV LG webOS con root tramite kexec, con supporto per il watchdog SoC ricavato tramite reverse engineering, payload per il framebuffer e un flusso di build del kernel con initramfs. | Kitploit
Strumenti/GitHubGitHub/ggfuchsi-oss/lg-webos-kexec
Sicurezza Sistemi EmbeddedReverse EngineeringHacking HardwareSicurezza Hardware e IoTAnalisi del Firmware
GitHubggfuchsi-oss/lg-webos-kexec

lg-webos-kexec

Avvia un kernel Linux personalizzato su TV LG webOS con root tramite kexec, con supporto per il watchdog SoC ricavato tramite reverse engineering, payload per il framebuffer e un flusso di build del kernel con initramfs.

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi
Vedi Repository
64022 giorni faNon ancora revisionato

lg-webos-kexec

Avvia un kernel Linux personalizzato su un TV LG webOS con root via kexec — in RAM, senza bypassare il secure boot.

Stato: lavoro in corso. Un kernel personalizzato può essere caricato e raggiunge lo spazio utente, ma non rimane ancora attivo come sistema operativo utilizzabile.

Target

LG 50UP81009LR (webOS 6.5, Realtek RTD2875, armv7l). Con root tramite Homebrew Channel; kernel firmato di serie e userspace webOS rimangono intatti.

Cosa è stato dimostrato (verificato dal vivo)

  • kexec -l carica un kernel (di serie o compilato da sorgenti); /sys/kernel/kexec_loaded passa a 1.
  • kexec -e sostituisce il kernel in esecuzione (dopodiché la TV si riavvia tornando allo stato di serie).
  • Un kernel compilato da sorgenti raggiunge lo spazio utente — verificato tramite page fault in modalità utente = /sbin/init ha eseguito codice reale.
  • Payload canary minimi scrivono nel framebuffer (accesso ring-0 + display confermato).
  • L'intera catena parte dallo startup.sh di webOS di serie — bootloader firmato / ATF / OP-TEE non vengono mai toccati.

Cosa manca ancora

  • Pet del watchdog — INGEGNERIA INVERSA FATTA + FIX SCRITTO, non ancora provato in un avvio kexec reale. Vedi sotto.

Pet del watchdog — trovato (2026-08-19)

Il reset è dovuto al watchdog del SoC (blocco TC). Il micom_wdt_thread() del kernel di serie lo tiene a bada con tre scritture ai registri (drivers/rtk_kdriver/platform/tv006/intmicom.c):

root@kitploit:~
TCWCR @ 0xFE062204 <- 0xA5         // unlock
TCWOV @ 0xFE062210 <- 0x0FFFFFFF   // max overflow => huge timeout
TCWTR @ 0xFE062208 <- 0x01         // kick

Sotto kexec, la scrittura raw del driver *(volatile*)0xFE062208 = 0x01 finisce su un VA non mappato ed è un no-op silenzioso, quindi il watchdog del SoC scatta (~10–21 s). micom-pet.c ora esegue le stesse scritture dallo spazio utente tramite /dev/mem (CONFIG_DEVMEM=y), che mappa correttamente, più un keepalive 0xB1 a /dev/sys-intmicom come difesa in profondità.

Stato: micom-pet.c riscritto, compila con la toolchain musl, e un test di fumo innocuo di 5 s sulla TV reale ha confermato che viene eseguito e scrive il suo breadcrumb (0x52455814 = "REX"+beat). L'unica prova rimanente è un avvio kexec -e che rimane attivo oltre ~21 s — questo riavvia la TV, quindi è un test con operatore presente.

  • Display — il pannello usa FBDC a tile; il testo raw del framebuffer non è utile. L'output reale richiede la RPC VCPU (comandi di disegno al motore video).
  • Rete — il vermagic del modulo wlan di serie deve corrispondere a CONFIG_LOCALVERSION="" per caricarsi; non ancora collegato all'initramfs.

Come funziona (versione onesta)

root@kitploit:~
boot ROM → ATF → signed LG kernel (~2 s) → startup.sh
    → kexec -l <our zImage + dtb + initramfs>
    → kexec -e
    → OUR kernel runs in RAM (no eMMC writes)

Stacca la corrente = torna di serie. Non può brickare.

Creato con l'AI (trasparenza totale)

La maggior parte di questo repo è stata messa insieme da Rex — un'istanza di agente di codifica AI — che aiuta un umano a operare sulla propria TV, nel proprio salotto. L'AI ha scritto il PoC kexec, la catena di boot, i canary del framebuffer e questi resoconti di reverse engineering. Ma le affermazioni in questo README sono state fatte solo dopo che l'umano ha acceso la TV, guardato lo schermo e confermato. Se un'affermazione non è supportata da un controllo reale su schermo/foto/uptime dell'hardware, non è qui.

Nessuna TV è stata brickata durante la creazione di questo repo. Alcune sono state temporaneamente confuse (un kernel kexec senza pet del watchdog riavvia il dispositivo dopo ~15 s), poi sono tornate allo stato di serie con un ciclo di alimentazione. /tmp viene cancellato a ogni reset, quindi la TV dimentica tutto ciò che abbiamo fatto — è proprio questo il punto.

Struttura del repo

  • rexos/ — il sistema operativo personalizzato: hook di boot, build del kernel, initramfs, stub RexBus.
  • kexec-poc/ — la prova di concetto solo-caricamento + payload canary per il framebuffer.
  • docs/ — resoconti di reverse engineering (boot/security, caricamento app SAM, mappa delle surface, schema luna2).

Verifica tu stesso (ti serve la TV esatta: 50UP81009LR, con root, sulla LAN)

Questi passaggi riproducono ciò che abbiamo fatto, sull'hardware esatto. Niente è finto.

0. Prerequisiti

  • LG 50UP81009LR, con root tramite Homebrew Channel, SSH di root abilitato, sulla tua LAN.
  • Qui sotto la TV è 192.168.2.103 di default; modifica se la tua è diversa.
  • Albero dei sorgenti del kernel GPL K7LP LG (una tantum): imposta KERNEL_SRC=/path/to/linux-4.4.3 (scarica il tarball GPL K7LP 03.53.45 dall'open-source LG), oppure crea un symlink ~/lgtv-toolkit/kernel-src/kernel/linux-4.4.3.

1. Compila la toolchain + kexec statico (TV non necessaria, ~2 min)

root@kitploit:~
git clone https://github.com/ggfuchsi-oss/lg-webos-kexec
cd lg-webos-kexec/kexec-poc && ./build.sh

Previsto: un binario ARM statico kexec in kexec-arm (168K, file mostra ELF 32-bit LSB ... ARM ... statically linked).

2. Riproduci il PoC sicuro sulla tua TV (carica e scarica — nessun avvio)

root@kitploit:~
cd ../kexec-poc
./run-poc.sh 192.168.2.103 ~/.ssh/tv_key

Risultato atteso:

root@kitploit:~
staged before      : 0
staged after load  : 1   <- kernel accepted, DTB wired, segments allocated
staged after unload: 0   <- cleared, TV untouched

Questo carica il kernel attuale della TV tramite kexec e poi lo scarica immediatamente. /sys/kernel/kexec_loaded passa a 1 e poi torna a 0. Nessun riavvio, nessun cambio di kernel, nulla persiste. Stacca la spina = stato di serie.

3. (Con operatore) avvia il tuo kernel — riavvia la TV

Fallo solo con la TV accesa e qualcuno presente:

root@kitploit:~
cd ../rexos
make                            # builds rexos-kernel.zImage + rexos-initramfs.cpio.gz into out/
./boot/rexos-kexec --load-only   # stage, do NOT fire (same safe state as step 2)
# then, when ready to actually jump:
./boot/rexos-kexec               # kexec -e -> our kernel runs in RAM (TV will reset)

Avvertenze oneste note al punto 3 (non sono bug che nascondo):

  • Dopo kexec -e, il nuovo kernel raggiunge lo spazio utente ma la TV si riavvia dopo ~10–21 s perché il watchdog micom/SOC non viene kickato. Questo è il muro attuale, non un bug di crash. rexos/initramfs/micom-pet.c è il demone che dovrebbe risolvere il problema (lo sto ancora collegando).
  • Il display è FBDC a tile — non c'è console di testo; solo segnali di colore pieno (vedi kexec-poc/canary/). La grafica reale richiede il percorso RPC VCPU (non fatto).
  • Un kernel/DTB sbagliato causa solo schermo nero fino al ciclo di alimentazione. Non può brickare: kexec scrive solo in RAM, mai in eMMC.

TL;DR sullo stato (onesto)

  • Primitiva di caricamento/esecuzione del kernel: provata (punto 2). ✅
  • Avvio del kernel personalizzato + raggiungimento dello spazio utente: provato (punto 3). ✅
  • Resta attivo come sistema operativo utilizzabile: non ancora — watchdog e display sono i muri rimanenti. ⏳

Dipendenze (sii onesto su ciò che è esterno)

Questo repo contiene sorgenti + documentazione + gli input di build catturati dalla TV (.config del kernel, modulo wifi + firmware, librerie rootfs), ma non l'albero dei sorgenti del kernel GPL K7LP LG di ~390 MB — spetta a LG distribuirlo, non a noi ri-ospitarlo.

make fallirà con un chiaro KERNEL_SRC missing se l'albero del kernel non è presente — non esiste una mezza build silenziosa.

Novità / precedenti

Per quanto ne sappiamo, questo è il primo avvio pubblico di un kernel personalizzato basato su kexec per un TV LG webOS. Le primitive (kexec, webOS con root, RTD2875) sono tutte note singolarmente; l'applicazione a questo TV consumer bloccato sembra essere nuova. Non stiamo sostenendo di aver bypassato il secure boot — lo aggiriamo.

Licenza

GPL-2.0 (lavoro sul kernel; il sorgente GPL del kernel LG è GPL). I nostri script sono compatibili con la GPL. Vedi CREDITS per l'attribuzione upstream.

Scarica lo strumento
dipendenzacome ottenerla
LG K7LP GPL linux-4.4.3 (RTD2875)sito opensource LG → tarball GPL K7LP 03.53.45 → kernel
toolchain cross armv7 musl (~98 MB)scaricata automaticamente da kexec-poc/build.sh (autocontenuta)
Una TV con root (50UP81009LR)servita la prima volta solo per catturare .config — ma quella config ora è committata in rexos/kernel/rexos-tv.config, quindi un clone compila offline