Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
lg-webos-kexec — Arranca un kernel Linux personalizado en televisores LG webOS rooteados mediante kexec, con soporte de watchdog de SoC obtenido mediante ingeniería inversa, payloads de framebuffer y un flujo de compilación de kernel con initramfs. | Kitploit
Herramientas/GitHubGitHub/ggfuchsi-oss/lg-webos-kexec
Seguridad de Sistemas EmbebidosIngeniería InversaHacking de HardwareSeguridad de Hardware e IoTAnálisis de Firmware
GitHubggfuchsi-oss/lg-webos-kexec

lg-webos-kexec

Arranca un kernel Linux personalizado en televisores LG webOS rooteados mediante kexec, con soporte de watchdog de SoC obtenido mediante ingeniería inversa, payloads de framebuffer y un flujo de compilación de kernel con initramfs.

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir
Ver Repositorio
611hace 1 díaAún no revisado

lg-webos-kexec

Arranca un kernel Linux personalizado en un TV LG webOS rooteado mediante kexec — en RAM, sin bypass de arranque seguro.

Estado: trabajo en curso. Un kernel personalizado puede prepararse y llega al espacio de usuario, pero todavía no se mantiene activo como un SO utilizable.

Objetivo

LG 50UP81009LR (webOS 6.5, Realtek RTD2875, armv7l). Roteado mediante Homebrew Channel; el kernel firmado de serie y el espacio de usuario de webOS quedan intactos.

Lo que está probado (verificado en vivo)

  • kexec -l prepara un kernel (de serie o desde el código fuente); /sys/kernel/kexec_loaded pasa a 1.
  • kexec -e reemplaza el kernel en ejecución (el TV se reinicia y vuelve al estado de serie después).
  • Un kernel desde el código fuente llega al espacio de usuario — verificado por fallos de página en modo usuario = /sbin/init ejecutó código real.
  • Pequeños payloads canarios dibujan en el framebuffer (acceso a ring-0 y a la pantalla confirmado).
  • Toda la cadena se ejecuta desde el startup.sh de webOS de serie — el bootloader firmado / ATF / OP-TEE nunca se tocan.

Lo que aún falta

  • Watchdog pet — INGENIERÍA INVERSA REALIZADA + CORRECCIÓN ESCRITA, aún no probado en un arranque kexec real. Ver más abajo.

Watchdog pet — encontrado (2026-08-19)

El reinicio es el watchdog del SoC (bloque TC). El micom_wdt_thread() del kernel de serie lo mantiene a raya con tres escrituras en registros (drivers/rtk_kdriver/platform/tv006/intmicom.c):

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

Bajo kexec, el *(volatile*)0xFE062208 = 0x01 crudo del driver cae en una VA sin asignar y es un no-op silencioso, por lo que el watchdog del SoC se dispara (~10–21 s). Ahora micom-pet.c hace las mismas escrituras desde el espacio de usuario mediante /dev/mem (CONFIG_DEVMEM=y), que mapea correctamente, más un keepalive 0xB1 a /dev/sys-intmicom como defensa en profundidad.

Estado: micom-pet.c reescrito, compila con el toolchain musl, y una prueba de humo benigna de 5 s en el TV en vivo confirmó que se ejecuta y escribe su marca (0x52455814 = "REX"+beat). La única prueba restante es un arranque con kexec -e que se mantenga activo más allá de ~21 s — eso reinicia el TV, así que es una prueba supervisada.

  • Pantalla — el panel usa FBDC en mosaico; el texto crudo del framebuffer no es útil. La salida real necesita el VCPU RPC (comandos de dibujo al motor de vídeo).
  • Red — el vermagic del módulo wlan de serie debe coincidir con CONFIG_LOCALVERSION="" para cargar; aún no integrado en el initramfs.

Cómo funciona (versión honesta)

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)

Quitar la corriente = estado de serie. No puede brickear.

Construido con IA (divulgación completa)

La mayor parte de este repo fue creada por Rex — una instancia de agente de codificación de IA — ayudando a un humano a operar su propio TV, en su propia sala de estar. La IA escribió el PoC de kexec, la cadena de arranque, los canarios de framebuffer y estos análisis de ingeniería inversa. Pero las afirmaciones de este README solo se hicieron después de que el humano encendiera el TV, mirara la pantalla y lo confirmara. Si una afirmación no está respaldada por una comprobación real de pantalla/foto/uptime del hardware, no está aquí.

Ningún TV fue brickeado en la creación de este repo. Algunos quedaron temporalmente confundidos (un kernel kexec sin watchdog pet reinicia tu caja después de ~15 s), y luego volvieron al estado de serie al reiniciar. /tmp se borra con cada reinicio, así que el TV olvida todo lo que hicimos — ese es el punto.

Estructura del repo

  • rexos/ — el SO personalizado: hook de arranque, compilación del kernel, initramfs, stub de RexBus.
  • kexec-poc/ — la prueba de concepto solo de carga + payloads canarios de framebuffer.
  • docs/ — análisis de ingeniería inversa (arranque/seguridad, carga de apps SAM, mapa de superficies, esquema luna2).

Verifícalo tú mismo (necesitas el TV exacto: 50UP81009LR, rooteado, en tu LAN)

Estos pasos reproducen lo que hicimos, en el hardware exacto. Nada está falsificado.

0. Requisitos previos

  • LG 50UP81009LR, rooteado mediante Homebrew Channel, SSH root habilitado, en tu LAN.
  • El TV es 192.168.2.103 por defecto abajo; edítalo si el tuyo difiere.
  • Árbol de código fuente del kernel LG K7LP GPL (una sola vez): establece KERNEL_SRC=/path/to/linux-4.4.3 (descarga el tarball GPL K7LP 03.53.45 desde el open-source de LG), o crea un symlink ~/lgtv-toolkit/kernel-src/kernel/linux-4.4.3.

1. Compila el toolchain + kexec estático (sin necesidad de TV, ~2 min)

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

Esperado: un binario ARM estático kexec en kexec-arm (168K, file muestra ELF 32-bit LSB ... ARM ... statically linked).

2. Reproduce el PoC seguro en tu TV (carga y descarga — sin arranque)

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

Resultado esperado:

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

Esto prepara el propio kernel actual del TV mediante kexec y luego lo descarga inmediatamente. /sys/kernel/kexec_loaded pasa a 1 y luego vuelve a 0. Sin reinicio, sin cambio de kernel, nada persiste. Desenchufar = estado de serie.

3. (Supervisado) arranca tu propio kernel — reinicia el TV

Haz esto solo con el TV encendido y alguien 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)

Advertencias honestas conocidas en el paso 3 (no son bugs que esté ocultando):

  • Después de kexec -e, el nuevo kernel llega al espacio de usuario pero el TV se reinicia después de ~10–21 s porque no se está alimentando al watchdog micom/SOC. Ese es el muro actual, no un bug de caída. rexos/initramfs/micom-pet.c es el daemon destinado a arreglarlo (aún integrándolo).
  • La pantalla es FBDC en mosaico — no hay consola de texto; solo balizas de color sólido (ver kexec-poc/canary/). Los gráficos reales necesitan la ruta VCPU RPC (no hecha).
  • Un kernel/DTB incorrecto solo deja la pantalla en negro hasta reiniciar. No puede brickear: kexec escribe solo en RAM, nunca en eMMC.

Estado TL;DR (honesto)

  • Primitiva de preparación/ejecución de kernel: probada (paso 2). ✅
  • El kernel personalizado arranca y llega al espacio de usuario: probado (paso 3). ✅
  • Se mantiene como SO utilizable: todavía no — el watchdog y la pantalla son los muros restantes. ⏳

Dependencias (honestidad sobre lo que es externo)

Este repo contiene código fuente + documentación + las entradas de compilación capturadas del TV (.config del kernel, módulo wifi + firmware, librerías del rootfs), pero no el árbol de código fuente del kernel LG K7LP GPL de ~390 MB en sí — distribuirlo es responsabilidad de LG, no nuestra.

make fallará con un claro KERNEL_SRC missing si el árbol del kernel no está presente — no hay una compilación a medias silenciosa.

Novedad / trabajo previo

Por lo que sabemos, este es el primer arranque público de un kernel personalizado basado en kexec para un TV LG webOS. Las primitivas (kexec, webOS rooteado, RTD2875) son todas conocidas individualmente; la aplicación a este TV de consumo bloqueado parece ser nueva. No afirmamos un bypass de arranque seguro — lo sorteamos.

Licencia

GPL-2.0 (trabajo del kernel; el código fuente GPL del kernel de LG es GPL). Nuestros scripts son compatibles con GPL. Consulta CREDITS para la atribución a los proyectos originales.

Descargar herramienta
dependenciacómo obtenerla
LG K7LP GPL linux-4.4.3 (RTD2875)sitio de open-source de LG → tarball GPL K7LP 03.53.45 → kernel
toolchain cruzado musl armv7 (~98 MB)descargado automáticamente por kexec-poc/build.sh (autocontenido)
Un TV rooteado (50UP81009LR)necesario la primera vez, solo para capturar .config — pero esa configuración ahora está incluida en rexos/kernel/rexos-tv.config, así que un clon compila sin conexión