首页 » 科学 » 狗汪汪玩转嵌入式——I2C 协议分析_暗码_协定

狗汪汪玩转嵌入式——I2C 协议分析_暗码_协定

落叶飘零 2024-11-30 16:51:03 0

扫一扫用手机浏览

文章目录 [+]

本文由阿里云先知社区小冰推举。

0x01 I2C协议根本

狗汪汪玩转嵌入式——I2C 协议分析_暗码_协定 科学

凡是打仗过嵌入式系统的朋友,对I2C协议一定不会陌生。
其与UART,SPI和JTAG等并列为最常见调试协议。
I2C 全称为Inter-Integrated Circuit,是由飞利浦公司设计的一种多主从架构的串口通讯协议。

I2C协议非常大略,仅有Clock 和 Data 两条数据总线,外加 Ground. 常日是1个主设备和多个从设备的架构。
在通讯速率上分别为100khz,400khz,1Mhz,3.2Mhz。
在利用方面对速率没有高哀求的,都可以利用I2C进行通讯。
比如PC风扇的温度和电池的电压数据采集等,每个I2C设备都各有一个读和写地址,只有知道了这个读写地址才能跟其通讯。

除此之外许多用来存储系统配置和参数的EEPROM芯片自身也支持I2C协议,比如IBM Thinkpad 系列用来存储BIOS 密码的EEPROM,便是通过I2C协议在MCU与EEPROM 之间进行交互。

0x02 神器BusPirate

工欲善其事必先利其器,拥有一款神器对嵌入式设备Hacking将起到事半功倍的浸染。
BusPirate 是由Dangerous prototypes 设计出品的一款硬件hacking 瑞士军刀,支持多项常见协议并可跨平台Windows/Linux/MAC,并拥有丰富的帮助文档。

BusPirate可以Sniffing 和读写 I2C等协议,同时还可对AVR 等芯片进行编程操作,在操作上也是非常大略,只需用minicom 以115200 波特率跟BusPirate连接便可。

BusPirate支持协议如下:

BusPirate 接口连接示意图:

BusPirate 命令列表:

0x03 攻击案例 -- 数字密码锁

接下来我们来看一个通过剖析I2C 协议,从而破解门锁密码的实战案例,我们的目标是这款 型号为YL99 的数字密码锁。
这款密码锁完备依赖于用户设置的数字密码,大概对某些人来说不须要带一堆钥匙的确方便了很多。

由于YL99 是完备电子化的的门锁,以是供应了普通机器锁没有的功能。
比如YL99 拥有多 个功能不同的账户,Master 账户:可用于设置管理用户密码(默认0123#)。
普通账户:用于存储普通用户密码。
YL99 同时还供应了知心的防密码泄露功能,操作方法:键入起始码(0) + 跟随用于粉饰的任意几位数字+ 跟随精确密码 + # (确认结束). 通过这样的办法就算边上有人,也不怕被看到精确密码了。

但是千里之堤,溃于蚁穴。
YL99 的设计毛病,竟能让人从外部将锁的键盘部分分离,从而访问到内部PCB 主板。
而玩过硬件Hacking 的朋友都知道,被人轻易访问到内部PCB 主板部分是大忌。

在YL99被打开后主板构造便展现面前。
除了YL99 利用的元器件外,我们还可以清晰看到主板上还标有一个Reset 复位触点。
那么这个时候我们便可以通过短接复位触点和Ground 的办法将密码规复到出厂设置,从而得到bypass 的目的。
但这方法的短处也非常明显,在bypass 的时候每次都须要卸螺丝,而且如果规复到出厂值,很随意马虎就被人创造了。

演示视频如下: https://www.youtube.com/watch?v=4sqDXkUQbqM

不过好戏才刚开始。
我们在主板上还创造了YL99利用的MCU em78p156e 和用来存储密码信息的EEPROM 24C02。
通过阅读24C02 的datasheet 我们得知其利用I2C 协议和MCU 通讯,同时datasheet 也清晰的标出了芯片管脚的用场,比如I2C 利用的SCL(时钟频率) 和SDA(数据总线)。

终于我们的神器BusPirate要派上用场了。
我们首先用数据线将24C02的I2C 管脚和BusPirate的对应接口连接起来。

随后通过minicom 或其他serial tools 进入Buspirate的I2C调试模式。

在I2C 的调试模式中,有个非常有用的功能I2C sniffer。
通过它我们可以监控I2C 的数据,用过WIRESHARK 的朋友一定不会陌生。

开启了I2C Sniffer 模式后,我们便可开始不雅观察MCU 和 EEPROM之间的密码交互。
比如YL99 的密码输入过程为起始码(0) + 精确密码 + 结束确认(#)。

通过不雅观察创造在按下结束确认(#) 后,MCU 便向24C02 发送密码验证要求。
但随后致命的设计缺点涌现,EPPROM 24C02 将精确的密码以明文的办法发回给MCU 以求完成密码验证过程,而这过程我们通过BusPirate 的I2C sniffer一览无遗。

如图:由于利用的little endian 以是密码 123 和456 会反着显示

0X04 总结

通过本文的先容和实践案例,相信大家对I2C 协议和利用办法有了一定的理解。
剑走偏锋,反其道行之。
攻击者每每将系统的短板作为攻击点,倘若某款嵌入式系统的设计者仅仅考虑到软件层面的安全,而攻击者又能得到物理访问的话,那些防御办法便形同虚设。
同时嵌入式产品每每面临上市后便难以升级的困难,一旦攻击办法曝光由此给产品带来的丢失是巨大的,因此安全产品在设计之初即应将安全考虑进去。

0x05 参考文献

https://learn.sparkfun.com/tutorials/i2c

http://dangerousprototypes.com/docs/Bus_Pirate

https://code.google.com/archive/p/the-bus-pirate/

http://dangerousprototypes.com/blog/bus-pirate-manual/i2c-guide/

http://arduino.ada-language.com/recovering-ibm-thinkpad-t42-bios-password-with-avr-ada-and-arduino.html

标签:

相关文章

TCOOP-M101-433M发射模块_暗记_波形

遥控器参数遥控器采取HS2245PT芯片,吸收模块采取LR43B无线射频吸收模块遥控器与吸收模块选用的是下图所示的两款:由于LR4...

科学 2025-01-24 阅读3 评论0

源代码遭泄露是谁在扰乱_北碚区_产物

“感谢审查机关对民营企业著作权的重视和保护,帮我们挽回丢失,现在我们加强了软件源代码保密事情……”1月26日,重庆市北碚区审查院审...

科学 2025-01-24 阅读7 评论0