如何读取NSCR1000数据文件?

逆向工程 文件格式 操作系统 二进制格式
2021-06-22 05:41:44

OSX 上的终端应用程序将有关其窗口和内容的信息存储在Library/Saved Application State/com.apple.Terminal.savedState.

我在崩溃前备份了文件以便能够恢复我的数据,但我现在不知道如何读取它(因为终端拒绝使用它)。它开始于: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进行解码。

格式为(全部以大端存储):

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文件中每条记录