iOS模拟器 - 查看钥匙串内容

26

我正在将我的应用程序的用户名和密码存储在iOS钥匙串中。我使用Appcelerator开发应用程序,并使用以下模块。通过API,我可以在设备和模拟器上执行所有CRUD操作。

在阅读有关于钥匙串渗透测试的博客和主题后,我了解到钥匙串信息存储在SQL数据库中。我的目标是找到这个特定的数据库并打开以读取其内容。我想查看信息是否已存储在那里(接受数据将加密且全部是无意义字符),但希望会有一个标识符来指定访问组。

我只想打开数据库,检查表格并确保内容已保存在该表格中。由于没有越狱的设备,我将在iOS 9.3模拟器上执行整个任务。


如果你想转储钥匙链表,需要一个越狱设备。https://github.com/ptoomey3/Keychain-Dumper - user5890979
使用iOS模拟器不可以做同样的事情吗? - Soumya
这是一篇过时的指南,我没有检查它是否在现今仍然有效。但如果可能的话,这是一个完整的指南,如何在模拟器上进行iOS应用程序安全分析。我认为(没有全部阅读),但这是我能为您找到的全部内容。 :) - user5890979
1个回答

81

这并不是什么难事,尤其是考虑到你已经准备好在其中看到“加密和无意义”的内容。

你只需转到〜/ Library / Developer / CoreSimulator / Devices文件夹,找到所需模拟器的UUID,然后进入该文件夹并进入data/Library/Keychains文件夹。

在那里,你会看到keychain-2-debug.db文件,这是你要访问的SQLite数据库文件。

之后,使用像http://sqlitebrowser.org/这样的工具来浏览数据库。

SQLite browser

我使用这个工具打开数据库后找到了我写入钥匙串的内容,然后进入Browse Data并为表选择genp。之后,检查agrp列字段值,因为它显示了谁将该条目写入钥匙链数据库。通过在其中发现TEAMID.com.your.app.bundle.id值,你可以找到你的应用程序写入的内容。

干杯


18
要在模拟器中查找设备的UUID,请在终端中输入“xcrun simctl list | egrep '(Booted)'”。感谢https://dev59.com/qGw05IYBdhLWcg3w6F8w上的**TiBooX**提供这个实用技巧。 - samurai_jane
@c4k - 你是在询问用于从 Keychain 中读取已写入的值的代码片段吗? - uerceg
@uerceg 不是,我在想如何在SQLite浏览器中读取数据(如果可能的话)。 - c4k
1
@c4k 啊,抱歉,一开始没听懂你的意思。说实话,我从未尝试过这个,也不认为这是可能的。我只是从我的应用程序中将值写入Keychain,并通过从应用程序中读取它们并与我尝试写入的内容进行比较来验证它们是否成功写入。 - uerceg
1
要找到设备的UUID,您现在可以查看位于~/Library/Developer/CoreSimulator/Devices文件夹中的device_set.plist - danfordham
我按照“修改日期”降序排列了设备文件夹,我的模拟器位于顶部。 - Timur Gaitov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接