狗汪汪玩转嵌入式——I2C 协议分析
字数 1707 2025-08-22 18:37:21

I2C协议分析与实战破解教学文档

0x00 I2C协议基础

基本概念

  • I2C全称:Inter-Integrated Circuit(集成电路总线)
  • 开发者:飞利浦公司设计
  • 协议类型:多主从架构的串口通讯协议

物理特性

  • 数据线数量:仅需2条数据总线
    • SCL:时钟线(Clock)
    • SDA:数据线(Data)
    • 外加Ground(地线)

架构特点

  • 通常采用1个主设备和多个从设备的架构
  • 支持多主控模式(多个主设备)

通讯速度

  • 标准速度:100kHz
  • 快速模式:400kHz
  • 高速模式:1MHz
  • 超高速模式:3.2MHz

应用场景

  • 对速度要求不高的设备间通讯
  • PC风扇温度监控
  • 电池电压数据采集
  • EEPROM芯片通讯(如存储BIOS密码的EEPROM)

寻址方式

  • 每个I2C设备都有独立的读/写地址
  • 必须知道设备的读写地址才能进行通讯

0x01 工具准备 - BusPirate

工具简介

  • 名称:BusPirate
  • 开发者:Dangerous prototypes
  • 定位:硬件hacking瑞士军刀

核心功能

  • 支持多种常见协议
    • I2C
    • SPI
    • UART
    • JTAG
    • 1-Wire
    • 其他
  • 跨平台支持:Windows/Linux/MAC
  • 丰富文档支持

主要用途

  • I2C协议嗅探(Sniffing)
  • I2C设备读写
  • AVR等芯片编程

连接方式

  • 使用minicom或其他串口工具
  • 波特率:115200
  • 通过USB接口连接

接口示意图

BusPirate引脚 <-> 目标设备
  GND       <-> GND
  +5V       <-> VCC (可选)
  SCL       <-> SCL
  SDA       <-> SDA

常用命令

  • m:选择协议模式
  • i:显示当前模式信息
  • [:开始I2C嗅探
  • ]:停止I2C嗅探
  • (1):显示宏命令帮助

0x02 实战案例 - YL99数字密码锁破解

目标设备分析

  • 型号:YL99数字密码锁
  • 认证方式:完全依赖用户设置的数字密码
  • 账户类型
    • Master账户:用于管理用户密码(默认0123#)
    • 普通账户:存储普通用户密码

设备安全功能

  • 防窥功能
    • 输入格式:起始码(0) + 掩盖数字 + 正确密码 + #(确认)
    • 目的:防止旁观者获取真实密码

物理安全缺陷

  1. 键盘部分可被分离,暴露内部PCB主板
  2. 主板可见关键组件:
    • MCU:em78p156e
    • EEPROM:24C02(存储密码信息)

初级破解方法

  • 复位操作
    • 短接Reset复位触点和Ground
    • 效果:密码恢复出厂设置
  • 缺点
    • 需要物理拆卸
    • 容易被发现(恢复出厂设置)

高级破解方法 - I2C协议分析

准备工作

  1. 查阅24C02 datasheet:

    • 确认使用I2C协议
    • 识别管脚功能:
      • SCL:时钟频率
      • SDA:数据总线
  2. 硬件连接:

    • 将24C02的I2C管脚连接至BusPirate对应接口

密码传输分析

  1. 密码输入流程:

    • 起始码(0) + 正确密码 + 结束确认(#)
  2. 关键发现:

    • 按下#后,MCU向24C02发送密码验证请求
    • EEPROM以明文方式返回正确密码给MCU
    • 使用小端格式(little endian)存储密码

BusPirate嗅探结果

  • 示例密码:
    • 密码"123"显示为反序
    • 密码"456"显示为反序
  • 数据格式:
    [I2C Sniffer]
    Address | Data
    0xA0    | 0x32 0x31 0x30  // 反序显示密码"012"
    

0x03 安全建议

设计层面

  1. 物理防护

    • 防止设备被轻易拆解
    • 关键芯片应做封装保护
  2. 通信安全

    • 避免明文传输敏感数据
    • 实现加密通信协议
    • 使用哈希值验证而非明文密码
  3. 存储安全

    • 密码应加密存储
    • 使用安全存储芯片

开发层面

  1. 安全审计

    • 对硬件通信协议进行安全评估
    • 检查敏感数据传输方式
  2. 固件更新

    • 设计可更新的固件机制
    • 预留安全补丁接口

0x04 总结

攻击路径

  1. 物理拆解暴露内部电路
  2. 识别关键通信协议(I2C)
  3. 使用BusPirate嗅探通信数据
  4. 发现明文传输密码的安全缺陷

核心问题

  • 过度依赖"防窥功能"的表面安全
  • 忽视硬件通信协议的安全设计
  • 缺乏对存储芯片的防护措施

学习要点

  1. I2C协议的基本原理和安全隐患
  2. BusPirate工具的使用方法
  3. 硬件安全审计的基本流程
  4. 嵌入式系统安全设计的核心原则

附录:参考资源

  1. BusPirate官方文档
  2. 24C02 Datasheet
  3. IBM Thinkpad BIOS密码恢复案例
  4. YL99破解演示视频
I2C协议分析与实战破解教学文档 0x00 I2C协议基础 基本概念 I2C全称 :Inter-Integrated Circuit(集成电路总线) 开发者 :飞利浦公司设计 协议类型 :多主从架构的串口通讯协议 物理特性 数据线数量 :仅需2条数据总线 SCL :时钟线(Clock) SDA :数据线(Data) 外加Ground(地线) 架构特点 通常采用1个主设备和多个从设备的架构 支持多主控模式(多个主设备) 通讯速度 标准速度:100kHz 快速模式:400kHz 高速模式:1MHz 超高速模式:3.2MHz 应用场景 对速度要求不高的设备间通讯 PC风扇温度监控 电池电压数据采集 EEPROM芯片通讯(如存储BIOS密码的EEPROM) 寻址方式 每个I2C设备都有独立的读/写地址 必须知道设备的读写地址才能进行通讯 0x01 工具准备 - BusPirate 工具简介 名称 :BusPirate 开发者 :Dangerous prototypes 定位 :硬件hacking瑞士军刀 核心功能 支持多种常见协议 I2C SPI UART JTAG 1-Wire 其他 跨平台支持:Windows/Linux/MAC 丰富文档支持 主要用途 I2C协议嗅探(Sniffing) I2C设备读写 AVR等芯片编程 连接方式 使用minicom或其他串口工具 波特率:115200 通过USB接口连接 接口示意图 常用命令 m :选择协议模式 i :显示当前模式信息 [ :开始I2C嗅探 ] :停止I2C嗅探 (1) :显示宏命令帮助 0x02 实战案例 - YL99数字密码锁破解 目标设备分析 型号 :YL99数字密码锁 认证方式 :完全依赖用户设置的数字密码 账户类型 : Master账户:用于管理用户密码(默认0123#) 普通账户:存储普通用户密码 设备安全功能 防窥功能 : 输入格式:起始码(0) + 掩盖数字 + 正确密码 + #(确认) 目的:防止旁观者获取真实密码 物理安全缺陷 键盘部分可被分离,暴露内部PCB主板 主板可见关键组件: MCU:em78p156e EEPROM:24C02(存储密码信息) 初级破解方法 复位操作 : 短接Reset复位触点和Ground 效果:密码恢复出厂设置 缺点 : 需要物理拆卸 容易被发现(恢复出厂设置) 高级破解方法 - I2C协议分析 准备工作 查阅24C02 datasheet: 确认使用I2C协议 识别管脚功能: SCL:时钟频率 SDA:数据总线 硬件连接: 将24C02的I2C管脚连接至BusPirate对应接口 密码传输分析 密码输入流程: 起始码(0) + 正确密码 + 结束确认(#) 关键发现: 按下#后,MCU向24C02发送密码验证请求 EEPROM以 明文方式 返回正确密码给MCU 使用小端格式(little endian)存储密码 BusPirate嗅探结果 示例密码: 密码"123"显示为反序 密码"456"显示为反序 数据格式: 0x03 安全建议 设计层面 物理防护 : 防止设备被轻易拆解 关键芯片应做封装保护 通信安全 : 避免明文传输敏感数据 实现加密通信协议 使用哈希值验证而非明文密码 存储安全 : 密码应加密存储 使用安全存储芯片 开发层面 安全审计 : 对硬件通信协议进行安全评估 检查敏感数据传输方式 固件更新 : 设计可更新的固件机制 预留安全补丁接口 0x04 总结 攻击路径 物理拆解暴露内部电路 识别关键通信协议(I2C) 使用BusPirate嗅探通信数据 发现明文传输密码的安全缺陷 核心问题 过度依赖"防窥功能"的表面安全 忽视硬件通信协议的安全设计 缺乏对存储芯片的防护措施 学习要点 I2C协议的基本原理和安全隐患 BusPirate工具的使用方法 硬件安全审计的基本流程 嵌入式系统安全设计的核心原则 附录:参考资源 BusPirate官方文档 24C02 Datasheet IBM Thinkpad BIOS密码恢复案例 YL99破解演示视频