2005 年左右,Apple 的 iChat 将其日志写入二进制 plist。但在此之前,它是另一种我不知道如何读取的格式。
> file some-early-2005-log.chat
some-early-2005-log.chat: NeXT/Apple typedstream data, big endian, version 4, system 1000
有什么建议么?
答案1
看起来这种文件是在应用程序使用 NSArchiver API 将对象序列化为磁盘上的文件时创建的。这意味着它与创建它的应用程序中的对象类非常紧密地联系在一起。这不是创建可与其他应用程序共享的可移植文件的好方法,这可能是为什么放弃它并转向更可移植的东西(如 plist)的原因。
我认为如果没有 c. 2004-2005 iChat AV 代码库,您就没那么幸运了。您可以使用命令strings(1)
从这些文件中提取字符串,但您可能会错过日期,因为日期可能是二进制编码的。
用十六进制编辑器查看那个时代的一个旧 .chat 文件,似乎每个聊天消息字符串前几个字节都有一个 32 位“自 Unix 纪元以来的秒数”时间戳,每个聊天消息字符串前紧接着有一个 2 字节长度的值。文件开头有一些内容可以告诉谁在聊天,以及他们使用的字体设置。