Accueil / Interfaces filaires

UART

Le port série asynchrone, souvent la première porte d'entrée vers les logs de boot et un shell.

Complet #uart#serie#debug

Description

UART (Universal Asynchronous Receiver Transmitter) est un composant utilisé pour relier deux périphériques (on parle aussi de port série).

Ce protocole « simple » n’est pas basé sur une horloge partagée, mais sur une vitesse de transmission commune (baud rate) que les deux extrémités doivent connaître à l’avance.

C’est un protocole assez ancien, mais encore très présent dans les équipements modernes. Il tend à être remplacé pour la communication entre puces par d’autres technologies comme SPI ou I2C, mais reste omniprésent comme console de debug. C’est souvent l’interface la plus rentable à chercher en premier : elle donne fréquemment accès aux logs de démarrage, au bootloader (U-Boot), voire à un shell root.

Trame UART

Une trame typique est composée de :

  • un bit de start (ligne tirée à 0),
  • 5 à 9 bits de données (8 le plus souvent),
  • un bit de parité optionnel,
  • un ou deux bits de stop (ligne à 1).

On note souvent la configuration 8N1 : 8 bits de données, aucune parité (None), 1 bit de stop.

Identification

La première étape consiste à identifier les broches UART. En général elles sont au nombre de 4 (et souvent groupées) :

  • GND — la masse
  • RX — réception (Receive)
  • TX — émission (Transmit)
  • VCC — alimentation

Méthode au multimètre :

  • GND : repérer une mise à la masse et effectuer un test de continuité.
  • VCC : une fois le GND identifié, la tension entre les deux doit être constante (3,3 V ou 5 V le plus souvent).
  • RX : à un voltage proche de 0 si aucun équipement n’est connecté (peut avoir une résistance de pull-up).
  • TX : présente une tension variable lorsque des données sont transmises (typiquement au démarrage de l’appareil).

À l’analyseur logique, capturer les broches suspectes pendant le boot : la ligne TX montre une activité caractéristique dès la mise sous tension.

Niveaux logiques

Vérifiez toujours la tension avant de brancher un adaptateur. Connecter un dongle 5 V sur une cible 3,3 V (ou 1,8 V) peut détruire la puce. En cas de doute, un adaptateur de niveau (level shifter) évite les mauvaises surprises.

Attacking

Connexions

Une fois les flux UART détectés, de nombreux équipements peuvent servir à établir la connexion :

  • adaptateur USB-TTL (FT232, CP2102, CH340),
  • Bus Pirate,
  • une Arduino ou une Raspberry Pi (via ses broches série).

La règle à retenir concerne RX et TX qui doivent être croisés : le TX de la cible va vers le RX du dongle, et inversement. Le GND doit être commun. On ne relie généralement pas VCC, la cible étant alimentée par ailleurs.

Découverte du baudrate

Les échanges UART utilisent une vitesse « standardisée ». Parmi les plus courantes :

  • 9600
  • 19200
  • 38400
  • 57600
  • 115200 (très fréquent sur les équipements Linux embarqués)

Si le baudrate est incorrect, la sortie apparaît comme des caractères illisibles (mojibake). Plusieurs méthodes existent pour le retrouver :

Se connecter à la console

Une fois le port et le baudrate connus :

# picocom
picocom -b 115200 /dev/ttyUSB0

# minicom
minicom -D /dev/ttyUSB0 -b 115200

# screen
screen /dev/ttyUSB0 115200

Que chercher une fois connecté

  • Logs de boot : version du firmware, architecture, options du noyau.
  • Bootloader (U-Boot) : interrompre le démarrage (souvent en appuyant sur une touche) donne accès à un interpréteur permettant de modifier bootargs. Ajouter init=/bin/sh peut ouvrir un shell root sans mot de passe.
  • Shell : parfois une console root est directement disponible, ou protégée par un mot de passe faible/par défaut.

Protections

  • Désactiver la console série en production ou exiger une authentification forte.
  • Retirer/masquer les pads de test, ne pas laisser les broches sérigraphiées.
  • Verrouiller le bootloader (mot de passe U-Boot, bootdelay à 0, désactivation des commandes interactives).
  • Chiffrer et signer le firmware pour limiter l’intérêt d’un accès console.

Example devices

  • Routeurs, box, caméras IP, décodeurs et de nombreux équipements sous Linux embarqué exposent une console UART sur la carte.

Ressources