Introduction
Quand on attaque le reverse engineering d’un appareil, comme un simple traqueur GPS, on se retrouve face à une boîte noire. Le but du jeu, c’est de la transformer en boîte grise. Pour ça, pas de magie : on écoute ce que les composants se racontent. Le modem, le microcontrôleur, la mémoire flash et le module GPS communiquent en permanence. Si on arrive à intercepter ces échanges, on peut déchiffrer la logique du système, trouver des failles de sécurité, ou carrément détourner le matériel pour l’utiliser dans d’autres projets.
Qu’est-ce qu’un signal numérique ?

Sur le terrain, un signal numérique c’est bête comme chou. C’est juste une tension qui fait le yoyo entre 0V (état Bas) et un niveau haut, disons 3.3V (état Haut). Cette série de hauts et de bas forme vos données binaires. C’est littéralement un interrupteur qu’on allume et qu’on éteint très vite.
Pour observer ces variations, oubliez le multimètre. Il est beaucoup trop lent et va juste vous afficher une moyenne trompeuse. L’oscilloscope, c’est l’artillerie lourde : super pour voir la qualité électrique du signal (comme le bruit ou les fronts de montée), mais franchement excessif si vous voulez juste lire des données. L’outil roi ici, c’est l’analyseur logique. Il tranche dans le vif (c’est un 1 ou c’est un 0) et c’est ce qui le rend parfait pour décoder des protocoles.

| Outil | Description | Utilisation pour les Signaux Numériques |
| Multimètre | Mesure les tensions et courants statiques ou moyennés. | Inadapté : Trop lent, ne permet de voir qu’un changement de tension trop léger et insuffisant pour décoder un signal dynamique. |
| Analyseur Logique | Spécialisé dans la capture et l’affichage des états logiques (Haut/Bas) en fonction du temps. | Idéal : Permet une visualisation claire des états logiques avec des arêtes bien « carrées », optimisé pour le décodage de protocoles série. |
| Oscilloscope | Visualise la forme d’onde exacte de la tension. | Plus précis mais potentiellement overkill : Détecte la moindre variation de signal (bruit, surtension), montre les arêtes non « carrées » (fronts de montée/descente). |
La prise en main et l’acquisition
En pratique, par où on commence ? D’abord, on trouve la masse (GND). C’est votre zéro de référence, absolument indispensable. Sans lui, vos mesures ne voudront rien dire. Les antennes ou les blindages métalliques sont de bons points de masse.

Ensuite, on cherche les points d’accès. Parfois, on a de la chance et les broches sont étiquetées (TX, RX, VCC) sur le circuit imprimé. Sinon, il faut sonder les pattes des puces ou les points de débogage cachés. Un truc à retenir : si une ligne semble morte à l’écran, rebootez l’appareil. Énormément de puces ne jasent qu’au moment du démarrage (le boot).
Le protocole UART : le standard asynchrone

L’UART n’a pas d’horloge partagée pour donner le tempo. L’émetteur et le récepteur doivent donc s’accorder à l’avance sur la vitesse de discussion, ce qu’on appelle le Baud Rate. Il y a trois lignes principales : TX (transmission), RX (réception) et GND (la masse). Pour « sniffer » ce que l’appareil raconte, on se branche sur le TX.
Structure de la Trame UART
Au repos, la ligne est à l’état haut. Quand elle tombe brutalement à zéro, c’est le bit de Start. Suivent ensuite vos données (généralement 8 bits), parfois un bit de parité pour vérifier les erreurs, et enfin un ou deux bits de Stop qui remontent la ligne.

C’est le fameux réglage « 8N1 » (8 bits de données, None pour aucune parité, 1 bit de stop) que vous croiserez tout le temps.
Cette notation standardise la configuration de l’UART :
- Premier Nombre (8) : Nombre de bits de données.
- Lettre (N) : Type de parité (N = None, E = Even, O = Odd).
- Dernier Nombre (1) : Nombre de Stop Bits.
La configuration 8N1 est la plus répandue, mais des variantes comme 7E1 ou 8N2 existent.
Le Baud Rate
Le Baud Rate correspond au nombre de symboles (dans le cas de l’UART, le symbole est le bit) qui sont communiqués par seconde. On a donc la relation 1 Baud = 1 bit/seconde.

Exemple : Un Baud Rate de 115200 Bauds signifie que chaque bit a une durée de (1 / 115200) $\approx$ 8,68 microsecondes.
Détermination d’un Baud Rate non-standard
Lorsqu’un Baud Rate n’est pas standard (non documenté), il est possible de le calculer à partir d’une analyse :
- Enregistrer l’acquisition du signal.
- Identifier le bit de transmission ayant l’intervalle de temps le plus court.
- Calculer le Baud Rate :
$$\text{Baud Rate} = \frac{1}{\text{Durée de l’intervalle de bit (en secondes)}}$$
Exemple de Calcul

Si vous tombez sur un système exotique avec un Baud Rate inconnu, pas de panique. Prenez votre capture sur l’analyseur logique, trouvez le bit le plus court à l’écran, et appliquez cette formule : Baud Rate = 1 / Durée du bit (en secondes)
Le protocole SPI : le standard synchrone

Le SPI, c’est une autre bête. Il est synchrone, c’est-à-dire qu’une ligne d’horloge (CLK) mène la danse. C’est le protocole massivement utilisé pour lire des mémoires Flash ou parler à des cartes SD. Il utilise quatre lignes :
- CLK : Le signal d’horloge, très régulier.
- MOSI : Le Maître parle, l’Esclave écoute.
- MISO : L’Esclave répond au Maître.
- CS (Chip Select) : La ligne qui dit « c’est à toi que je parle ». Elle reste à l’état bas pendant tout l’échange.
Le Maître peut contrôler plusieurs Esclaves, chacun nécessitant une ligne CS dédiée.

La ligne CS reste généralement à l’état BAS (LOW) pendant toute la durée de la transmission de données.
CPOL et CPHA : Les Modes SPI
Le gros piège en SPI, ce sont les modes. La communication dépend de la polarité de l’horloge au repos (CPOL) et de la phase (CPHA), qui détermine si on lit la donnée sur le front montant ou descendant. Ça donne 4 modes possibles (de 0 à 3). Si vous vous plantez de mode dans votre logiciel de décodage, vos données ressembleront à de la bouillie.
Synthèse des 4 Modes
| Mode | CPOL | CPHA | Description |
| Mode 0 | 0 | 0 | Repos à Bas (Low), lecture sur front montant. |
| Mode 1 | 0 | 1 | Repos à Bas (Low), lecture sur front descendant. |
| Mode 2 | 1 | 0 | Repos à Haut (High), lecture sur front descendant. |
| Mode 3 | 1 | 1 | Repos à Haut (High), lecture sur front montant. |
Autre détail vicieux : l’ordre des bits. Le standard dans l’industrie, c’est le MSB First (le bit de poids fort, celui de gauche, envoyé en premier). Si le système utilise du LSB First par hasard et que vous lisez en MSB, un « 1 » décimal se transformera magiquement en « 128 ».
Exemple concret : Lire une mémoire Flash en SPI

Lors de l’observation d’un bus SPI sur un analyseur logique, les signaux se caractérisent comme suit :
- CS : Ligne à l’état Bas (LOW) tout au long du transfert de la trame.
- CLK : Signal d’horloge très régulier.
- Master Out (MOSI) : Le périphérique qui transmet en premier est le Maître.
- Master In (MISO) : Réponse de l’Esclave au Maître sur la ligne MOSI.
Quand vous observez une communication SPI avec une mémoire Flash sur votre analyseur, c’est assez visuel et très codifié. La plupart des puces utilisent les mêmes commandes de base (les opcodes).
0x9F: Demande l’identifiant du constructeur (hyper pratique pour trouver la bonne datasheet).0x06: Write Enable (déverrouille la puce avant une écriture).
Voici quelques codes d’opération (opcodes) fréquents :
| Code Hexadécimal | Commande | Description |
| 0x03 | READ | Lecture de données. |
| 0x9F | JEDEC ID | Lecture de l’identifiant du constructeur (standard JEDEC). |
| 0x06 | WREN | Write Enable (Activation de l’écriture). |
| 0x02 | Page Program | Écriture de données dans une page. |
| 0x05 | RDSR | Read Status Register (Lecture du registre d’état). |
Note : Il est essentiel de consulter la fiche technique (datasheet) de la puce pour connaître l’ensemble des commandes spécifiques et propriétaires.
Pour une lecture de données classique, vous verrez toujours la même danse :
- Le CS tombe à zéro pour réveiller la puce.
- Le Maître envoie la commande READ (
0x03) sur la ligne MOSI. - Le Maître envoie l’adresse mémoire à lire (souvent sur 24 bits, soit 3 octets).
- Ensuite, le Maître continue de faire tourner l’horloge dans le vide. L’Esclave en profite pour recracher le contenu de sa mémoire sur la ligne MISO.
- Le CS remonte. La lecture est finie.
Dans un prochain article, je vais continuer cette exploration en me penchant sur le protocole I2C (Inter-Integrated Circuit), une autre interface série essentielle en électronique.
[…] faire suite à mon précédent article sur l’analyse des signaux numériques, je vous propose d’explorer aujourd’hui un incontournable qui manquait encore à […]