特斯拉(Tesla)汽车Flash数据恢复解决方案
当我们谈论从USB闪存设备恢复数据时,磨损的NAND闪存芯片是一个常见问题。如今,即使是刚出厂的芯片也可能质量很差。因此,您的闪存盘(U盘)可能会在一个月内死掉。不幸的是,当我们谈论其他可以使用NAND芯片的设备时,也可以看到这种趋势,例如SSD,手机,甚至带有Flash芯片的汽车!
2012年至2018年间生产的特斯拉汽车,使用的信息娱乐系统由英伟达的Tegra 3 芯片提供系统动力,该芯片包含8GB的eMMC NAND存储。问题是,这些闪存芯片已经磨损,达到了程序擦除周期限制,无法可靠地存储数据,导致运行中出现故障。大约有16万辆汽车的eMMC存储在车内,可能会受到这个问题的影响。存储控制器无法再找到工作良好的NAND块来使用,因此出现故障。一旦存储空间磨损,可能会影响汽车的某些功能,如触摸屏、后视摄像头、除雾系统等。在最糟糕的情况下,它甚至会影响特斯拉汽车的重要功能,比如自动驾驶。
特斯拉已经意识到这些问题,并尝试通过一些更新来解决问题,这些更新减少了正在写入的日志数量,改进了错误纠正和存储策略。此外,在2020年5月,特斯拉开始生产备件,这些备件现在使用64GB美光eMMC,而不是海力士的8GB eMMC。
但主要问题仍然存在。如果需要查找和保存一些系统文件,如密钥和证书,该怎么办?
让我们来看看这类汽车的两个真实案例。
第一个芯片是SM控制器,ADD79491 6044ADD7 memory,part size = 4096Mb, page size = 8832 bytes, block size = 2048 pages。在这种情况下,芯片有两个bank,但你也可以只获得芯片的一个bank。我们需要找到名称为car.key和car.crt 的密钥文件和证书文件
为此,我们需要执行一些准备步骤。
首先,你需要从这个芯片读取dumps文件。你需要找到引脚排列方案。
成功读取转储后,我们开始更改块大小。
Step 1. 由于这个驱动器的大小非常大,第一步是将任务中的块大小更改为4096页。可以这样做:
此操作对于应用此大小的XOR是必需的。在某个阶段,您将需要返回等于256的块大小的原始值,但我们稍后将返回该值。
Step 2.因为我们有两个bank,所以我们最后的任务是两次dumps。与一个dumps案例的区别仅在于少了一个“通过区块/页面连接”。
所以,两个dumps的主要问题是每个bank都有XOR。您可以在顶部的XOR列表中看到它们。
XOR的名称包含有关芯片启用部件和将要执行的操作的信息(用于纠错的ECC区域的数据解密或用于图像组装的数据区域的数据解密)。对于单个银行芯片,不需要CE1的XOR。
Step 3. 以下是此类情况的标准准备步骤:
在这种情况下,XOR用于一些虚拟安排,我们通过改变芯片节点上块的大小来设置虚拟安排的大小。这个小技巧消除了纠正和重新读取不同图中dumps的需要,也就是说,在图的第三行,我们定义ECC,进行纠正并重新读取无效扇区。图的第四行也是XOR,但这是数据的XOR,它不是自给自足的,这就是为什么在ECC的XOR之后应用它很重要。当我们需要先为ECC选择XOR,然后为块号选择XOR时,这种XOR变化看起来非常类似于AU情况。
页面设计应该是这样的:
Page size: 16 sectors 8832
Sector size 544
Structure*
32-512; 0-32;
544-512; 0-32;
1126-512; 0-32;
1638-512; 0-32;
2220-512; 0-32;
2732-512; 0-32;
3314-512; 0-32;
3826-512; 0-32;
4408-512; 0-32;
4920-512; 0-32;
5502-512; 0-32;
6014-512; 0-32;
6596-512; 0-32;
7108-512; 0-32;
7690-512; 0-32;
8202-512; 0-32;
这是非常重要的一步!在添加所有转换后,我们返回操作的步骤1,并返回参数中256页的初始块大小。
在完成所有转换、ECC工作并尽可能多地重新读取dumps之后,您可以开始构建映像。图像是用一种特殊的脚本组合而成的。请确保所有参数与图中相同。
如果ECC出现大问题,可以使用GREP search,car.crt使用模式@4\x2D\x42\x45\x47\x49\x4E\x20\x43\x45\x52\x54和car.key @4\x2D\x42\x45\x47\x49\x4E\x20\x52\x53\x41\x20。这两种类型的文件在文件末尾都有一个字节序列2D2D2D2D2D0A,可用于确定文件的准确大小。
第二种情况是PS8032控制器或类似的,1×2 ADD794DA 74C30000 memory, part size = 4096Mb, page size = 8832 bytes, block size = 256 pages,双通道内存,表示存在两组独立的IO0-7线。
一般来说,第二个任务与上述情况非常相似,但有一些例外。
1.图表第一行的ECC应该这样定义:
– 0 [1076]
– 1076 [1072]
– 2148 [1072]
– 3220 [1072]
– 4292 [1072]
– 5364 [1072]
– 6436 [1072]
– 7508 [1072]
2. 一组典型的转换和装配参数应如下所示:
否则,方法和问题与本文第一种情况相同。主要问题是垃圾的质量。芯片通常已磨损。这样就比较容易了,先把所有的转换都做完,然后通过GREP搜索找到需要的car.key和car.crt文件,然后专注于重新读取这些文件的页面。请记住,通道不同,dumps是通过扇区组合的。这就是为什么您只能在图表的第一行重新读取,但将文件保存在最后一行。为了更方便重新阅读,您可以将转换顺序稍微更改为以下顺序:
如果您对数据恢复案例有任何疑问,欢迎您联系我们。