重置设备上的钥匙串

重置设备上的钥匙串

问题描述:

我正在设备上测试我的应用程序中的登录流程(使用KeychainItemWrapper)。如何重置/删除我的应用程序的钥匙串? >重置内容和设置... -重置设备上的钥匙串

在模拟器,我通过点击iPhone模拟器做到这一点。

+0

http://stackoverflow.com/questions/7142774/reset-an-iphone-apps-keychain – 2013-05-02 11:27:21

+2

@的可能的复制DanielMartín要链接的问题是关于重置钥匙串编程(我在我的应用程序内)。我想知道如何手动进行测试。 – syntagma 2013-05-02 11:29:29

+1

我知道要完成的唯一方法是从设备设置,常规,重置,重置所有设置。它会重置设备上安装的每个应用程序的钥匙串。 – 2013-05-02 11:41:07

钥匙串项目位于iOS沙盒中,用户无权删除不需要的钥匙串项目。这些只能通过API访问。

KeychainItemWrapper *keychainItem = [[KeychainItemWrapper alloc] initWithIdentifier:[[NSBundle mainBundle] bundleIdentifier] accessGroup:nil]; 

//或您如何访问您的钥匙串

[keychainItem resetKeychainItem]; 

或者您可以将设备>>从设备设置复位,一般,重置,重置所有设置。 但是,它会重置设备上安装的每个应用程序的钥匙串。

+0

重置所有设置不会重置钥匙串。 WiFi密码被删除,但我的VPN密码和存储在钥匙串中的应用密码仍然存在。 – 2014-11-11 21:47:15

+3

您应该执行“清除所有内容和设置”以清除钥匙串。 – 2014-11-15 08:43:53

+0

@Fahri,如何“清除所有内容和设置”而不是“重置内容和设置”? – 2016-06-17 15:51:28

  • 下载并添加keychainWrapperhere到项目中。
  • 在viewController中编写下面的代码,你想重置钥匙串 。

CODE:

#import "KeychainItemWrapper.h" 

@interface YourViewController() 
{ 
    KeychainItemWrapper *keychainItemWrapper; 
} 

- (void)viewDidLoad { 

    [super viewDidLoad]; 

    keychainItemWrapper = [[KeychainItemWrapper alloc] initWithIdentifier:@"appname" accessGroup:nil]; 

} 

- (IBAction)logoutButtonPressed:(id)sender { 

    [keychainItemWrapper resetKeychainItem]; 

} 

您可以用钥匙扣自卸翻斗钥匙扣数据。 抓住以下链接 https://github.com/ptoomey3/Keychain-Dumper

只需转到此URL并下载zip文件并将其解压缩。在这个文件夹中,我们唯一感兴趣的文件是keychain_dumper二进制文件。允许钥匙串中的应用程序访问的信息在其权利中指定。该二进制文件使用带有通配符权利的自签名证书进行签名,因此可以访问所有的钥匙串项目。还可以有其他方法来确保授予所有钥匙串信息,例如让权利文件包含所有钥匙串访问组或使用可访问所有钥匙串数据的特定钥匙串访问组。例如,工具钥匙串查看器使用以下授权。

com.apple.keystore.access,钥匙扣,钥匙

com.apple.keystore.device

1)只要上传该二进制到您的设备在/ tmp文件夹,并确保其执行。

2)现在确保存储在/private/var/Keychains/keychain-2.db位置的钥匙串数据库文件是世界可读的。

3)现在去终端,你可以通过上面的命令将命令

.keychain_dumper

4)会列出所有的用户名和密码转储数据。 但以上只会转储通用和互联网密码。您可以使用“-h”命令查看使用情况信息。

5)您可以使用“-a”命令转储所有信息。

你可以在这里阅读更多的信息,例如dumping keychain data