硬件黑客与Shikra
设备比较:Bus Pirate与Shikra
这是《硬件黑客101》网络研讨会的后续博客文章,比较Bus Pirate和Shikra两种设备。最近我主持了一个关于使用Bus Pirate黑客路由器的网络研讨会,可在https://www.blackhillsinfosec.com/webcast-hardware-hacking-101/观看。在网络研讨会中,我提到了使用Bus Pirate从芯片转储固件所需的时间(约30分钟)。而本文将展示相同内容,但使用Shikra设备完成。
如果您不熟悉Bus Pirate,建议查看网络研讨会及Dangerous Prototypes网站:http://dangerousprototypes.com/docs/Bus_Pirate。
Bus Pirate和Shikra都是使用户能够通过USB接口与不同协议交互的设备,支持JTAG、SPI、IC2、UART和GPIO等协议。
芯片隔离与连接
在网络研讨会中,我讨论了芯片隔离,示例中我将芯片从路由器上移除以实现完全隔离。本文将从连接设备开始。请注意,我已将带有固件的芯片放置在 breakout 板上,如下图所示。
接下来,我们需要检查芯片和Shikra的引脚布局,以便通过Shikra与芯片正确连接。Shikra的引脚定义和信息可在https://int3.cc/products/the-shikra找到。我们使用的芯片是MX25L6406E/MX25L6408E。快速查看数据手册提供了设备的引脚定义。
我们还观察了每个引脚的功能定义。
需要Shikra的引脚定义来确定如何将breakout板(芯片)连接到它。
连接配置
有了引脚定义后,我们可以按照下表所示将它们连接起来。
与网络研讨会中一样,使用带有电源的面包board为芯片供电,并实现上表中的连接。
固件提取命令
连接完成后,我们准备转储固件。使用Bus Pirate时,我们使用了以下命令:
|
|
flashrom命令设置了BusPirate上芯片使用的协议类型。此处,flashrom具有BusPirate_spi特定协议。命令然后识别设备位置(ttyUSB0)和读取数据的速度(注意:任何更高的速度都会变得不稳定)。-c 指定要读取的设备类型,-r 将数据写入文件。
然而,使用Shikra时,我们仍然使用flashrom,但命令是:
|
|
其中flashrom命令设置了Shikra上芯片使用的协议类型(ft2232)和类型,-c 指定要读取的设备类型,-r 将数据写入文件。
性能对比
通过比较两种读取速度,显然Shikra读取芯片的速度要快得多。Bus Pirate需要30分钟读取的内容,Shikra仅需3分钟。
公平起见,我使用了Bus Pirate版本3.6进行测试。Dangerous Prototypes有一款新板叫Bus Blaster,使用与Shikra相同的ft2232芯片。谁知道呢…可能还需要另一篇博客文章进行比较。