我想为RISC-V 开发板Sipeed MAix研究这个固件。你可以在这里下载:key_gen_v1.2.zip。顾名思义,它的目的是
- 计算并打印一个“机器密钥”到串口,
- 永远关闭 JTAG 端口,并且
- 写一次性 AES 密钥。
下载其他演示固件时需要机器密钥,倒车不是本文的主要目标。有关更多上下文,请参阅此线程。反转的重点是弄清楚如何在不永久禁用 JTAG 的情况下获取机器密钥。
的快速分析binwalk不会产生任何有趣的结果。
$ binwalk -e key_gen_v1.2.bin
DECIMAL HEXADECIMAL DESCRIPTION
--------------------------------------------------------------------------------
熵分析表明固件没有使用混淆
这是输出 strings
sP00sP 0sP@0sP@4
)'#0A'#<Q%#8a%#4q%#0
$#8A##4Q##0a##8
"#0!##<1!#8A!#<
$#8A##4Q##0a##8
0000000000000000
0123456789abcdef
0123456789ABCDEF
0000000000000000
0000000000000000C
0000000000000000
(((((
V (%lu) %s: misaligned load recovered at %08lx. len:%02d,addr:%08lx,reg:%02d,data:%016lx,signed:%1d,float:%1d
V (%lu) %s: misaligned store recovered at %08lx. len:%02d,addr:%08lx,reg:%02d,data:%016lx,float:%1d
[0;31mE (%lu) %s: Out of memory
[0;33mW (%lu) %s: sys_exit called by core %ld with 0x%lx
[0;31mE (%lu) %s: Unsupported syscall %ld: a0=%lx, a1=%lx, a2=%lx!
?Error: No workable settings found.
Error: No appropriate ratio found.
在Reversing the WRT120N's Firmware Obfuscation中,通过观察串口的输出取得了突破。但是,这个特定的固件不会向串行端口输出太多有用的信息。此外,我还没有找到一个像样的 RISC-V 反汇编器(比如 ARM 的 IDA)。
我接下来可以做什么?
