如何解密加密的Apple iTunes iPhone备份?
许多不幸的iPhone用户曾要求我帮助他们从iTunes备份中还原数据。当未加密时,这很容易,但是无论是否知道密码,都不容易。 因此,我试图找出加密时用于mddata和mdinfo文件的加密方案。否则,我可以毫无疑问地读取这些文件,并且为此构建了一些健壮的C#库。(如果您能提供帮助,我不在乎您使用哪种语言。这是我在这里遵循的原则!) 苹果公司的《 iPhone OS企业部署指南》指出:“可以通过在iTunes的设备摘要窗格中选择“加密iPhone备份”选项,以加密格式存储设备备份。文件使用256位密钥的AES128进行加密。安全地存储在iPhone钥匙串中。” 这是一个很好的线索,并且在iPhone AES / Rijndael互操作性上的Stackoverflow上有一些很好的信息,建议使用128的密钥大小和CBC模式。 除了其他混淆之外,还需要密钥和初始化向量(IV)/盐。 人们可能会认为该密钥是对“备份密码”的一种操纵,iTunes会提示用户输入该密码,并将其传递给“ AppleMobileBackup.exe ”,并以CBC规定的方式进行填充。但是,考虑到iPhone钥匙串,我想知道“备份密码”是否可能不用作X509证书或对称私钥上的密码,以及该证书或私钥本身是否可以用作密钥。(AES和iTunes的加密/解密过程是对称的。) IV是另一回事,可能是几件事。也许它是硬编码到iTunes或设备本身的密钥之一。 尽管Apple的上述评论暗示密钥存在于设备的钥匙串中,但我认为这并不那么重要。可以将加密的备份还原到另一台设备,这表明备份和iTunes配置中存在与解密相关的所有信息,并且在这种情况下,仅设备上的任何内容都是不相关且可替换的。那么关键可能在哪里? 我在下面列出了Windows机器上的路径,但是无论我们使用哪种操作系统,它在很大程度上都是很大的。 “ \ appdata \ Roaming \ Apple Computer \ iTunes \ itunesprefs.xml”包含一个带有“ Keychain”字典条目的PList。“ \ programdata \ apple \ Lockdown \ 09037027da8f4bdefdea97d706703ca034c88bab.plist”包含带有“ DeviceCertificate”,“ HostCertificate”和“ RootCertificate”的PList,它们似乎都是有效的X509证书。同一文件似乎还包含非对称密钥“ RootPrivateKey”和“ HostPrivateKey”(我的阅读显示,这些密钥可能被PKCS#7包围)。另外,在每个备份中,Manifest.plist文件中都有“ AuthSignature”和“ AuthData”值,尽管随着每个文件的增量备份它们似乎会轮换,但建议它们作为键不是那么有用,除非真正相当复杂的工作正在完成。 有很多误导性的内容表明从加密备份中获取数据很容易。并非如此,据我所知,这还没有完成。完全绕过或禁用备份加密是另一回事,而不是我要执行的操作。 这与破解iPhone或类似的东西无关。我要做的只是从未加密的iTunes备份中提取数据(照片,联系人等)的一种方法。我已经使用上面提供的信息尝试了各种排列,但没有结果。我会很想念我可能错过的任何想法或技巧。