2013-05-02 113 views
36

我正在設備上測試我的應用程序中的登錄流程(使用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

回答

7

鑰匙串項目位於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

1
  • 下載並添加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]; 

} 
1

您可以用鑰匙扣自卸翻鬥鑰匙扣數據。 抓住以下鏈接 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