Library/Saved Application State/com.apple.Terminal.savedState
中的状态文件中。我在崩溃前进行了文件备份,以便能够恢复数据,但是我没有知道现在如何阅读(因为Terminal拒绝使用它)。它以
NSCR1000
开头,如下所示:$ hexdump -Cn8 ~/Library/Saved\ Application\ State/com.apple.Terminal.savedState/data.data
00000000 4e 53 43 52 31 30 30 30 |NSCR1000|
windows.plist
文件使用它,可以通过以下方式对其进行解码:plutil -convert xml1 -o windows.plist windows.plist
我可以使用哪种方法读取
.data
文件?还是我从哪里开始?$ strings data.data | head -10
NSCR1000
p+5v
0>[t
kJX6X
@NSCR1000
当您启动并开始键入内容时,此文件是由终端应用自动生成的,因此终端数据存储在其中。 >
#1 楼
它已使用AES加密,因此您将需要windows.plist
中的密钥进行解码。格式为(全部存储在big-endian中):
offset value
0-3 magic ('NSCR' for PersistentUIRecord)
4-7 version (either '1000' or '0006')
8-11 NSWindowID (used to lookup 128-bit AES key stored in windows.plist)
12-15 record length (including from 0 to xxx)
16-xxx encrypted binary plist data
文件中可能连续存储了多个记录。
类似的方法AppKit框架用于解密
data.data
文件。最相关的代码库是+[NSPersistentUIRecord parseOneRecordFromReadBlock:withDecryptionKeys:]
块,该块解析data.data
文件中的每个记录。
评论
感谢你的回答!我有一个问题:您是如何学习这些细节的?
–斯坦尼斯拉夫·潘克维奇(Stanislav Pankevich)
16年1月15日在11:28
我只是在AppKit框架周围摸索,颠倒了它如何解密data.data文件。要查看的最相关的代码库是+ [NSPersistentUIRecord parseOneRecordFromReadBlock:withDecryptionKeys:]块,它解析data.data文件中的每个记录。
– Cimarron
16年1月15日在16:21
听起来很棒,这很容易做到!令人敬畏的灵感,以了解有关RE的更多信息。再次感谢您的回答。
–斯坦尼斯拉夫·潘克维奇(Stanislav Pankevich)
16年1月15日在17:09
我不确定您会被问到什么样的人,但是如果您可以在博客文章中分享您的精通知识,那的确很棒。我强烈建议您这样做,因为这对每个人来说都是非常有趣的阅读,尤其是如果您可以以简单的方式解释找到正确答案的技巧。如此众多的开发人员可以从您的经验中受益,请这样做!
–斯坦尼斯拉夫·潘克维奇(Stanislav Pankevich)
16年1月15日在20:52