此外,如果你真的打算自己解密,建议你买个BGA编程器,淘宝有很多,找到你闪存适用的即可:
https://s.taobao.com/search?q=bga%E7%BC%96%E7%A8%8B%E5%99%A8&imgfile=&js=1&stats_click=search_radio_all%3A1&initiative_id=staobaoz_20200108&ie=utf8
除非闪存有测试用的串行连接点(只需要焊接几个点),否则手工锡焊不太可能焊好。
然而问题是,解密安卓Data分区可能相当困难,并且涉及到TEE里存储的密钥,而TEE的数据存储在CPU中。
由硬件支持的 Keystore
https://source.android.com/security/keystore?hl=zh-cn
借助系统芯片 (SoC) 中提供的可信执行环境,Android 设备可以为 Android 操作系统、平台服务甚至是第三方应用提供由硬件支持的强大安全服务。
架构
Android Keystore API 和底层 Keymaster HAL 提供了一套基本的但足以满足需求的加密基元,以便使用访问受控且由硬件支持的密钥实现相关协议。
Keymaster HAL 是由原始设备制造商 (OEM) 提供的动态加载库,Keystore 服务使用它来提供由硬件支持的加密服务。为了确保安全性,HAL 实现不会在用户空间(甚至是内核空间)中执行任何敏感操作。敏感操作会被分配给通过某个内核接口连接的安全处理器。
旧设备使用的全盘加密似乎也很难在原装SoC外解密:
https://source.android.com/security/encryption/full-disk?hl=zh-cn#storing_the_encrypted_key
存储已加密的密钥
已加密的密钥存储在加密元数据中。硬件支持是通过使用可信执行环境 (TEE) 的签名功能实现的。以前在加密主密钥时,需要使用通过对用户的密码和存储的盐应用 scrypt 生成的密钥。为了使该密钥能够抵御盒外攻击,我们通过使用存储的 TEE 密钥为生成的密钥签名,扩展了这种算法。然后,通过再次应用 scrypt,生成的签名会转变成具有适当长度的密钥。该密钥随后会用于加密和解密主密钥。
安卓的data分区有加密,即使从闪存导出了原始数据,也需要解密后才能得到文件内容。
较新的系统使用文件级加密,在手机之外解密可能相当困难:
https://source.android.com/security/encryption/file-based?hl=zh-cn#key-derivation
此时,你的手机密码并不是文件解密密钥,它只是从安全芯片获取密钥的一个验证方式。如果无法得到存储在安全芯片中的密钥,data分区也就无法解密,数据恢复也就无法完成。
然而问题是,TEE安全芯片位于CPU内,如果手机无法开机,则无法得到该密钥。
所以,如果华为按AOSP推荐的方法实施了加密,则CPU损坏=丢失数据。如果CPU没有损坏,则将CPU和闪存一起安装到新主板上可能可以解密数据。
老一点的系统使用全盘加密:
https://source.android.com/security/encryption/full-disk?hl=zh-cn
此时,你需要找到128位密钥才能进行解密。但里面又涉及到喜闻乐见的TEE。在ARM架构中,TEE是CPU的一部分。