如何解码macOS Messages chat.db中的message_summary_info &



在macOS上的chat.db Messages数据库中,在message表中存在两个二进制blob列:

  • attributedBody
  • message_summary_info

消息编辑历史(macOS Ventura引入)存储在message_summary_info中。

我能够用python-typedstream解码和解析attributedBody,但是试图在message_summary_info上这样做会产生错误typedstream.stream.InvalidTypedStreamError: Invalid streamer version: 98

如何解码和解析message_summary_info?

(关于这个问题)

我相信我至少找到了python利用plistlib的部分解决方案,因为message_summary_info是一个二进制plist,但如果存在更好的解决方案,我愿意接受。

这是我用macOS messages发送和编辑的一些测试消息的一些输出。消息最初为"编辑前测试",然后编辑为"编辑后测试",然后再次编辑为"编辑后测试2"。

>>> import plistlib
>>> pprint(plistlib.loads(bytes_str))
{'ec': {'0': [{'d': 690916194.2870002,
't': b'x04x0bstreamtypedx81xe8x03x84x01@x84x84x84x12N'
b'SAttributedStringx00x84x84x08NSObjectx00x85x92'
b'x84x84x84x08NSStringx01x94x84x01+x10Test BEFOR'
b'E editx86x84x02iIx01x10x92x84x84x84x0cNSDict'
b'ionaryx00x94x84x01ix01x92x84x96x96x1d__kIMMe'
b'ssagePartAttributeNamex86x92x84x84x84x08NSNumber'
b'x00x84x84x07NSValuex00x94x84x01*x84x99x99x00'
b'x86x86x86'},
{'bcg': '5BE7ACC0-8863-4418-A966-1320577ED52F',
'd': 690916202.619842,
't': b'x04x0bstreamtypedx81xe8x03x84x01@x84x84x84x12N'
b'SAttributedStringx00x84x84x08NSObjectx00x85x92'
b'x84x84x84x08NSStringx01x94x84x01+x0fTest AFTER'
b' editx86x84x02iIx01x0fx92x84x84x84x0cNSDicti'
b'onaryx00x94x84x01ix01x92x84x96x96x1d__kIMMes'
b'sagePartAttributeNamex86x92x84x84x84x08NSNumberx00'
b'x84x84x07NSValuex00x94x84x01*x84x99x99x00x86'
b'x86x86'},
{'bcg': '98E04B01-7490-4984-92D5-5910C24F51C1',
'd': 690916210.155562,
't': b'x04x0bstreamtypedx81xe8x03x84x01@x84x84x84x12N'
b'SAttributedStringx00x84x84x08NSObjectx00x85x92'
b'x84x84x84x08NSStringx01x94x84x01+x11Test AFTER'
b' edit 2x86x84x02iIx01x11x92x84x84x84x0cNSDic'
b'tionaryx00x94x84x01ix01x92x84x96x96x1d__kIMM'
b'essagePartAttributeNamex86x92x84x84x84x08NSNumbe'
b'rx00x84x84x07NSValuex00x94x84x01*x84x99x99'
b'x00x86x86x86'}]},
'ep': [0],
'euh': ['RECIPIENT@icloud.com'],
'otr': {'0': {'le': 16, 'lo': 0}},
'ust': True}

最新更新