Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
lg-webos-kexec — Démarre un noyau Linux personnalisé sur les téléviseurs LG webOS rootés via kexec, avec prise en charge du watchdog SoC rétro-ingénieré, des payloads framebuffer et un flux de compilation de noyau initramfs. | Kitploit
Outils/GitHubGitHub/ggfuchsi-oss/lg-webos-kexec
Sécurité des Systèmes EmbarquésRétro-ingénierieHacking MatérielSécurité Matériel et IoTAnalyse de Micrologiciel
GitHubggfuchsi-oss/lg-webos-kexec

lg-webos-kexec

Démarre un noyau Linux personnalisé sur les téléviseurs LG webOS rootés via kexec, avec prise en charge du watchdog SoC rétro-ingénieré, des payloads framebuffer et un flux de compilation de noyau initramfs.

Voir le dépôt
640il y a 22 joursPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

lg-webos-kexec

Démarrez un noyau Linux personnalisé sur un téléviseur LG webOS rooté via kexec — en RAM, sans contournement du secure-boot.

Statut : travail en cours. Un noyau personnalisé peut être préparé et atteint l’espace utilisateur, mais il ne reste pas encore actif en tant qu’OS utilisable.

Cible

LG 50UP81009LR (webOS 6.5, Realtek RTD2875, armv7l). Rooté via Homebrew Channel ; le noyau signé d’origine + l’espace utilisateur webOS sont intacts.

Ce qui est prouvé (vérifié en direct)

  • kexec -l prépare un noyau (d’origine ou compilé) ; /sys/kernel/kexec_loaded passe à 1.
  • kexec -e remplace le noyau en cours d’exécution (le téléviseur revient ensuite à l’état d’origine).
  • Un noyau compilé atteint l’espace utilisateur — vérifié par des défauts de page en mode utilisateur = /sbin/init a exécuté du vrai code.
  • De minuscules charges canaries dessinent sur le framebuffer (accès ring-0 + affichage confirmé).
  • Toute la chaîne s’exécute depuis le startup.sh webOS d’origine — le bootloader signé / ATF / OP-TEE ne sont jamais touchés.

Ce qui manque encore

  • Pet du watchdog — RÉTRO-INGÉNIERIE EFFECTUÉE + CORRECTIF ÉCRIT, pas encore prouvé lors d’un vrai démarrage kexec. Voir ci-dessous.

Pet du watchdog — trouvé (2026-08-19)

La réinitialisation est le watchdog du SoC (bloc TC). Le micom_wdt_thread() du noyau d’origine le maintient à distance avec trois écritures de registres (drivers/rtk_kdriver/platform/tv006/intmicom.c) :

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

Sous kexec, l’écriture brute *(volatile*)0xFE062208 = 0x01 du pilote atterrit sur une adresse virtuelle non mappée et est un no-op silencieux, donc le watchdog du SoC se déclenche (~10–21 s). micom-pet.c fait désormais les mêmes écritures depuis l’espace utilisateur via /dev/mem (CONFIG_DEVMEM=y), qui mappe correctement, plus un keepalive 0xB1 vers /dev/sys-intmicom en défense en profondeur.

Statut : micom-pet.c réécrit, compile avec la chaîne d’outils musl, et un test de fumée bénin de 5 s sur le téléviseur en direct a confirmé qu’il s’exécute et écrit sa trace (0x52455814 = "REX"+beat). La seule preuve restante est un démarrage kexec -e qui reste actif au-delà de ~21 s — cela redémarre le téléviseur, c’est donc un test supervisé.

  • Affichage — le panneau utilise FBDC en tuiles ; le texte brut du framebuffer n’est pas utile. Une vraie sortie nécessite le RPC VCPU (commandes de dessin vers le moteur vidéo).
  • Réseau — le vermagic du module wlan d’origine doit correspondre à CONFIG_LOCALVERSION="" pour charger ; pas encore intégré à l’initramfs.

Comment ça marche (version honnête)

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)

Couper l’alimentation = état d’origine. Impossible à briquer.

Conçu avec l’IA (divulgation complète)

La majeure partie de ce dépôt a été assemblée par Rex — une instance d’agent de codage IA — aidant un humain à opérer son propre téléviseur, dans son propre salon. L’IA a écrit le PoC kexec, la chaîne de démarrage, les canaries du framebuffer et ces analyses de rétro-ingénierie. Mais les affirmations de ce README n’ont été faites qu’après que l’humain a allumé le téléviseur, regardé l’écran et confirmé. Si une affirmation n’est pas étayée par une vérification réelle à l’écran/photo/uptime sur le matériel, elle n’est pas ici.

Aucun téléviseur n’a été briqué lors de la création de ce dépôt. Certains ont été temporairement confus (un noyau kexec sans pet du watchdog réinitialise votre boîtier après ~15 s), puis remis sous tension pour revenir à l’état d’origine. /tmp est effacé à chaque réinitialisation, donc le téléviseur oublie tout ce que nous avons fait — c’est tout l’intérêt.

Structure du dépôt

  • rexos/ — l’OS personnalisé : hook de démarrage, compilation du noyau, initramfs, stub RexBus.
  • kexec-poc/ — la preuve de concept chargement uniquement + charges canaries du framebuffer.
  • docs/ — analyses de rétro-ingénierie (démarrage/sécurité, chargement d’applications SAM, carte de surface, schéma luna2).

Vérifiez par vous-même (il vous faut le téléviseur exact : 50UP81009LR, rooté, sur le LAN)

Ces étapes reproduisent ce que nous avons fait, sur le matériel exact. Rien n’est truqué.

0. Prérequis

  • LG 50UP81009LR, rooté via Homebrew Channel, SSH root activé, sur votre LAN.
  • Le téléviseur est 192.168.2.103 par défaut ci-dessous ; modifiez si le vôtre diffère.
  • Arborescence des sources du noyau GPL LG K7LP (une seule fois) : définissez KERNEL_SRC=/path/to/linux-4.4.3 (téléchargez l’archive 03.53.45 K7LP GPL depuis l’open-source LG), ou créez un lien symbolique ~/lgtv-toolkit/kernel-src/kernel/linux-4.4.3.

1. Compiler la chaîne d’outils + kexec statique (pas besoin du TV, ~2 min)

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

Attendu : un binaire kexec ARM statique à kexec-arm (168K, file indique ELF 32-bit LSB ... ARM ... statically linked).

2. Reproduire le PoC sûr sur votre TV (prépare + décharge — pas de démarrage)

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

Résultat attendu :

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

Cela prépare le propre noyau actuel du téléviseur via kexec puis le décharge immédiatement. /sys/kernel/kexec_loaded passe à 1 puis revient à 0. Pas de redémarrage, pas de changement de noyau, rien ne persiste. Débrancher la prise = état d’origine.

3. (Supervisé) démarrer votre propre noyau — redémarre le téléviseur

Ne faites cela que si le téléviseur est allumé et que quelqu’un est présent :

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)

Mises en garde honnêtes à l’étape 3 (pas des bugs que je cache) :

  • Après kexec -e, le nouveau noyau atteint l’espace utilisateur mais le téléviseur se réinitialise après ~10–21 s car le watchdog micom/SOC n’est pas nourri. C’est le mur actuel, pas un bug de crash. rexos/initramfs/micom-pet.c est le démon censé corriger cela (encore en cours d’intégration).
  • L’affichage est FBDC en tuiles — il n’y a pas de console texte ; uniquement des balises de couleur unie (voir kexec-poc/canary/). De vrais graphismes nécessitent le chemin RPC VCPU (pas fait).
  • Un noyau/DTB erroné donne simplement un écran noir jusqu’au cycle d’alimentation. Cela ne peut pas briquer : kexec n’écrit que dans la RAM, jamais dans l’eMMC.

Statut TL;DR (honnête)

  • Primitive de préparation/exécution du noyau : prouvée (étape 2). ✅
  • Noyau personnalisé démarre + atteint l’espace utilisateur : prouvé (étape 3). ✅
  • Reste actif en tant qu’OS utilisable : pas encore — le watchdog + l’affichage sont les murs restants. ⏳

Dépendances (soyez honnête sur ce qui est externe)

Ce dépôt contient les sources + la documentation + les entrées de compilation capturées sur le TV (.config du noyau, module wifi + firmware, bibliothèques rootfs), mais pas l’arborescence des sources du noyau GPL LG K7LP d’environ 390 Mo — c’est à LG de la distribuer, pas à nous de l’héberger.

make échouera avec un message clair KERNEL_SRC missing si l’arborescence du noyau n’est pas présente — il n’y a pas de demi-compilation silencieuse.

Nouveauté / art antérieur

Autant que nous puissions en juger, c’est le premier démarrage public d’un noyau personnalisé basé sur kexec pour un téléviseur LG webOS. Les primitives (kexec, webOS rooté, RTD2875) sont toutes connues individuellement ; l’application à ce téléviseur grand public verrouillé semble nouvelle. Nous ne revendiquons pas un contournement du secure-boot — nous l’évitons.

Licence

GPL-2.0 (travail sur le noyau ; la source du noyau GPL de LG est GPL). Nos scripts sont compatibles GPL. Voir CREDITS pour l’attribution en amont.

Télécharger l’outil
dépendancecomment l’obtenir
LG K7LP GPL linux-4.4.3 (RTD2875)site open-source LG → archive 03.53.45 K7LP GPL → kernel
musl armv7 cross-toolchain (~98 MB)téléchargé automatiquement par kexec-poc/build.sh (autonome)
Un TV rooté (50UP81009LR)nécessaire la première fois, uniquement pour capturer .config — mais cette config est maintenant commitée dans rexos/kernel/rexos-tv.config, donc un clone compile hors ligne