☁️ HackTricks云 ☁️ -🐦 推特 🐦 - 🎙️ Twitch 🎙️ - 🎥 YouTube 🎥
- 你在一家**网络安全公司**工作吗?想要在HackTricks中看到你的**公司广告**吗?或者你想要获得**PEASS的最新版本或下载PDF格式的HackTricks**吗?请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
- 发现我们的独家[NFT](https://opensea.io/collection/the-peass-family)收藏品[**The PEASS Family**](https://opensea.io/collection/the-peass-family)
- 获得[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
- **加入**[**💬**](https://emojipedia.org/speech-balloon/) [**Discord群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram群组**](https://t.me/peass),或者**关注**我在**Twitter**上的[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
- **通过向[hacktricks仓库](https://github.com/carlospolop/hacktricks)和[hacktricks-cloud仓库](https://github.com/carlospolop/hacktricks-cloud)提交PR来分享你的黑客技巧**。
# 基本信息
UART是一种串行协议,意味着它以一位一次的方式在组件之间传输数据。相比之下,并行通信协议通过多个通道同时传输数据。常见的串行协议包括RS-232、I2C、SPI、CAN、Ethernet、HDMI、PCI Express和USB。
通常情况下,当UART处于空闲状态时,线路保持高电平(逻辑1)。然后,为了表示数据传输的开始,发送器向接收器发送一个起始位,此时信号保持低电平(逻辑0)。接下来,发送器发送包含实际消息的五到八个数据位,后跟一个可选的奇偶校验位和一个或两个停止位(逻辑1),具体取决于配置。奇偶校验位用于错误检查,在实践中很少见。停止位(或位)表示传输的结束。
我们将最常见的配置称为8N1:八个数据位,无奇偶校验,一个停止位。例如,如果我们想要在8N1 UART配置中发送字符C,或者在ASCII中表示为0x43,我们将发送以下位:0(起始位);0、1、0、0、0、0、1、1(0x43的二进制值);0(停止位)。
![](<../../.gitbook/assets/image (648) (1) (1) (1) (1).png>)
与UART通信的硬件工具:
* USB转串口适配器
* 带有CP2102或PL2303芯片的适配器
* 通用工具,如:Bus Pirate、Adafruit FT232H、Shikra或Attify Badge
## 识别UART端口
UART有4个端口:**TX**(发送)、**RX**(接收)、**Vcc**(电压)和**GND**(地线)。你可能能够在PCB上找到带有**`TX`**和**`RX`**字样的4个端口。但如果没有指示,你可能需要使用万用表或逻辑分析仪自己找到它们。
使用万用表和设备关闭电源:
* 使用**连续性测试**模式来识别**GND**引脚,将后导线放入地线并用红色导线进行测试,直到听到万用表发出声音。PCB上可能有多个GND引脚,所以你可能已经找到了UART引脚,也可能没有找到。
* 要识别**VCC端口**,设置**直流电压模式**并将其设置为20V电压。黑色探针接地,红色探针接引脚。打开设备电源。如果万用表测量到恒定的3.3V或5V电压,说明你找到了Vcc引脚。如果得到其他电压,请尝试其他端口。
* 要识别**TX端口**,将**直流电压模式**设置为20V电压,黑色探针接地,红色探针接引脚,并打开设备电源。如果你发现电压在几秒钟内波动,然后稳定在Vcc值上,那么你很可能找到了TX端口。这是因为在上电时,它会发送一些调试数据。
* **RX端口**将是离其他3个端口最近的一个,它的电压波动最小,所有UART引脚中的总体值最低。
你可以混淆TX和RX端口,不会发生任何事情,但如果混淆GND和VCC端口,可能会烧毁电路。
使用逻辑分析仪:
## 识别UART波特率
识别正确的波特率最简单的方法是查看**TX引脚的输出并尝试读取数据**。如果接收到的数据无法读取,请切换到下一个可能的波特率,直到数据可读为止。你可以使用USB转串口适配器或Bus Pirate等多功能设备,配合辅助脚本(例如[baudrate.py](https://github.com/devttys0/baudrate/)),来完成这个操作。最常见的波特率是9600、38400、19200、57600和115200。
{% hint style="danger" %}
重要提示:在此协议中,你需要将一个设备的TX连接到另一个设备的RX!
{% endhint %}
# 总线海盗
在这个场景中,我们将嗅探Arduino的UART通信,该通信将程序的所有打印信息发送到串行监视器。
```bash
# Check the modes
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)
# Select UART
(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
10. BRG raw value
# Select the speed the communication is occurring on (you BF all this until you find readable things)
# Or you could later use the macro (4) to try to find the speed
(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
(1)>
Stop bits:
1. 1 *default
2. 2
(1)>
Receive polarity:
1. Idle 1 *default
2. Idle 0
(1)>
Select output type:
1. Open drain (H=Hi-Z, L=GND)
2. Normal (H=3.3V, L=GND)
(1)>
Clutch disengaged!!!
To finish setup, start up the power supplies with command 'W'
Ready
# Start
UART>W
POWER SUPPLIES ON
Clutch engaged!!!
# Use macro (2) to read the data of the bus (live monitor)
UART>(2)
Raw UART input
Any key to exit
Escritura inicial completada:
AAA Hi Dreg! AAA
waiting a few secs to repeat....
```
☁️ HackTricks 云 ☁️ -🐦 推特 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- 你在一家**网络安全公司**工作吗?想要在 HackTricks 中**宣传你的公司**吗?或者你想要**获取最新版本的 PEASS 或下载 HackTricks 的 PDF**吗?请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
- 发现我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)收藏品——[**The PEASS Family**](https://opensea.io/collection/the-peass-family)
- 获取[**官方 PEASS & HackTricks 商品**](https://peass.creator-spring.com)
- **加入** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass),或者**关注**我在**推特**上的[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
- **通过向 [hacktricks 仓库](https://github.com/carlospolop/hacktricks) 和 [hacktricks-cloud 仓库](https://github.com/carlospolop/hacktricks-cloud) 提交 PR 来分享你的黑客技巧**。