首页 > 代码库 > 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