相关疑难解决方法(0)

如何解密加密的Apple iTunes iPhone备份?

我被许多不幸的iPhone用户请求帮助他们从iTunes备份中恢复数据.这些在未加密时很容易,但不是在加密时,无论密码是否已知.

因此,我试图找出加密时mddata和mdinfo文件上使用的加密方案.否则,我没有读取这些文件的问题,并且已经构建了一些强大的C#库.(如果你能够提供帮助,我不在乎你使用哪种语言.这是我在这之后的原则!)

Apple"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"dict条目的PList."\ programdata\apple\Lockdown\09037027da8f4bdefdea97d706703ca034c88bab.plist"包含带有"DeviceCertificate","HostCertificate"和"RootCertificate"的PList,所有这些看起来都是有效的X509证书.同一个文件似乎也包含非对称密钥"RootPrivateKey"和"HostPrivateKey"(我的阅读建议这些可能是PKCS#7-enveloped).此外,在每个备份中,Manifest.plist文件中都有"AuthSignature"和"AuthData"值,尽管这些值似乎在每个文件逐步备份时轮换,表明它们不是一个有用的键,除非确实有什么相关的工作正在进行中.

有很多误导性的东西表明从加密备份中获取数据很容易.它不是,据我所知,它还没有完成.绕过或禁用备份加密完全是另一回事,而不是我想做的事情.

这不是关于黑客攻击iPhone或类似的东西.我在这里的所有内容都是从加密的iTunes备份中提取数据(照片,联系人等)的方法,因为我可以解密.我已经尝试了各种各样的排列信息,我已经在上面提到了这些信息,但却无处可去.我很欣赏我可能错过的任何想法或技巧.

iphone encryption backup itunes

81
推荐指数
3
解决办法
22万
查看次数

如何在iPhone上进行Base64编码

如何在iPhone上进行Base64编码?

我发现了一些看起来很有前景的例子,但却永远不会让他们中的任何一个在电话上工作.

iphone base64 encoding objective-c

35
推荐指数
6
解决办法
8万
查看次数

在Android和IPhone中使用AES-128进行加密(结果不同)

我试图在Android和IPhone平台上使用AES算法加密一些文本.我的问题是,即使使用相同的加密/解密算法(AES-128)和相同的固定变量(密钥,IV,模式),我在两个平台上都会得到不同的结果.我包括来自两个平台的代码示例,我用它来测试加密/解密.我很感激在确定我做错了什么方面有所帮助.

  • 关键:"123456789abcdefg"
  • 四:"1111111111111111"
  • 纯文字:"HelloThere"
  • 模式:"AES/CBC/NoPadding"

Android代码:

public class Crypto {
    private final static String HEX = "0123456789ABCDEF";

    public static String encrypt(String seed, String cleartext)
            throws Exception {
        byte[] rawKey = getRawKey(seed.getBytes());
        byte[] result = encrypt(rawKey, cleartext.getBytes());
        return toHex(result);
    }

    public static String decrypt(String seed, String encrypted)
            throws Exception {
        byte[] rawKey = getRawKey(seed.getBytes());
        byte[] enc = toByte(encrypted);
        byte[] result = decrypt(rawKey, enc);
        return new String(result);
    }

    private static byte[] getRawKey(byte[] seed) throws Exception {
        KeyGenerator kgen = KeyGenerator.getInstance("CBC");
        SecureRandom sr …
Run Code Online (Sandbox Code Playgroud)

java iphone encryption android aes

12
推荐指数
3
解决办法
3万
查看次数

使Web服务安全

我收拾了我的iPhone应用程序.我只是担心我们的Web服务器级别的安全性.数据正通过网络服务转移到iphone应用程序.

我可以对Web服务采取哪些安全措施,以便我不容易受到攻击?

谢谢

.net security iphone web-services

9
推荐指数
1
解决办法
983
查看次数

Objective#C等效代码的C#代码

我试图将用C#编写的代码转换为目标c,我试过但无法得到相同的结果.任何帮助都会很明显.

internal static class Common  {
    static string encryptionKey = "0C61L2FSL2F3E7X8E9T1L2F3E4O5";
    static byte[] salt = new byte[] {0x49, 0x76, 0x61, 0x6e, 0x20, 0x4d, 0x65, 0x64, 0x76, 0x65, 0x64, 0x65, 0x76};
         
    internal static string Encrypt(string clearText)
    {
        byte[] clearBytes = Encoding.Unicode.GetBytes(clearText);
        using (Aes encryptor = Aes.Create())
        {
            Rfc2898DeriveBytes pdb = new Rfc2898DeriveBytes(encryptionKey, salt);

            encryptor.Key = pdb.GetBytes(32);
            encryptor.IV = pdb.GetBytes(16);

            using (MemoryStream ms = new MemoryStream())
            {
                using (CryptoStream cs = new CryptoStream(ms, encryptor.CreateEncryptor(), CryptoStreamMode.Write))
                {
                    cs.Write(clearBytes, 0, clearBytes.Length);
                    cs.Close();
                }
                clearText …
Run Code Online (Sandbox Code Playgroud)

c# encryption cryptography objective-c

7
推荐指数
1
解决办法
1480
查看次数

如何处理纯文本密码

我正在开发一个使用某个webapp的API的应用程序.API要求在每次调用时传递(纯文本)用户密码.由于我不熟悉密码最佳实践(特别是在移动设备上),我想知道在我的iPhone应用程序中存储用户密码的最佳方式和地点是什么.任何帮助是极大的赞赏.

iphone passwords

1
推荐指数
1
解决办法
443
查看次数