首页 > 代码库 > IOS 设备 iTunesCDB 文件详细解析(一)
IOS 设备 iTunesCDB 文件详细解析(一)
IOS 移动设备里面有一个媒体数据库文件,这个文件保存了当前设备的媒体信息,比如音乐,视频,电子书,铃声等等,都保存在这里,废话不多说了
iTunesCDB 是一个二进制的文件,其中是用节点来组织的,每个节点都包含特定的信息,比如节点类型,节点头大小,子节点个数等等。有点像xml,但是和xml 又不一样,xml 是闭合的。
用二进制编辑器打开这个文件可以看到
MHBD 头
二进制文件的头四个字节mhbd 是一个标识,根据特定的标识不同的解析,在解析的时候只要关心自己需要的字段,其他不明白的字段读出来之后保存起来就可以了。下面介绍一下我在解析的时候关注的字段
1) 4字节的头标识 mhbd
2) 4字节的头长度
3) 4字节的总长度
如果是解析的话只需要关注这三个字段就可以了。
m_strIdentify = binaryReader.ReadString(4);
ValidateHeader("mhbd");
m_iHeadSize = binaryReader.ReadInt32();
int iTotalSize = binaryReader.ReadInt32();
itunescdb 文件是从mhbd 头开始的,mhbd 的section就保存了真正的媒体数据,但是这个section的数据是经过了压缩了,就是经过了zip 压缩过了,所以要解析的话就要先把section 内容读出来,然后用zip 解压一下就可以还原数据了。读section 内容的方法
int iSectionSize = iTotalSize - m_iHeadSize //获取section 的长度
binaryReader.Seek(m_iHeadSize,SEEK_SET); //将文件指针移动section的开始
byte* pDataBuffer = new byte[iSectionSize];
binaryReader.Read(pDataBuffer,iSectionSize); //读出section
读出来之后用zip的解压一下就可以还原数据了。后面有时间在继续吧
QQ: 2506314894