反转和破解外部自加密驱动器是我的旧爱好。 过去,我曾经使用过诸如Zalman VE-400,Zalman ZM-SHE500和Zalman ZM-VE500之类的模型进行练习。 最近,一个同事给我带来了另一个展览:爱国者(Aigo)SK8671,它是按照典型设计制造的-LCD指示器和用于输入PIN码的键盘。 这就是它的来历...
1.简介
2.硬件架构
-2.1。 主板
-2.2。 液晶板
-2.3。 键盘板
-2.4。 我们看一下电线
3.攻击步骤的顺序
-3.1。 删除SPI闪存驱动器的数据转储
-3.2。 嗅探通讯

1.简介

房屋

包装方式
输入PIN码后,可以访问存储在磁盘上的数据(据称已加密)。 此设备的一些介绍性注意事项:
- 要更改密码,请在解锁前按F1键;
- 密码必须在6到9位之间;
- 15次错误尝试后,磁盘将被清除。
2.硬件架构
首先,我们将设备分成几部分,以了解其由哪些组件组成。 最繁琐的任务是打开盒子:许多微小的嵌齿轮和塑料。 打开机壳后,我们看到以下内容(请注意由我焊接的五针连接器):

2.1。 主板
主板非常简单:

它最值得注意的部分(请参见从上到下):
- LCD连接器(CN1);
- 高音扬声器(SP1);
- Pm25LD010( 规格 )SPI闪存驱动器(U2);
- 用于USB-SATA(U1)的Jmicron JMS539控制器( 规范 );
- USB 3连接器(J1)。
SPI闪存驱动器存储JMS539的固件和某些设置。
2.2。 液晶板
液晶板上没有什么特别的。


只是:
- LCD指示器来源不明(可能带有中文字体); 具有顺序控制;
- 键盘板的带状连接器。
2.3。 键盘板
当您查看键盘面板时,事情会变得更加有趣。

在背面,我们看到带状连接器以及赛普拉斯CY8C21434-微控制器PSoC 1(以下简称为PSoC)

CY8C21434使用M8C指令集(请参见文档 )。 在产品页面上,表明它支持CapSense技术(赛普拉斯的电容式键盘解决方案)。 在这里,我可以看到由我焊接的五针连接器-这是通过ISSP接口连接外部编程器的标准方法。
2.4。 我们看一下电线
让我们找出与此有关的内容。 为此,用万用表将导线振铃就足够了:

此膝上图的说明:
- PSoC在技术规范中进行了描述。
- 第二个连接器,右边的一个是ISSP接口,按照命运的决定,它对应于Internet上关于它的内容。
- 最右边的连接器是带键盘的带状连接器的端子;
- 黑色矩形是CN1连接器的图形,用于将主板连接到LCD板。 P11,P13和P4-连接到LCD板上的PSoC引脚11、13和4。
3.攻击步骤的顺序
现在我们知道该驱动器由什么组成,我们需要:1)确保基本存在加密功能; 2)了解如何生成/存储加密密钥; 3)查找准确检查了密码的位置。
为此,我已经完成了以下步骤:
- 删除了SPI闪存驱动器的数据转储;
- 我试图删除PSoC闪存驱动器的数据转储。
- 确保赛普拉斯PSoC与JMS539之间的数据交换实际上包含所按下的键;
- 确保更改密码时,SPI闪存驱动器中不会覆盖任何内容;
- 太懒了,无法从JMS539撤消8051固件。
3.1。 删除SPI闪存驱动器的数据转储
此过程非常简单:
请注意,这种方法在JMS539控制器的情况下特别有效,因为该控制器在初始化阶段从USB闪存驱动器加载了整个固件。
$ decode_spi.rb boot_spi1.csv dump 0.039776 : WRITE DISABLE 0.039777 : JEDEC READ ID 0.039784 : ID 0x7f 0x9d 0x21 --------------------- 0.039788 : READ @ 0x0 0x12,0x42,0x00,0xd3,0x22,0x00, [...] $ ls --size --block-size=1 dump 49152 dump $ sha1sum dump 3d9db0dde7b4aadd2b7705a46b5d04e1a1f3b125 dump
从SPI闪存驱动器中删除转储后,我得出的结论是,它的唯一任务是存储JMicron控制单元的固件,该单元内置于8051微控制器中。 不幸的是,转储SPI闪存驱动器原来是没有用的:
- 更改PIN码时,闪存驱动器转储保持不变;
- 初始化阶段之后,设备将无法访问SPI闪存驱动器。
3.2。 嗅探通讯
这是找到哪个芯片负责检查感兴趣的时间/内容的通信的一种方法。 众所周知,USB-SATA控制器通过CN1连接器和两条胶带连接到Cypress PSoC LCD。 因此,我们将探针连接到三个相应的分支:
- P4,通用输入/输出;
- P11,I2C SCL;
- P13,I2C SDA。

然后,我们启动Saleae逻辑分析仪,并在键盘上输入:“ 123456〜”。 结果,我们看到下图。

在其上,我们可以看到三个数据交换通道:
- 信道P4有几个短脉冲串;
- 在P11和P13上-几乎连续的数据交换。
增加通道P4上的第一个脉冲串(上图的蓝色矩形),我们看到以下内容:

在这里,您可以看到在P4上几乎有70ms的均匀信号,起初在我看来,它起着时钟信号的作用。 但是,花了一些时间来验证我的直觉后,我发现这不是时钟信号,而是按下键时输出到squeaker的音频流。 因此,此信号部分本身不包含对我们有用的信息。 但是,它可以用作指示符-了解PSoC注册按键的时间。
但是,P4通道的最后一个音频流与其他通道略有不同:这是“错误密码”的声音!
返回击键图,增加最后一个音频流的图(再次参见蓝色矩形)时,我们得到:

在这里,我们在P11上看到单调信号。 所以看起来这是时钟。 P13是数据。 请注意,蜂鸣结束后花样如何变化。 看看这里发生了什么会很有趣。
用两根线工作的协议通常是SPI或I2C,赛普拉斯的技术规范说这些触点对应于I2C,正如我们所看到的,这对于我们的情况是正确的:

USB-SATA芯片组不断轮询PSoC-读取密钥状态,默认为“ 0”。 然后,当您按下“ 1”键时,它将变为“ 1”。 如果输入了错误的PIN码,则在按“〜”后立即进行的最终发送会有所不同。 但是,目前我还没有检查实际发送到那里的内容。 但是我怀疑这几乎不是加密密钥。 无论如何,请参见下一节以了解如何删除内部PSoC固件的转储。