如何提取NVRAM文件的内容?

逆向工程 固件 linux 嵌入式 闪光
2021-06-14 16:47:34

如何从 NVRAM 文件中提取内容?NVRAM 类型是 SPI 串行 NOR 闪存。NVRAM 已被复制为 mtdblock 分区。

运行 Linux v2.6.18_pro500 的嵌入式设备。

Linux version 2.6.18_pro500 (gcc version 4.2.0 20070126 (prerelease) (MontaVista 4.2.0-2.0.0.custom 2007-02-12) 
Processor: ARMv6-compatible processor rev 4 (v6b)

MTD 设备包含 8 个分区,nvram mtd7 分区是jffs2文件系统。

/proc/mtd
dev:    size   erasesize  name
mtd0: 00020000 00010000 "U-Boot"
mtd1: 00010000 00010000 "env1"
mtd2: 00010000 00010000 "env2"
mtd3: 007b0000 00010000 "UBFI1"
mtd4: 007b0000 00010000 "UBFI2"
mtd5: 000c886c 00010000 "Kernel"
mtd6: 00416800 00010000 "RootFileSystem"
mtd7: 00050000 00010000 "nvram"
3个回答

由于没有标准的 NVRAM 格式,您需要找到读取和/或写入它的任何代码并分析它是如何工作的。如果厂商提供了 GPL 源代码,或许可以从中窥探到一些细节。但是,在某些情况下,通过使用十六进制编辑器/查看器查看数据,格式可能很明显,例如,请参阅此博客

根据这个页面,你可以试试这个命令:

dd if=/dev/mtdblock/0 bs=1 skip=4116 count=2048 | strings > /tmp/cfe.txt

我自己解决了这个问题。NVRAM mtd7 分区是jffs2文件系统,我使用 JFFS2 文件系统提取工具成功提取了内容。