专栏名称: 看雪学苑
致力于移动与安全研究的开发者社区,看雪学院(kanxue.com)官方微信公众帐号。
今天看啥  ›  专栏  ›  看雪学苑

m0leCon CTF 2025 Teaser re Embedded encryption RISCV 对称密码

看雪学苑  · 公众号  · 互联网安全  · 2024-09-24 17:59

文章预览

RISCV 32位,看起来是固件的代码。 一 架构、硬件相关API 大部分架构、硬件相关函数看名字猜功能。 metal_gpio_get_input_pin 函数百度一下,是从针脚读数据: __inline__ int metal_gpio_get_input_pin(struct metal_gpio *gpio, int pin) // Get the value of the GPIO pin. ida中F5的结果(美化了一下,应该是虚函数调用)如下,其返回值类型不是int而是bool: bool __fastcall metal_gpio_get_input_pin(int device, char pin) { return device & & (device->func(device) & (1 < < pin)) != 0; } 调用了随机数相关的api:srand和rand,实现和我电脑上的编译器调的库不一样,这两个API的实现也在ELF中给出来了,后续直接复制ida f5的结果出来用就行。 二 初始化 有一个数组长度是1604,ida里设成1608显示的效果好一点。 数组初始化内容如下: data[0:32) (32字节) = 0, 1, 2, 3, ... , 31 data[32:65) (32+1字节) = "ptm{REDACTEDREDACTEDREDACTEDRED}\x00" ………………………………

原文地址:访问原文地址
快照地址: 访问文章快照
总结与预览地址:访问总结与预览