hacktricks/todo/hardware-hacking/uart.md

142 lines
7.7 KiB
Markdown
Raw Normal View History

<details>
<summary><strong>Apprenez le piratage AWS de zéro à héros avec</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Autres moyens de soutenir HackTricks :
* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)!
* Obtenez le [**merchandising officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* Découvrez [**La Famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection d'[**NFTs**](https://opensea.io/collection/the-peass-family) exclusifs
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Partagez vos astuces de piratage en soumettant des PR aux dépôts github** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>
2023-06-03 13:10:46 +00:00
# Informations de base
2022-04-28 16:01:33 +00:00
UART est un protocole série, ce qui signifie qu'il transfère les données entre les composants un bit à la fois. En contraste, les protocoles de communication parallèles transmettent les données simultanément à travers de multiples canaux. Les protocoles séries communs incluent RS-232, I2C, SPI, CAN, Ethernet, HDMI, PCI Express et USB.
2022-04-28 16:01:33 +00:00
Généralement, la ligne est maintenue haute (à une valeur logique de 1) lorsque UART est en état d'inactivité. Ensuite, pour signaler le début d'un transfert de données, l'émetteur envoie un bit de départ au récepteur, pendant lequel le signal est maintenu bas (à une valeur logique de 0). Après, l'émetteur envoie de cinq à huit bits de données contenant le message réel, suivi d'un bit de parité optionnel et d'un ou deux bits d'arrêt (avec une valeur logique de 1), selon la configuration. Le bit de parité, utilisé pour la vérification d'erreur, est rarement vu en pratique. Le bit d'arrêt (ou les bits) signifie la fin de la transmission.
2022-04-28 16:01:33 +00:00
Nous appelons la configuration la plus commune 8N1 : huit bits de données, pas de parité et un bit d'arrêt. Par exemple, si nous voulions envoyer le caractère C, ou 0x43 en ASCII, dans une configuration UART 8N1, nous enverrions les bits suivants : 0 (le bit de départ) ; 0, 1, 0, 0, 0, 0, 1, 1 (la valeur de 0x43 en binaire), et 1 (le bit d'arrêt).
2022-03-11 23:33:08 +00:00
2022-04-25 12:04:04 +00:00
![](<../../.gitbook/assets/image (648) (1) (1) (1) (1).png>)
2022-03-11 23:33:08 +00:00
2023-06-03 13:10:46 +00:00
Outils matériels pour communiquer avec UART :
2022-03-11 23:33:08 +00:00
* Adaptateur USB-vers-série
2023-06-03 13:10:46 +00:00
* Adaptateurs avec les puces CP2102 ou PL2303
* Outil polyvalent tel que : Bus Pirate, l'Adafruit FT232H, le Shikra, ou le Badge Attify
2022-03-11 23:33:08 +00:00
2023-06-03 13:10:46 +00:00
## Identification des ports UART
2022-03-11 23:33:08 +00:00
UART a 4 ports : **TX**(Transmettre), **RX**(Recevoir), **Vcc**(Voltage), et **GND**(Masse). Vous pourriez être capable de trouver 4 ports avec les lettres **`TX`** et **`RX`** **écrites** sur le PCB. Mais s'il n'y a pas d'indication, vous pourriez avoir besoin de les trouver vous-même en utilisant un **multimètre** ou un **analyseur logique**.
2022-03-11 23:33:08 +00:00
2023-06-03 13:10:46 +00:00
Avec un **multimètre** et l'appareil éteint :
2022-03-11 23:33:08 +00:00
* Pour identifier la broche **GND**, utilisez le mode **Test de Continuité**, placez la sonde noire sur la masse et testez avec la rouge jusqu'à ce que vous entendiez un son du multimètre. Plusieurs broches GND peuvent être trouvées sur le PCB, donc vous pourriez avoir trouvé ou non celle appartenant à UART.
* Pour identifier le port **VCC**, réglez le mode **tension continue** et configurez-le jusqu'à 20 V de tension. Sonde noire sur la masse et sonde rouge sur la broche. Allumez l'appareil. Si le multimètre mesure une tension constante de 3,3 V ou 5 V, vous avez trouvé la broche Vcc. Si vous obtenez d'autres tensions, réessayez avec d'autres ports.
* Pour identifier le port **TX**, mode **tension continue** jusqu'à 20 V de tension, sonde noire sur la masse, et sonde rouge sur la broche, et allumez l'appareil. Si vous trouvez que la tension fluctue pendant quelques secondes puis se stabilise à la valeur Vcc, vous avez très probablement trouvé le port TX. Cela est dû au fait qu'au démarrage, il envoie des données de débogage.
* Le port **RX** serait le plus proche des 3 autres, il a la fluctuation de tension la plus faible et la valeur globale la plus basse de toutes les broches UART.
2022-03-11 23:33:08 +00:00
Vous pouvez confondre les ports TX et RX et rien ne se passerait, mais si vous confondez les ports GND et VCC, vous pourriez griller le circuit.
2022-03-11 23:33:08 +00:00
2023-06-03 13:10:46 +00:00
Avec un analyseur logique :
2022-03-11 23:33:08 +00:00
## Identification du débit en bauds UART
2022-03-11 23:33:08 +00:00
La manière la plus simple d'identifier le bon débit en bauds est de regarder la sortie de la broche **TX et d'essayer de lire les données**. Si les données que vous recevez ne sont pas lisibles, passez au débit en bauds suivant jusqu'à ce que les données deviennent lisibles. Vous pouvez utiliser un adaptateur USB-vers-série ou un dispositif polyvalent comme Bus Pirate pour ce faire, associé à un script d'aide, tel que [baudrate.py](https://github.com/devttys0/baudrate/). Les débits en bauds les plus courants sont 9600, 38400, 19200, 57600 et 115200.
2022-03-11 23:33:08 +00:00
{% hint style="danger" %}
2023-06-03 13:10:46 +00:00
Il est important de noter que dans ce protocole, vous devez connecter le TX d'un appareil au RX de l'autre !
2022-03-11 23:33:08 +00:00
{% endhint %}
2022-03-08 23:18:28 +00:00
2022-05-01 12:49:36 +00:00
# Bus Pirate
2022-03-08 23:18:28 +00:00
Dans ce scénario, nous allons espionner la communication UART de l'Arduino qui envoie toutes les impressions du programme au Moniteur Série.
2022-03-08 23:18:28 +00:00
```bash
2022-03-09 15:19:28 +00:00
# Check the modes
2022-03-08 23:18:28 +00:00
UART>m
1. HiZ
2. 1-WIRE
3. UART
4. I2C
5. SPI
6. 2WIRE
7. 3WIRE
8. KEYB
9. LCD
10. PIC
11. DIO
x. exit(without change)
2022-03-09 15:19:28 +00:00
# Select UART
2022-03-08 23:18:28 +00:00
(1)>3
Set serial port speed: (bps)
1. 300
2. 1200
3. 2400
4. 4800
5. 9600
6. 19200
7. 38400
8. 57600
9. 115200
2022-03-08 23:18:28 +00:00
10. BRG raw value
2022-03-09 15:19:28 +00:00
# Select the speed the communication is occurring on (you BF all this until you find readable things)
2022-05-01 12:49:36 +00:00
# Or you could later use the macro (4) to try to find the speed
2022-03-08 23:18:28 +00:00
(1)>5
Data bits and parity:
1. 8, NONE *default
2. 8, EVEN
3. 8, ODD
4. 9, NONE
# From now on pulse enter for default
2022-03-08 23:18:28 +00:00
(1)>
Stop bits:
1. 1 *default
2. 2
2022-03-08 23:18:28 +00:00
(1)>
Receive polarity:
1. Idle 1 *default
2. Idle 0
2022-03-08 23:18:28 +00:00
(1)>
Select output type:
1. Open drain (H=Hi-Z, L=GND)
2. Normal (H=3.3V, L=GND)
2022-03-08 23:18:28 +00:00
(1)>
Clutch disengaged!!!
To finish setup, start up the power supplies with command 'W'
Ready
2022-03-09 15:19:28 +00:00
# Start
2022-03-08 23:18:28 +00:00
UART>W
POWER SUPPLIES ON
Clutch engaged!!!
2022-03-09 15:19:28 +00:00
# Use macro (2) to read the data of the bus (live monitor)
2022-03-08 23:18:28 +00:00
UART>(2)
Raw UART input
Any key to exit
Escritura inicial completada:
AAA Hi Dreg! AAA
waiting a few secs to repeat....
```
2022-04-28 16:01:33 +00:00
<details>
<summary><strong>Apprenez le piratage AWS de zéro à héros avec</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
2022-04-28 16:01:33 +00:00
Autres moyens de soutenir HackTricks :
2022-04-28 16:01:33 +00:00
* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)!
* Obtenez le [**merchandising officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* Découvrez [**La Famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection d'[**NFTs**](https://opensea.io/collection/the-peass-family) exclusifs
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez**-moi sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Partagez vos astuces de piratage en soumettant des PR aux dépôts github** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
2022-04-28 16:01:33 +00:00
</details>