UMD文件结构解析

转载 2011年01月10日 14:27:00

UMD文件有二种格式类型,一种叫文本格式,另外一种叫动漫格式.
文本格式中的文字流是用ZLIB进行压缩的,今天我们就先来了解一下文本格式的UMD文件吧.

文本格式类弄的UMD文件的组成格式如下:
1.前4个字节组合必须是:0xde9a9b89 (如果不是此格式,即不为UMD文件)
目前不知道这串数字代表什么意思.按照常规别的文件开头前几个字符都是
自己的格式类型.因为UMD没有官方的文件格式说明,所以不知道具体的意思.
相信大致也代表这个意思吧.因为这对解析文件没有任何意义,所以不用去追究!

2.第5到9个字节为:0x23 0x01 0x00 0x08 0x01(必须的)
3.第10个字节为:0x01/0x02.注0x01代表文本格式的UMD文件,0x02代表动漫格式的UMD文件
4.接下来2个字节的随机数.没有任何意义,可以扔掉.(呵呵,记住目前是第12个字节了)
5.第13个字节为:0X23(必须的)
6.解析接下来的2个字节0X02 0X00.即为数据类型.目前数据类型为2.代表的意思是以下的数据代表文件的TITLE.
那下面让我们观注如何解析TITLE吧.(呵呵.目前好像是第16个字节了吧)
7.第17个字节0X00(必须的)
8.解析第18个字节值.该字节的组成是:TITLE的长度*2 + 5.所以你要得到TITLE的长度必须要减五.
另外TITLE的长度为什么要*2,因为UMD是用UNICODE编码文件数据的.
9.注意现在就不能按多少个标准字节记数了,因为文件不一样,TITLE不一样.长度也不一样了.
那就继续看吧.再读TITLE长度个字节,就得到了TITLE的数据.
10.TITLE数据读完后,接下来1个字节是:0X23也就是'#'字符(必须的)
11.解析接下来的2个字节0X03 0X00.即为数据类型.目前数据类型为3.代表的意思是以下的数据代表文件的Author.
12.接下来1个字节是0X00(必须的)
13.接下来解析1个字节,该字节的组成Author的长度*2 + 5.所以你要得到Author的长度必须要减五.

注意!!!大家会发现TITLE和Author的解析过程是一样的,哈哈.你非常厉害.确实解析是一样的.即然这样我就不再重复费话了.因为下面涉及到的解析都是这个流程.

14.下面会解析到year = 4,mouth = 5,day = 6,gender = 7,publisher = 8,Vendor = 9.OK解析完成以上的数据后UMD的基本信息你已经得到了.

 

解析完成vendor数据后,下面会是什么数据呢?让我们继续看吧!!
接下来就是解析内容长度了.
15.紧接着的第1个字节:0X23 也就是'#'(大家会发现,UMD是用#来进行数据隔离的)
16.解析2个字节:0x0B 0x00 数据类型为11
17.接下来2个字节:0X00 0X09(必须的)
18.接下来4个字节:代表内容长度.
19.内容长度解析完成,用分隔符'#'.所以接下1个字节是0X23
20.接下来2个字节代表数据类型.0X83章节偏移量.
21.接下来2个字节:0X01 0X09
22.接下来4个字节:代表一个随机数,目前看来是起同步作用的.
23.接下来1个字节:0X36 也就是'$'钱字符了.哈哈.
24.接下来4个字节:也是随机数.但是和22的随机数一样
25.接下来4个字节:代表偏移量的长度*4 + 9.所以偏移量的长度为:你解析出来的(len - 9)/4.
26.接下来偏移量长度个字节:每个字节代表:每节章节的偏移地址.
27.偏移量数据块解析完成了.接下来又是数据分隔符'#' 0X23
28.接下来2个字节:数据类型0X84 .章节标题
29.接下来2个字节:0X01 0X09(必须的)
30.接下来4个字节:随机数
31.接下来1个字节:钱分隔符
32.接下来4个字节:随机数.二次随机数要相等
33.接下来4个字节:代表 (标题长度*2 + 1) + 9
34.接下来取得每个标题的数据.
分析一下:为了取得每个标题的数据,如果有三个标题显然要取三次.OK.
那如何取呢?
我们先来解释第一个标题是如何取的.
接下来1个字节:标题的长度*2 =  count.
接下来count个字节:就是标题的内容数据.
其他的标题同样的方法.接着取即可.
那标题取完后,接下来的数据会是什么呢?
想必现在应该章节类的数据了吧.好那让我们继续看吧!
35.接下来1个字节:钱字符
36.接下来4个字节:随机数
37.接下来4个字节:数据流的长度 + 9 = count
38.接下来数据流长度个字节就是数据了.(注意目前的注意是ZLIB压缩的数据)
接下来UMD做了安全处理.生成三个随机数.如果随机数有二个相同.处理一些数据.如果不相同就不处理.
39.让我们看看相等的情况吧.下面的数据可能会有下面二种情况的组合出现.
(1)
接下来1个字节:'#'分隔符
接下来2个字节数据类型:0XF1 0X00
接下来2个字节:0X00 0X15
接下来16个字节空数据
(2)
接下来1个字节:'#'分隔符
接下来2个字节数据类型:0X0A 0X00
接下来2个字节:0X00 0X09
接下来4个字节:随机数
40.接下来1个字节:'#'分隔符
41.接下来2个字节:数据类型 0X81 0X00
42.接下来2个字节:0X01 0X09
43.接下来4个字节:随机数
44.接下来1个字节:钱字符
45.接下来4个字节:随机数
46.接下来4个字节: (页面数*4 + 9) = count
47.接下来页面数*4个字节.
48.接下来1个字节:'#'分隔符
49.接下来2个字节:0X82 0X00数据类型//封面图
50.接下来3个字节:0X01 0X0A 0X01
51.接下来4个字节:随机数
52.接下来1个字节:钱字符
53.接下来4个字节:随机数
54.接下来4个字节:封面长度 + 9
55.接下来封面长度个字节

56.接下来1个字节:'#'分隔符
57.接下来2个字节:0X0C 0X00数据类型
58.接下来2个字节:0X0C 0X00数据类型//结束吧!!!
59.接下来2个字节:0X01 0X09
60.接下来4个字节:整个文件长度//
到此为此我们的UMD文件解析完成.

总算是把UMD解析这一块走了一遍。也算是把UMD文件搞清楚了。

 

 

 

http://blog.sina.com.cn/s/blog_5ccfd2d50100bo2x.html

相关文章推荐

【转】UMD文件结构(文件解析)

本文引用自绝望的生鱼片《UMD文件结构(文件解析)》这几天研究了一下UMD文件,今天总算可以正确解析了.小庆祝一下!!!记得刚开始准备研究UMD文件时,在网上搜不到UMD文件结构说明.费了好大的劲,用...

UMD文件格式解析

前一阵子忽然想给我写的一个编辑器增加阅读UMD文件的功能,就上网查了查相关资料。结合网上的资料我写了一个UMD解析的类(for  VC,其中调用了zlib动态库),完整的类文件上传在我的资源中。以下就...

配置IIS apache ,支持sis、SISX、3GP、ADP、AMR、JAD、JAR、MMF、MFM、PMD、UMD等文件下载

配置IIS服务器,支持sis、SISX、3GP、ADP、AMR、JAD、JAR、MMF、MFM、PMD、UMD等文件下载 Windows2000 Server服务器配置IIS的MIME类型 ...

UMD格式与解析详解

本文是对于UMD格式结构分析,并针对iOS平台利用Object-C解析UMD文件,给出完整流程与实现。UMD是一种在几年前较为常见的电子书格式,尽管现在它已经逐渐被遗忘了。UMD主要分为3种格式类型:...

UMD文件转TXT工具

  • 2015-03-09 16:29
  • 121KB
  • 下载

jpcsp源码解读5:umd光盘镜像(.iso)

这次的状况稍显复杂。 首先说一下umd光盘镜像文件的内部组织方式。注意,这些内容全部是从源码解读而来,而不是来自关于这种文件格式的标准文档。 ///////////////////////////...

php解析umd脚本

  • 2013-09-26 13:31
  • 345KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)