Skip to main content

用于从 Nordic nRF51 SoC 解锁和读取内存的嵌入式安全研究工具

项目描述

无线射频安全

nrfsec 是用于解锁和读取 Nordic Semiconductor 的 nrf51 系列 SoC 上的内存的安全研究工具。

  • 读取所有目标内存,通过集成的读取小工具搜索绕过内存保护单元 (MPU) 设置。
  • 自动解锁功能:读取所有程序和 UICR 内存,擦除所有内存,修补 UICR 图像,将目标重新刷新到解锁状态。
  • 用于在执行内存读取之前与目标交互的引导延迟命令标志,允许 RAM 转储。
  • 保存所有固件图像以导入您喜欢的反汇编程序。

安装

nrfsec 基于pyswd 库构建,目前仅适用于ST-Link调试接口。

nrfsec 需要 python 3.7+ 才能运行,并且可以使用 pip 安装:

pip3 install nrfsec

信息

快速信息检查将确保 nrfsec 能够与调试器和目标进行通信。信息的输出还将指定目标当前是否被一些其他有趣的目标信息锁定。

nrfsec info

获取芯片信息 在此处指定详细标志,并转储前面提到的信息以及 UICR 和 FICR 的全部内容。此处显示的所有信息都可以通过解释 UICR 和 FICR 中包含的寄存器来找到。

nrfsec 将自动找到可用的读取小工具并将所有内存转储到锁定的目标上。nrfsec 会将所有提取的图像存储在当前工作目录的 /fw 中。下面的示例可用于通过解析位于 FICR 中的内存规范来自动读取所有内存区域。

nrfsec read -a

读取所有内存

在开始内存提取之前以可选的延迟读取指定的内存区域。非常适合通过任何相关的移动应用程序与目标交互,以填充 RAM 和初始化外围设备。

nrfsec read -s 0x1000 -e 0x2000 -d 8 -o outfile.bin 

读取延迟

发出 lock 子命令将再次锁定目标。这在开发 nrfsec 时很有用,但如果您只是想锁定尚未锁定的目标,也可以使用它。

nrfsec lock

锁定目标

开锁

解锁子命令将执行以下步骤:

  1. 读取所有内存区域(最重要的是 ROM 和 UICR)并保存图像。
  2. 执行完整的目标擦除,这将允许再次写入 UICR
  3. 修补在步骤 1 中提取的 UICR 映像以禁用回读保护
  4. 重新刷写 ROM 并修补 UICR 回目标
nrfsec unlock

解锁目标

现在可以进行调试会话。

用法

✗ nrfsec -h
usage: nrfsec <command> [<args>]

perform security related tasks on nRF51 targets through SWD interface

optional arguments:
  -h, --help            show this help message and exit
  -f FREQUENCY, --frequency FREQUENCY
                        frequency to run the SWD interface (default 4 MHz)
  -v, --verbose         increase output verobsity

supported subcommands:
  {info,erase,restore,read,unlock,lock}
    info                display chip information
    erase               perform a complete erase
    restore             restore specific images to an unlocked chip
    read                read memory contents to outfile
    unlock              unlock the device if locked
    lock                lock the device if unlocked

待办事项

  • 测试 moar 目标

执照

GNU GPLv3

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

nrfsec-0.1.8.tar.gz (11.4 kB 查看哈希

已上传 source