Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
lg-webos-kexec — Inicializa um kernel Linux personalizado em TVs LG webOS com root via kexec, com suporte a watchdog de SoC por engenharia reversa, payloads de framebuffer e um fluxo de compilação de kernel com initramfs. | Kitploit
Ferramentas/GitHubGitHub/ggfuchsi-oss/lg-webos-kexec
Segurança de Sistemas EmbarcadosEngenharia ReversaHacking de HardwareSegurança de Hardware e IoTAnálise de Firmware
GitHubggfuchsi-oss/lg-webos-kexec

lg-webos-kexec

Inicializa um kernel Linux personalizado em TVs LG webOS com root via kexec, com suporte a watchdog de SoC por engenharia reversa, payloads de framebuffer e um fluxo de compilação de kernel com initramfs.

Ver Repositório
611há 1 diaAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

lg-webos-kexec

Inicialize um kernel Linux personalizado em uma TV LG webOS com root via kexec — na RAM, sem bypass do secure-boot.

Status: trabalho em andamento. Um kernel personalizado pode ser preparado e atinge o userspace, mas ainda não permanece ativo como um SO utilizável.

Alvo

LG 50UP81009LR (webOS 6.5, Realtek RTD2875, armv7l). Com root via Homebrew Channel; o kernel assinado original e o userspace do webOS não são tocados.

O que está comprovado (verificado ao vivo)

  • kexec -l prepara um kernel (original ou compilado a partir do código-fonte); /sys/kernel/kexec_loaded muda para 1.
  • kexec -e substitui o kernel em execução (a TV reinicia para o original depois).
  • Um kernel compilado do código-fonte atinge o userspace — verificado por page faults em modo usuário = /sbin/init executou código real.
  • Payloads canários minúsculos desenham no framebuffer (acesso ring-0 + display confirmado).
  • Toda a cadeia roda a partir do startup.sh original do webOS — o bootloader assinado / ATF / OP-TEE nunca são tocados.

O que ainda falta

  • Alimentação do watchdog — ENGENHARIA REVERSA FEITA + CORREÇÃO ESCRITA, ainda não comprovada em um boot kexec ao vivo. Veja abaixo.

Alimentação do watchdog — encontrada (2026-08-19)

O reset é o watchdog do SoC (bloco TC). A função micom_wdt_thread() do kernel original o mantém sob controle com três escritas em registradores (drivers/rtk_kdriver/platform/tv006/intmicom.c):

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

Sob kexec, o *(volatile*)0xFE062208 = 0x01 bruto do driver cai em um endereço virtual não mapeado e é um no-op silencioso, então o watchdog do SoC dispara (~10–21 s). O micom-pet.c agora faz as mesmas escritas a partir do userspace via /dev/mem (CONFIG_DEVMEM=y), que mapeia corretamente, além de um keepalive 0xB1 para /dev/sys-intmicom como defesa em profundidade.

Status: micom-pet.c reescrito, compila com o toolchain musl, e um teste de fumaça benigno de 5 s na TV ao vivo confirmou que ele roda e grava sua breadcrumb (0x52455814 = "REX"+beat). A única prova restante é um boot kexec -e que permaneça ativo além de ~21 s — isso reinicia a TV, então é um teste acompanhado.

  • Display — o painel usa FBDC em tiles; texto bruto do framebuffer não é útil. A saída real precisa do VCPU RPC (comandos de desenho para o motor de vídeo).
  • Rede — o vermagic do módulo wlan original precisa corresponder a CONFIG_LOCALVERSION="" para carregar; ainda não integrado ao initramfs.

Como funciona (versão 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)

Tirar a energia = original. Não tem como brickar.

Construído com IA (divulgação completa)

A maior parte deste repositório foi montada por Rex — uma instância de agente de codificação de IA — ajudando um humano a operar a própria TV, na própria sala de estar. A IA escreveu o PoC de kexec, a cadeia de boot, os canários de framebuffer e estes textos de engenharia reversa. Mas as afirmações neste README só foram feitas depois que o humano ligou a TV, olhou para a tela e confirmou. Se uma afirmação não é respaldada por uma verificação real de tela/foto/uptime do hardware, ela não está aqui.

Nenhuma TV foi brickada durante a criação deste repositório. Algumas ficaram temporariamente confusas (um kernel via kexec sem alimentação do watchdog reinicia o aparelho após ~15 s), e depois voltaram ao estado original com um ciclo de energia. O /tmp é apagado a cada reset, então a TV esquece tudo o que fizemos — esse é o objetivo.

Estrutura do repositório

  • rexos/ — o SO personalizado: hook de boot, compilação do kernel, initramfs, stub RexBus.
  • kexec-poc/ — a prova de conceito somente-carga + payloads canários de framebuffer.
  • docs/ — textos de engenharia reversa (boot/segurança, carregamento de apps SAM, mapa de superfícies, esquema luna2).

Verifique você mesmo (você precisa da TV exata: 50UP81009LR, com root, na LAN)

Estes passos reproduzem o que fizemos, no hardware exato. Nada é falsificado.

0. Pré-requisitos

  • LG 50UP81009LR, com root via Homebrew Channel, SSH de root habilitado, na sua LAN.
  • A TV é 192.168.2.103 por padrão abaixo; edite se a sua for diferente.
  • Árvore de fontes do kernel LG K7LP GPL (necessária uma vez): defina KERNEL_SRC=/path/to/linux-4.4.3 (baixe o tarball GPL K7LP 03.53.45 do open-source da LG), ou crie um symlink ~/lgtv-toolkit/kernel-src/kernel/linux-4.4.3.

1. Compile o toolchain + kexec estático (não precisa da TV, ~2 min)

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

Esperado: um binário kexec ARM estático em kexec-arm (168K, file mostra ELF 32-bit LSB ... ARM ... statically linked).

2. Reproduza o PoC seguro na sua TV (prepara + descarrega — sem boot)

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

Isso prepara o próprio kernel atual da TV via kexec e imediatamente o descarrega. /sys/kernel/kexec_loaded muda para 1 e depois volta para 0. Sem reboot, sem troca de kernel, nada persiste. Tirar o plugue = estado original.

3. (Acompanhado) inicialize seu próprio kernel — reinicia a TV

Faça isso apenas com a TV ligada e alguém 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)

Ressalvas honestas na etapa 3 (não são bugs que estou escondendo):

  • Após kexec -e, o novo kernel atinge o userspace mas a TV reinicia após ~10–21 s porque o watchdog micom/SOC não está sendo alimentado. Esse é o obstáculo atual, não um bug de crash. rexos/initramfs/micom-pet.c é o daemon que deve corrigir isso (ainda estou integrando).
  • O display é FBDC em tiles — não há console de texto; apenas beacons de cor sólida (veja kexec-poc/canary/). Gráficos reais precisam do caminho VCPU RPC (não feito).
  • Um kernel/DTB errado apenas fica com tela preta até um ciclo de energia. Não tem como brickar: kexec escreve apenas na RAM, nunca na eMMC.

Status TL;DR (honesto)

  • Primitiva de preparação/execução do kernel: comprovada (etapa 2). ✅
  • Kernel personalizado inicializa + atinge o userspace: comprovado (etapa 3). ✅
  • Permanecer ativo como SO utilizável: ainda não — watchdog + display são os obstáculos restantes. ⏳

Dependências (seja honesto sobre o que é externo)

Este repositório contém código-fonte + docs + os insumos de build capturados da TV (.config do kernel, módulo wifi + firmware, libs do rootfs), mas não contém a árvore de fontes do kernel LG K7LP GPL de ~390 MB em si — essa é da LG para distribuir, não nossa para re-hospedar.

O make falhará com um claro KERNEL_SRC missing se a árvore do kernel não estiver presente — não há meia-compilação silenciosa.

Novidade / trabalhos anteriores

Até onde sabemos, este é o primeiro boot público de kernel personalizado baseado em kexec para uma TV LG webOS. As primitivas (kexec, webOS com root, RTD2875) são todas conhecidas individualmente; a aplicação a esta TV de consumo bloqueada parece ser nova. Não estamos reivindicando um bypass do secure-boot — nós o contornamos.

Licença

GPL-2.0 (trabalho do kernel; o código-fonte GPL do kernel da LG é GPL). Nossos scripts são compatíveis com GPL. Veja CREDITS para atribuição upstream.

Baixar ferramenta
dependênciacomo obter
LG K7LP GPL linux-4.4.3 (RTD2875)site open-source da LG → 03.53.45 tarball GPL K7LP → kernel
toolchain cruzado musl armv7 (~98 MB)baixado automaticamente por kexec-poc/build.sh (autocontido)
Uma TV com root (50UP81009LR)necessária na primeira vez, apenas para capturar o .config — mas esse config agora está commitado em rexos/kernel/rexos-tv.config, então um clone compila offline