1 points par GN⁺ 2024-02-24 | 1 commentaires | Partager sur WhatsApp

Déverrouiller une fonctionnalité cachée du ThinkPad : l’émulation de périphérique USB

  • Découverte d’une méthode pour transformer un ThinkPad X1 Carbon de 6e génération en périphérique USB programmable.
  • Activation du contrôleur xDCI pour pouvoir émuler des périphériques USB arbitraires (clavier, lecteur de stockage, etc.).
  • Possibilité d’utiliser RawGadget et syzkaller pour fuzzing des hôtes USB ou exécuter Facedancer.
  • Tout cela peut être réalisé sans matériel externe.

Introduction

  • Raw Gadget est un module du noyau Linux destiné à émuler des périphériques USB hautement personnalisables.
  • Pour émuler un périphérique USB, un composant matériel spécial appelé USB Device Controller (UDC) est nécessaire.
  • En général, les PC ne disposent pas de UDC, alors qu’il est intégré à des ordinateurs monocartes comme le Raspberry Pi.

Enquête

  • L’examen du code du noyau Linux lié au contrôleur xHCI a permis de découvrir que les périphériques xHCI prennent en charge le changement de rôle.
  • Une recherche en ligne a permis de trouver des discussions sur le changement de rôle des périphériques xHCI.
  • Vérification d’ACPI pour confirmer si xDCI était activé dans ACPI.

Activation de xDCI

  • Impossible de trouver un réglage lié à xDCI dans les paramètres du BIOS.
  • L’examen direct de l’image du BIOS a révélé que les paramètres liés à xDCI étaient cachés.

Utilisation de xDCI

  • Activation de xDCI via le paramètre Advanced du BIOS.
  • Confirmation que le périphérique xDCI apparaît dans lspci.

Résumé

  • Découverte d’une méthode pour activer la fonctionnalité cachée de contrôleur de périphérique USB sur un ThinkPad X1 Carbon de 6e génération.
  • Cela permet d’émuler l’ordinateur portable comme différents types de périphériques USB.

Retour d’expérience

  • L’activation de xDCI permet d’explorer de nouvelles possibilités d’usage pour l’ordinateur portable.

L’avis de GN⁺

  1. Cet article ouvre un nouveau champ pour le hardware hacking et la personnalisation en montrant comment activer une fonctionnalité cachée d’un ThinkPad pour émuler des périphériques USB.
  2. Des tâches qui nécessitaient auparavant du matériel séparé peuvent désormais être réalisées avec un seul ordinateur portable, ce qui peut être très utile aux développeurs et aux chercheurs.
  3. Ce texte propose un défi intéressant aux personnes animées par la curiosité technique et aide à explorer comment exploiter au maximum le potentiel d’un appareil existant.

1 commentaires

 
GN⁺ 2024-02-24
Commentaires sur Hacker News
  • Un commentaire se demande pourquoi on ne peut pas utiliser un ordinateur portable comme clavier et écran pour un autre ordinateur. Lorsqu’il faut faire de la maintenance sur une machine headless, le portable joue déjà ce rôle, et en acheter un nouveau semble absurde.
  • Un commentaire rappelle le cas des Smart TV qui reçoivent des mises à jour de firmware via des fichiers sur une clé USB. L’appareil se fait passer pour un périphérique de stockage USB, envoie d’abord le fichier de firmware du constructeur, puis dans un second temps un firmware non officiel.
  • Une discussion intéressante porte sur une tentative d’exploiter un serveur NAS. L’auteur a étudié comment exposer le stockage du NAS à une PS5 et une Xbox, et a découvert qu’il était possible de monter un partage NAS via iSCSI ou NFS, puis d’exposer ce stockage à un hôte USB avec le module g_mass_storage. Cependant, la bande passante devient le principal obstacle, car le gain de vitesse apporté par le système reste limité.
  • Un commentaire évoque une tentative d’émuler du HDI avec un Raspberry Pi. Il explique qu’une méthode existante consistant à envoyer des frappes à un processus Windows posait problème avec les touches de modification, ce qui l’a conduit à chercher une autre approche.
  • Un commentaire dit que cela donne de l’espoir quant à la possibilité de mettre en place, sans réseau et uniquement avec un câble USB, une configuration semblable à Synergy ou Mouse Without Borders. Cela serait utile pour ceux qui doivent utiliser plusieurs ordinateurs en même temps.
  • Un commentaire évoque une tentative d’établir une connexion 10 Gbit/s entre deux machines uniquement avec un câble USB-C. Il souligne que la plupart des cartes mères Ryzen ne prennent toujours pas en charge Thunderbolt et que les contrôleurs USB à « double rôle » sont rares. Il mentionne aussi que c’est possible en USB 3.2/4.0, mais avec une prise en charge instable.
  • Un commentaire estime que la capacité d’utiliser un PC comme périphérique USB ouvre des possibilités amusantes. Il regrette toutefois que l’option xDCI nécessaire existe bien dans le matériel, mais ne soit accessible qu’au prix d’un hack du firmware.
  • Un commentaire se demande si Lenovo utilise cette technologie pour déboguer un ThinkPad à partir d’un autre ThinkPad. Il inclut un lien vers la technologie de débogage d’Intel ainsi qu’un lien vers une vidéo YouTube associée.
  • Un commentaire trouve pénible de manipuler un Raspberry Pi. Il suggère qu’on peut configurer l’USB OTG, puis définir les montages et les commandes via SSH. Le propos encourage à comprendre son appareil, à lire le kernel et à résoudre soi-même les problèmes.
  • Un commentaire indique avoir activé l’interrupteur xDCI dans le BIOS, mais sans voir apparaître le nœud de périphérique UDC, ce qui l’oblige à creuser davantage. Il mentionne avoir été inspiré par le billet d’origine et devoir poursuivre ses recherches.