iphone短信无法导出,只能通过备份,再从备份文件中去找。
一、备份
IPHONE 5S,用ITUNES备份到电脑,不加密。备份在C:\Users\用户名\AppData\Roaming\Apple Computer\MobileSync\Backup
Manifest.db 文件里面是文件名和目录的对应关系,sqlite DB 3格式。
31bb7ba8914766d4ba40d6dfb6113c8b614be442文件是通讯录库,sqlite DB 3数据库格式,加上扩展名.db,用软件打开。
3d0d7e5fb2ce288813306e4d4636395e047a3d28文件是短信库,sqlite DB 3数据库格式,加上扩展名.db,用软件打开。
“楼月免费iTunes备份管理器”可以管理备份文件,以及打开备份中的短信,我没有试。
SQLite Administrator 打开数据库出错,有问题。
SQLite Expert - Personal Edition 可以打开数据库,方便看。http://www.sqliteexpert.com/。数据可以CTRL+A,CTRL+C复制,再粘到WORD或EXCEL中。
sqlitebrowser 也可以打开看数据库,稍不便些。https://github.com/sqlitebrowser/sqlitebrowser/releases
短信库 内容是UTF8编码,没有加密(修改成UTF8 BOM头,再用记事本打开,可以看到短信内容)
短信库\message表, 是短信内容。
短信库\attachment表, 是短信附件内容。
短信库\chat表, 是短信聊天分组。
短信库\handle表, 是短信手机号内容。
id是手机号,比如+8651082534245。uncanonicalized_id是去掉国家后手机号,比如051082534245。但手机号不会去掉国家。
chat_handle_join表,是聊天分组和手机号对应表
chat_message_join表,是聊天分组和消息对应表
message_attachment_join表,是消息和附件对应表
二、[INVALID DATA]:
SQLite Expert软件,短信有的粘过来会是字串“[INVALID DATA]”,因为源数据是有特殊字符,SQLite Expert识别不了,所以变成“[INVALID DATA]”。
比如:UTF8 EF BF BC 是UNICODE FF FC,表示OBJECT REPLACEMENT CHARACTER 代表一个附件对象!(这里就是用EF BF BC来代表短信的一个附件)
还有其它一些UTF8字符SQLite Expert也无法识别的。
三、把人和消息、附件对应:
handle表,找手机号,比如得ROWID 1708,这个即是handle ID。
chat_handle_join表,找handle_id 1708,得chat_id 1708
chat_message_join表,找chat_id 1708,得多个message_id 比如4297、4298、4309
message表,ROWID即是message_id,按ROWID即可对应各个消息内容
快速方法:message表里有handle_id,可以直接根据handle_id来找消息!!
message_attachment_join表, 找message_id,得attachment_id,可以有多个。
attachment表, ROWID即是attachment_id,得filename。
四、短信库\attachment表,是短信附件,比如mp4、jpg
filename是对应手机存储路径,用它去找Manifest.db对应的fileID文件就是备份文件。
比如~/Library/SMS/Attachments/e9/09/1DED1F6A-95EB-4EA9-9E52-66A955BFC6A6/at_0.mp4 ,到Manifest.db找到是22b2d55b3624b8859bb20d7f6d0b4a5088fdf11e,这个文件不是db文件,直接就是一个mp4文件
快速方法:因为“路径”里有文件名,所以直接在Manifest.db里找所有的有SMS/Attachments的mp4、jpg扩展名的行就可以,把相应的fileID文件名找出来。