本文引用自绝望的生鱼片《UMD文件结构(文件解析)》

这几天研究了一下UMD文件,今天总算可以正确解析了.小庆祝一下!!!
记得刚开始准备研究UMD文件时,在网上搜不到UMD文件结构说明.费了好大的劲,用反编译工具
才找到相关信息.在这里感谢一下编程浪子给予的帮助,也感谢自己的坚持.因为这不是公司的项目
要求,完全是自己想研究一下.今天在庆祝之愉,想到了可能有些网友正在研究UMD文件.在此总结
一下UMD文件结构,为知识共享出点力吧.也为自己攒点人品吧.

少费话了进入主题了.

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的基本信息你已经得到了.
那就休息休息,在下一文中我会继续介绍如何解析主题内容!!

========================================================================
周末二天没有上BLOG,哈哈,玩的相当爽。今天还是把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_5ccfd2d50100bp3t.html~type=v5_one&label=rela_nextarticle
如有侵权请告知,我会处理。

【转】UMD文件结构(文件解析)相关推荐

  1. Xamarin XAML语言教程XAML文件结构与解析XAML

    Xamarin XAML语言教程XAML文件结构与解析XAML XAML文件结构 在上文中,我们创建XAML文件后,会看到类似图1.16所示的结构 图1.16  结构 其中,.xaml文件和.xaml ...

  2. Android init.rc文件解析过程详解(一)

        Android init.rc文件解析过程详解(一) 一.init.rc文件结构介绍 init.rc文件基本组成单位是section, section分为三种类型,分别由三个关键字(所谓关键字 ...

  3. 2020-10-27(dex文件解析)

    一张图搞懂dex 大图这里 当然也可以通过下面的图12 DexFile的文件格式,了解更清楚. DEX文件详解 什么是dex文件? 如何生成一个dex文件 dex文件的作用 dex文件格式详解 什么是 ...

  4. elf文件格式_Android so(ELF) 文件解析

    Android so(ELF) 文件解析 Android so(ELF) 文件解析 前言 生成 so 文件 相关工具 objdump readelf 整体结构图 头部结构 段表结构 字符串表结构 程序 ...

  5. 三维模型obj文件解析

    目录 obj文件简介 文件结构 顶点数据(Vertex data): 自由形态曲线(Free-form curve)/表面属性(surface attributes): 元素(Elements): 自 ...

  6. 用python实现bt下载_Python边学边用--BT客户端实现之(一)BitTorrent文件解析

    原博文 2012-09-29 23:17 − BitTorrent文件解析: BitTorrent文件使用bencode编码,其中包括了4种数据类型: 'd' 开头表示是dict类型,'e'表示结束 ...

  7. AVI文件格式解析+AVI文件解析工具

    (转)AVI文件格式解析+AVI文件解析工具 AVI文件解析工具下载地址:http://download.csdn.net/detail/zjq634359531/7556659 AVI(Audio ...

  8. PDF 与 PS页面描述语言与PDF文件解析(转)

    PDF 与 PS页面描述语言与PDF文件解析(转) 页面描述语言 页面描述语言(Page Description Language,简称PDL)是一种面向输出效应的语言,用于描述打印或照排的版面,这种 ...

  9. BIN,S19,M0T,SREC,HEX文件解析;FileParse(一)之文件详解

    简介 一.摘要 1.描述 2.关键字 二.为什么要文件解析 三.BIN文件格式 四.S19,M0T,SREC文件格式 五.HEX文件格式 六.源码下载 七.其他 八.参考 一.摘要 1.描述 本文主要 ...

  10. Excel 文件结构化解析示例

    [摘要] 本文介绍如何将各种结构的 Excel 文件解析成结构化数据,如普通行式.复杂表头.自由格式.交叉表.主子表.大文件等,并用 esProc SPL 举例实现.请点击Excel 文件结构化解析示 ...

最新文章

  1. java文件名与class关系
  2. Spring框架分为哪七大模块以及各模块的主要功能作用
  3. 云服务器 web网站吗,web云服务器免费的吗
  4. BZOJ 1683.City skyline 城市地平线
  5. mysql内连接查询原理_MySQL全面瓦解12:连接查询的原理和应用
  6. python异常值删除_python数据清洗中,是如何识别和处理异常值的?
  7. GMaps.js - 轻松集成Google Maps的jQuery插件
  8. 大数据(二)Elasticsearch 分布式搜索引擎(存索引、索引搜索)
  9. 大数据技术Hadoop介绍
  10. python相关性分析的散点图怎么做_相关性分析 散点图
  11. 人工神经网络ANN(BP网络)
  12. Verilog实现减法器
  13. EXPLAIN语法详解
  14. strace命令总结
  15. 高新技术企业认定申报书编制的要求是什么?
  16. 美国大厂新员工薪资曝光! 微软最高近30万美元,TikTok低至时薪30美元
  17. 协同办公系统(OA系统)选型对比参考
  18. 角色扮演swing小游戏项目总结
  19. 大数据行业应用之Hive数据分析航班线路相关的各项指标
  20. 11思维模型:锚定效应一主动权属于掌握锚的人

热门文章

  1. 打蚊子表情包_打死蚊子表情包 - 打死蚊子微信表情包 - 打死蚊子QQ表情包 - 发表情 fabiaoqing.com...
  2. 万字长文讲述我是怎样保送清华的 | 寒门学子奋斗史(四)
  3. 画出传输门、三态门、开路门_传输门和三态门什么区别
  4. JVM调优总结(4)-调优方法
  5. java tbase_让java类继承TBase进行序列化
  6. 主析取范式和主合取范式
  7. Lync 地址簿同步知识
  8. 计算机如何连接网络扫描仪,windows系统下怎么共享扫描仪?
  9. 【解决方案】数字孪生智慧光伏电站三维可视化系统
  10. FAT 文件系统代码分析--文件系统挂载篇