曼彻斯特编码¶
什么是曼彻斯特编码?¶
曼彻斯特编码(Manchester Encoding)是一种线路编码方式,用电平跳变来表示二进制数据。它常用于通信和硬件相关题目,也可能出现在波形、逻辑分析、无线电或图片条纹题中。
它的核心特点是:每一个 bit 周期中间一定会发生一次跳变,这个跳变方向表示 0 或 1。
两种常见约定¶
曼彻斯特编码存在两种常见定义,做题时要注意题目或工具采用哪一种。
IEEE 802.3 约定¶
| 原始 bit | 中间跳变 | 常见二进制表示 |
|---|---|---|
| 0 | 高到低 | 10 |
| 1 | 低到高 | 01 |
Thomas 约定¶
| 原始 bit | 中间跳变 | 常见二进制表示 |
|---|---|---|
| 0 | 低到高 | 01 |
| 1 | 高到低 | 10 |
如果解码结果不对,可以尝试把规则反过来。
编码原理¶
把每个原始 bit 扩展为两个半 bit:
所以:
曼彻斯特编码后的长度通常是原始二进制长度的 2 倍。
解码示例¶
密文:
按 IEEE 802.3 约定每 2 位切分:
| 编码 | 原始 bit |
|---|---|
| 10 | 0 |
| 01 | 1 |
| 01 | 1 |
| 10 | 0 |
得到:
如果按 Thomas 约定,结果会变成:
非法组合¶
标准曼彻斯特编码中,每组两位应该是 01 或 10。如果出现 00 或 11,可能有以下情况:
- 起始位置切分错了。
- 采样频率或图像读取方式不对。
- 使用的是差分曼彻斯特编码。
- 数据被反相或混入了同步头。
CTF 识别要点¶
- 二进制串长度通常为偶数。
- 每两位经常只出现
01和10。 - 题目可能出现 Manchester、波形、电平、signal、logic analyzer 等提示。
- 解码后可能还需要按 8 bit 转 ASCII、Hex 或继续 Base 编码。