|
好久没水过贴了,本来这周是已经上班的了。由于今年的特殊情况,被改为在家办公了,因此忙中偷闲,给网友做了个SM3267AB主控的数据恢复,顺便上个过程,大佬们轻喷,本人只是业余爱好搞这个,若有名词说错还请谅解。
本次使用工具:热风枪、万用表、FlashExtractor、IS903参数表、计算器。
本次恢复已征得此朋友同意,并在实际数据预览展示部分针对性进行相关处理。
接到一名网友求助。U盘插入电脑,提示未识别硬件。U盘盘符无法显示,需要恢复U盘内的照片
当我收到U盘时,网友已拆除了外壳。但是由板型可得出这是雷某沙牌的U盘。采用镁光大S颗粒PFC52-10AL级别单片16G-1CE 双贴MLC颗粒双贴共组成了32G容量,主控采用慧荣的SM3267L-AB,支持USB3.0,2.0,ISO多启动….叭啦叭啦的,至于10AL是什么级别,这里就贴一张图直接带过了。
第一部分:验证外围电路及工作条件
到手验证,无论插USB2.0还是3.0均出现如下图显示【与网友描述一致】
当然出现这种情况,也并不一定是固件损坏,也可能是外围一些IC组件损坏,这还需要进行一些验证。
1.首先我对主控板进行了诊断【这部分没拍照】,首先检查了USB头到主控芯片之间的耦合电容,使用万用表进行测试,检测其是否存在短路情况,因为电容短路也会造成U盘无法被正常识别【检测结果表明,电容并未短路】
2.随后,我接着测试了主控的VCC电压,闪存的VCC,VCCQ电压是否正常(若供电存在异常会导致识别错误,或者无法识别故障)。【结果表明供电正常】
3.初步检测后,再次怀疑是否主控或者颗粒是否存在虚焊情况,随后使用330度的风枪,对主控及Flash加热3分钟补焊。
4.随后插入电脑再次进行验证。结果如下【依然无法识别】
5.当然还有最后一步要做。也可能是主控板内部断线导致一些电信号无法正确传输导致的问题。随后我将U盘短接,插入电脑尝试识别
打开chipgenius识别主控及闪存,短接很顺利就识别到了。随后我再次打开了3267AE的量产工具,尝试读取CE,查看ID是否全部识别正确。打开后,发现CE完全正确,主控板已确定没有问题,无法识别的原因为固件损坏
第二部分:拆解
已确认为固件损坏后,我开始对此盘的Flash拆解下来
第三部分:读取Flash闪存的底层数据
此处需要使用到FlashExtractor工具【如下图以下简称FE】,把每颗闪存的底层数据dump出来
芯片装载完毕后,使用NAND_Reader软件先对芯片的参数进行一些初始化配置:
1.此处借助了IS903的闪存参数表【当然2246一类或者其他参数表也可以,主要是903的参数表非常明了】
2.随后使用Ctrl+F查找到了PCF52这颗芯片的ID【ID在3267量产工具上已读出记录下来了】
3.打开计算器,进行十六进制换算,因为FE认的都是十六进制数据
4.随后经过换算得出了该颗粒的页(page)大小约为17600,块(block)为0x898000,大块(blocks)为830
5.一切就绪,开始对颗粒底层进行读取,此处读取每颗芯片的时间约为30分钟,2颗就是1小时了。容量越大,读取的时间越长
第四部分:算法编译
打开了FE算法编译工具后,对dump出来的两个镜像进行进一步编译分析,此处先使用Auto查找出该颗粒搭配3267主控相关的算法,再进一步分析
经过一些经验的判断及详细筛选,我这里采用了SM3257 1098_27 Xor 2850_256这个算法对颗粒进行编译,随后查找了一下分区的MFT,证明此算法可适用于该颗粒
此时把ECC纠错修改为ON模式,即打开ECC纠错。随后我检查了ECCMAP,如上图红绿相间的部分,红色部分(ECC存在无法纠正的数据部分,也就是这红色区部分数据无法正常读取或损坏被当做坏块了)、绿色部分(正常可被读取的数据)。
结果表明第一片闪存状态并不乐观,拉了一下ECCMAP,第一片颗粒的红色区大概占了60%+,但是第二片颗粒情况会稍微好点,估测只有10%左右的。根据FE官方的文档手册,需要保持ECCMAP 绿色部分在90%以上恢复效果最佳。但是我读出来的这两片至少是有大部分是坏数据ECCMAP最多只有60%不到的绿色区块。
但是即使这样,也需要继续进行编译工作,先把编译模型做出来。还是依然采用903的参数表,该颗粒的页大小十进制为16384,转换为16进制为0x4000,因此我这里采用join by page 把这两片Flash连接起来。
随后我偷了个懒,采用了Find Mix自动分析。自动分析出的结果需要配置一个块页转换,如下图红框表示,填入了自动分析的数值【其实这步块页转换也可以使用计算器算出来,但是能偷懒就偷懒下了,不对再改】
随后,我进入了经算法编译后的十六进制分区预览页,此处采用0055aa/h/512/509查找分区头。此处找到了一个FAT32的分区表,因为U盘默认情况下只有一个分区,因此我的搜索就到这里了,能搜出分区表头,证明算法选择及页块转换应该没有太大问题
随后,开始调整芯片的块大小(这一步决定后面能否正确读出分区表及数据),随便找一段分区数据跳转,随后拖动光标,直到红框下的Block数值,出现0xb6、0xb7、0xb8….这样为止,并记录出现连续值的block值大小
第五部分:尝试恢复
随后我打开编译窗口,填入了刚才确定的块大小,块大小预估为0x2000000
编译完成后,尝试打开此分区。
但是分区打开后,文件名存在乱码,并且存在大量不可恢复数据,看起来是第一片颗粒红区太多的锅了。【以下图片暗红色圆点表示此文件可能对应的文件头不正确、红色圆点为已找到文件头、但是数据不完整或已被删除部分、绿色圆点为可正常的文件】
随后我退出了编译界面,返回首页,采用ECC Fix,此处利用虚拟主控算法,针对错误的数据部分尝试进行再次纠正
经过了大概一个半小时后,可以被纠正的部分,已经进行了自动纠正。随后我检查了一下ECCMAP,大概有70%的绿色区域了,但是依然未达到最佳情况。
随后再次进入编译界面,这次好像比上一次好一些,但是文件夹部分依然为红色无法打开的状态,通过快速文件筛选发现依然存在大部分红色不可读取的部分
最后没办法,只能尝试再重读一下闪存芯片了,把芯片重新装入FE硬件设备,随后我进行了一下预测试,确定重读模式,因为Flash是属于Micron(镁光)品牌,因此我采用Micron专用的重读模式进行了快速测试,最后发现6号模式出现的红色区块部分为0,因此决定使用6号模式进行重读Flash
重新回到读取部分,此处选择镁光模式进行Flash重读
重读完成后,重新加载了之前做好的模型,再次进行编译测试。发现依然存在红快也就是个别文件依然无法恢复或完全损坏。
此时把ECC=ON,打开预览了一下文件及ECCMAP,发现ECCMAP的绿色区域估算为85%左右,依然未达到最佳的90%,但是至此,应该是最好的结果了【后面我还测试了其余几个模式进行芯片重读,但是效果依然没有这次的这么好】
随后经算法编译出来的文件进行导出处理
恢复成果如下【相关部分已打Mark】
恢复出来的照片大概4.29G
虽然没有达到完全的100%恢复的效果,因为颗粒上的坏块过多,覆盖了一些正常的数据,导致数据无法被正常读取。本次恢复出来的数据完整度大概为95%,针对损坏了15%区域的U盘来说,出来的数据有大约95%的数据完整度已经是最好的结果了。因为每个Flash上厂家设计时都会留有一些备用的区块,用于做坏块替换,但是当这部分区域用完后,就可能会出现正常的数据被坏块覆盖的情况。
相关文章:
试用FLASH-Extractor恢复SM2246主控的雷克沙CFAST摄影机存储卡数据:
https://www.mydigit.cn/forum.php?mod=viewthread&tid=79915
下面送上配置好的颗粒参数及此主控模型:
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
打赏
-
查看全部打赏
|