﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-我爱我的家园!-文章分类-文件格式</title><link>http://www.blogjava.net/Yipak/category/34381.html</link><description>成功在于你是否努力,希望在于你是否相信自己! </description><language>zh-cn</language><lastBuildDate>Thu, 04 Sep 2008 09:25:21 GMT</lastBuildDate><pubDate>Thu, 04 Sep 2008 09:25:21 GMT</pubDate><ttl>60</ttl><item><title>GIF图形文件格式文档</title><link>http://www.blogjava.net/Yipak/articles/226955.html</link><dc:creator>死神</dc:creator><author>死神</author><pubDate>Thu, 04 Sep 2008 06:54:00 GMT</pubDate><guid>http://www.blogjava.net/Yipak/articles/226955.html</guid><wfw:comment>http://www.blogjava.net/Yipak/comments/226955.html</wfw:comment><comments>http://www.blogjava.net/Yipak/articles/226955.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Yipak/comments/commentRss/226955.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Yipak/services/trackbacks/226955.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: GIF图形文件格式文档																								1.概述																																		　　GIF(Graphics Interchange Format，图形交换格式)文件是由						 CompuServe公司开发的图形文件格式，版权所有，任何商业目的使用均须 CompuServe公司授权。...&nbsp;&nbsp;<a href='http://www.blogjava.net/Yipak/articles/226955.html'>阅读全文</a><img src ="http://www.blogjava.net/Yipak/aggbug/226955.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Yipak/" target="_blank">死神</a> 2008-09-04 14:54 <a href="http://www.blogjava.net/Yipak/articles/226955.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ZIP文件格式详解(一)——文件数据格式</title><link>http://www.blogjava.net/Yipak/articles/226953.html</link><dc:creator>死神</dc:creator><author>死神</author><pubDate>Thu, 04 Sep 2008 06:53:00 GMT</pubDate><guid>http://www.blogjava.net/Yipak/articles/226953.html</guid><wfw:comment>http://www.blogjava.net/Yipak/comments/226953.html</wfw:comment><comments>http://www.blogjava.net/Yipak/articles/226953.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Yipak/comments/commentRss/226953.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Yipak/services/trackbacks/226953.html</trackback:ping><description><![CDATA[
		<span id="ArticleContent1_ArticleContent1_lblContent"> 
<p align="center"><span lang="EN-US" style="FONT-SIZE: 20pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA"><strong>ZIP文件格式详解(一)——文件数据格式</strong></span></p><span lang="EN-US" style="FONT-SIZE: 20pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA"><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'">----------------------------------------------------------------------------------<?XML:NAMESPACE PREFIX = O /?><o:p></o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'">文档说明<span lang="EN-US"><o:p></o:p></span></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"><o:p></o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'">ZIP 格式的压缩文件是我们常用的压缩格式之一，他以其通用性、压缩比高而在全球范围内有很多的用户，本文简单介绍 ZIP 文件格式和算法。本文主要参照<span lang="EN-US"><a href="http://www.pkware.com/"><font color="#336699">http://www.pkware.com/</font></a> 提供的 appnote.txt 文件，你可以从<a href="http://www.pkware.com/download.html"><font color="#336699">http://www.pkware.com/download.html</font></a> 下载 appnote.zip 得到这个文件。<o:p></o:p></span></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"><o:p> </o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'">作者：昏睡终日（<span lang="EN-US"><a href="mailto:Seread@163.com"><font color="#336699">Seread@163.com</font></a>）<o:p></o:p></span></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'">2002-10-28 </span><?XML:NAMESPACE PREFIX = ST1 /?><st1:time minute="32" hour="16"><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'">16:32:25</span></st1:time><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"><o:p></o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"><o:p> </o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'">本文仅作为技术参考资料，我尽力的保证文档的内容同原始技术文档在结构和描述上的一致，若有不当的地方请见谅。<span lang="EN-US"><o:p></o:p></span></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'">本文档的作者不为使用本文档信息所造成的任何损失负责。<span lang="EN-US"><o:p></o:p></span></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"><o:p> </o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'">----------------------------------------------------------------------------------</span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"></span> </p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"><o:p></o:p></span> </p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"><span lang="EN-US"><o:p></o:p></span></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"><o:p></o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"><o:p></o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"><o:p></o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"><o:p></o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'">一个<span lang="EN-US"> ZIP 文件的普通格式<o:p></o:p></span></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'">----------------------<o:p></o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'">    一个 ZIP 文件由三个部分组成：<br />         </span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'">        <font size="4"><strong>压缩源文件数据区+压缩源文件目录区+压缩源文件目录结束标志</strong></font></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"></span> </p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"></span> </p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'">    <strong>1、压缩源文件数据区</strong></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'">    在这个数据区中每一个压缩的源文件/目录都是一条记录，记录的格式如下：<br />       </span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'">       [文件头+ 文件数据 + 数据描述符]<br /> <br />       a、文件头结构</span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'">         组成    　                长度<br />      文件头标记                  4 bytes  (0x04034b50)<br />      解压文件所需 pkware 版本    2 bytes<br />      全局方式位标记              2 bytes<br />  　　压缩方式                    2 bytes<br />  　　最后修改文件时间             2 bytes<br /> 　　 最后修改文件日期             2 bytes<br /> 　　 CRC-32校验                  4 bytes<br /> 　 　压缩后尺寸                  4 bytes<br /> 　 　未压缩尺寸                  4 bytes<br /> 　　 文件名长度                  2 bytes</span></p><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'">      扩展记录长度<span lang="EN-US"><span style="mso-tab-count: 1"></span><span style="mso-tab-count: 1">           </span><span style="mso-tab-count: 1">    </span>2 bytes</span></span><br /> 　　 文件名                     （不定长度）<br /> 　　 扩展字段                   （不定长度）</p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"> </p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'">        b、文件数据</span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"></span> </p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'">        </span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'">        c、数据描述符</span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"> 　　　组成    　长度<br />  　　CRC-32校验                  4 bytes<br />  　　压缩后尺寸                   4 bytes<br /> 　 　未压缩尺寸                   4 bytes</span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"><span style="mso-tab-count: 1">      </span>这个数据描述符只在全局方式位标记的第３位设为１时才存在（见后详解），紧接在压缩数据的最后一个字节后。这个数据描述符只用在不能对输出的 ZIP 文件进行检索时使用。例如：在一个不能检索的驱动器（如：磁带机上）上的 ZIP 文件中。如果是磁盘上的ZIP文件一般没有这个数据描述符。</span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"><o:p> </o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"><o:p> </o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'">     <strong>2、压缩源文件目录区</strong></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'">     在这个数据区中每一条纪录对应在压缩源文件数据区中的一条数据</span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"></span> </p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"></span><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"><span style="mso-tab-count: 1">   </span>　　　组成<span style="mso-tab-count: 1">   </span><span style="mso-tab-count: 1">    </span><span style="mso-tab-count: 1">    </span><span style="mso-tab-count: 1">    </span>　            长度<o:p></o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"><span style="mso-tab-count: 1">    </span>　　目录中文件文件头标记    <span style="mso-tab-count: 1">  </span><span style="mso-tab-count: 1">       </span>4 bytes<span style="mso-spacerun: yes">  </span>(0x02014b50)<o:p></o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"><span style="mso-tab-count: 1">    </span>　　压缩使用的　pkware 版本<span style="mso-tab-count: 1">   </span><span style="mso-tab-count: 1">       </span>2 bytes<o:p></o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"><span style="mso-tab-count: 1">    </span>　　解压文件所需 pkware 版本<span style="mso-tab-count: 1">  </span><span style="mso-tab-count: 1">       </span>2 bytes<o:p></o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"><span style="mso-tab-count: 1">    </span>　　全局方式位标记<span style="mso-tab-count: 1">   </span><span style="mso-tab-count: 1">    </span><span style="mso-tab-count: 1">            </span>2 bytes<o:p></o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"><span style="mso-tab-count: 1">    </span>　　压缩方式<span style="mso-tab-count: 1"> </span><span style="mso-tab-count: 1">    </span><span style="mso-tab-count: 1">    </span><span style="mso-tab-count: 1">               </span>2 bytes<o:p></o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"><span style="mso-tab-count: 1">    </span>　　最后修改文件时间<span style="mso-tab-count: 1"></span><span style="mso-tab-count: 1">    </span><span style="mso-tab-count: 1">            </span>2 bytes<o:p></o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"><span style="mso-tab-count: 1">    </span>　　最后修改文件日期<span style="mso-tab-count: 1"></span><span style="mso-tab-count: 1">    </span><span style="mso-tab-count: 1">            </span>2 bytes<o:p></o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"><span style="mso-tab-count: 1">    </span>　　ＣＲＣ－３２校验<span style="mso-tab-count: 1"></span><span style="mso-tab-count: 1">    </span><span style="mso-tab-count: 1">            </span>4 bytes<o:p></o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"><span style="mso-tab-count: 1">    </span>　　压缩后尺寸<span style="mso-tab-count: 1">   </span><span style="mso-tab-count: 1">    </span><span style="mso-tab-count: 1">    </span><span style="mso-tab-count: 1">           </span>4 bytes<o:p></o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"><span style="mso-tab-count: 1">    </span>　　未压缩尺寸<span style="mso-tab-count: 1">   </span><span style="mso-tab-count: 1">    </span><span style="mso-tab-count: 1">    </span><span style="mso-tab-count: 1">           </span>4 bytes<o:p></o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"><span style="mso-tab-count: 1">    </span>　　文件名长度<span style="mso-tab-count: 1">   </span><span style="mso-tab-count: 1">    </span><span style="mso-tab-count: 1">    </span><span style="mso-tab-count: 1">           </span>2 bytes<o:p></o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"><span style="mso-tab-count: 1">    </span>　　扩展字段长度<span style="mso-tab-count: 1"></span><span style="mso-tab-count: 1">    </span><span style="mso-tab-count: 1">               </span>2 bytes<o:p></o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"><span style="mso-tab-count: 1">    </span>　　文件注释长度<span style="mso-tab-count: 1"></span><span style="mso-tab-count: 1">    </span><span style="mso-tab-count: 1">               </span>2 bytes<o:p></o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"><span style="mso-tab-count: 1">    </span>　　磁盘开始号<span style="mso-tab-count: 1">   </span><span style="mso-tab-count: 1">    </span><span style="mso-tab-count: 1">    </span><span style="mso-tab-count: 1">           </span>2 bytes<o:p></o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"><span style="mso-tab-count: 1">    </span>　　内部文件属性<span style="mso-tab-count: 1"></span><span style="mso-tab-count: 1">    </span><span style="mso-tab-count: 1">               </span>2 bytes<o:p></o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"><span style="mso-tab-count: 1">    </span>　　外部文件属性<span style="mso-tab-count: 1"></span><span style="mso-tab-count: 1">    </span><span style="mso-tab-count: 1">               </span>4 bytes<o:p></o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"><span style="mso-tab-count: 1">    </span><span style="mso-spacerun: yes">    </span>局部头部偏移量<span style="mso-tab-count: 1">    </span><span style="mso-tab-count: 1">    </span><span style="mso-tab-count: 1">          </span>4 bytes<o:p></o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"><span style="mso-tab-count: 1">    </span>　　文件名<span style="mso-tab-count: 1">   </span><span style="mso-tab-count: 1">    </span><span style="mso-tab-count: 1">    </span><span style="mso-tab-count: 1">            </span>（不定长度）<o:p></o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"><span style="mso-tab-count: 1">    </span>　　扩展字段<span style="mso-tab-count: 1"></span><span style="mso-tab-count: 1">    </span><span style="mso-tab-count: 1">    </span><span style="mso-tab-count: 1">            </span>（不定长度）<o:p></o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"><span style="mso-tab-count: 1">    </span><span style="mso-spacerun: yes">    </span>文件注释<span style="mso-tab-count: 1"></span><span style="mso-tab-count: 1">    </span><span style="mso-tab-count: 1">    </span><span style="mso-tab-count: 1">            </span>（不定长度）<o:p></o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"><o:p> </o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"><o:p> </o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"><span lang="EN-US" style="FONT-SIZE: 20pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA"><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"><strong>    3、压缩源文件目录结束标志</strong></span></span></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"><span lang="EN-US" style="FONT-SIZE: 20pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA"><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"><strong></strong></span></span></span> </p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"><span lang="EN-US" style="FONT-SIZE: 20pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA"><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"></span></span></span><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"><span style="mso-tab-count: 1">    </span>　　　组成<span style="mso-tab-count: 1">   </span><span style="mso-tab-count: 1">    </span><span style="mso-tab-count: 1">    </span><span style="mso-tab-count: 1">    </span>　          长度<o:p></o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"><span style="mso-tab-count: 1">    </span><span style="mso-spacerun: yes">    </span>目录结束标记<span style="mso-tab-count: 1">       </span><span style="mso-tab-count: 1">           </span><span style="mso-tab-count: 1">  </span>4 bytes<span style="mso-spacerun: yes">  </span>(0x02014b50)<o:p></o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"><span style="mso-tab-count: 1">    </span><span style="mso-spacerun: yes">    当前</span>磁盘编号<span style="mso-tab-count: 1">   </span><span style="mso-tab-count: 1">    </span><span style="mso-tab-count: 1">    </span><span style="mso-tab-count: 1">         </span>2 bytes<o:p></o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"><span style="mso-tab-count: 1">    </span><span style="mso-spacerun: yes">    </span>目录区开始磁盘编号<span style="mso-tab-count: 1">  </span><span style="mso-tab-count: 1">    </span><span style="mso-tab-count: 1">        </span>2 bytes<o:p></o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"><span style="mso-tab-count: 1">    </span>　　本磁盘上纪录总数    <span style="mso-tab-count: 1">  </span><span style="mso-tab-count: 1">           </span>2 bytes<o:p></o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"><span style="mso-tab-count: 1">    </span>　　目录区中纪录总数<span style="mso-tab-count: 1"> </span><span style="mso-tab-count: 1">  </span><span style="mso-tab-count: 1">              </span>2 bytes<o:p></o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"><span style="mso-tab-count: 1">    </span>　　目录区尺寸大小<span style="mso-tab-count: 1"> </span><span style="mso-tab-count: 1">    </span><span style="mso-tab-count: 1">              </span>4 bytes<o:p></o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"><span style="mso-tab-count: 1">    </span>　　目录区对第一张磁盘的偏移量<span style="mso-tab-count: 1">        </span>4 bytes<o:p></o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"><span style="mso-tab-count: 1">    </span>　　ZIP 文件注释长度<span style="mso-tab-count: 1"></span><span style="mso-tab-count: 1">    </span><span style="mso-tab-count: 1">            </span>2 bytes<o:p></o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"><span style="mso-tab-count: 1">    </span>　　ZIP 文件注释<span style="mso-tab-count: 1"></span><span style="mso-tab-count: 1">    </span><span style="mso-tab-count: 1">              </span>（不定长度）</span></p></span></span></span>
<img src ="http://www.blogjava.net/Yipak/aggbug/226953.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Yipak/" target="_blank">死神</a> 2008-09-04 14:53 <a href="http://www.blogjava.net/Yipak/articles/226953.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>《超星图书阅览器》图书目录文件格式探秘</title><link>http://www.blogjava.net/Yipak/articles/226951.html</link><dc:creator>死神</dc:creator><author>死神</author><pubDate>Thu, 04 Sep 2008 06:50:00 GMT</pubDate><guid>http://www.blogjava.net/Yipak/articles/226951.html</guid><wfw:comment>http://www.blogjava.net/Yipak/comments/226951.html</wfw:comment><comments>http://www.blogjava.net/Yipak/articles/226951.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Yipak/comments/commentRss/226951.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Yipak/services/trackbacks/226951.html</trackback:ping><description><![CDATA[
		<span id="ArticleContent1_ArticleContent1_lblContent">========================================<br />《超星图书阅览器》图书目录文件格式探秘<br />========================================<br />版本 1.1<br />Shun Cox (shuncox@263.net)<br /><br />注意：<br />本文可以任意复制、转换和发布，但必须保持文件内容的一致和完整。<br />有任何问题请到 bookexpress.iscool.net 或邮件 shuncox@263.net<br /><br /><br />一、.dat 文件<br />_____________________________________________________________________<br /><br />整体结构为<br />+-----------+<br />¦    头    ¦<br />+-----------+<br />¦  记录 1  ¦<br />+-----------+<br />¦  记录 2  ¦<br />+-----------+<br />¦  ...    ¦<br />+-----------+<br />¦  记录 n  ¦<br />+-----------+<br /><br />.dat 文件的头结构<br /><br />struct DatHead {<br />    DWORD Mark;        // 标志，'SSDT'<br />    WORD Ver;        // 可能是版本号，一般为 2<br />    WORD Type;        // 类型，在 site 和 address 中都为 2,<br />            // bktree 中为 0（V3.51 中为 2），<br />            // bklist 中为 3<br />    DWORD NumOfRec;    // 含有多少记录<br />    DWORD LenPerRec;    // 每个纪录的长度<br />    DWORD LenOfHead;    // 头的长度<br />    DWORD EncOffset;    // 加密段开始处，只在 bklist 中有效<br />            // （在 V3.51 中此变量无效）<br />};<br /><br /><br />二、不同 .dat 文件的记录结构<br />_____________________________________________________________________<br /><br />site.dat<br />--------<br />记录完全加密<br /><br />struct SiteInfo {<br />    char Path[32];    // 本地路径<br />    char Name[64];    // 图书馆名称<br />    WORD Rev1;        // 未知<br />    char Date[22];    // 更新日期<br />    char URL[132];    // 更新书库的 URL<br />    DWORD Rev2;        // 未知<br />};<br /><br />address.dat<br />-----------<br />记录完全加密<br /><br />struct AddrInfo {<br />    DWORD Rev;        // 未知<br />    char Addr[];    // 下载主机地址<br />}；<br /><br />bktree.dat<br />----------<br />V3.51 之前记录没有加密，V3.51 对整个记录完全加密<br /><br />struct TreeInfo {<br />    char Name[100];    // 分类名称<br />    WORD Rev;        // 未知<br />    WORD Level;        // 分类所处的层数<br />    DWORD Start;    // 在相应 bklist 中的起始记录号<br />    DWORD Num;        // 图书数量<br />};<br /><br />bklist.dat<br />----------<br />bklist 的记录相对复杂<br /><br />偏移 0 处（V3.51 以前不加密，V3.51 对整个记录完全加密）：<br />struct BookInfo {<br />    char Name[100];    // 书名<br />    DWORD Pages;    // 页数<br />    WORD AddrNo;    // 主机编号（从 1 开始，主机地址在 <br />address 中）<br />};<br /><br />偏移 DatHead::EncOffset 处为加密段（V3.51 从 0x6a 开始）：<br /><br />* 对于 SSREADER V3.4<br />struct EncInfo {<br />    WORD EncLen;    // 加密长度<br />    // 加密开始<br />    WORD Copyright;    // 版权，如果(Copyright &gt;&gt; 8 == 0)则可以下载<br />    char Path[100];    // 路径和文件名<br />    char Author[];    // 作者，如果(DatHead::LenPerRec != 0x110)则无<br />};<br /><br />* 对于 SSREADER V3.5 - V3.51<br />struct EncInfo {<br />    WORD EncLen;    // 加密长度（在 V3.51 中此变量无效）<br />    // 加密开始<br />    WORD Copyright;    // 版权，如果(Copyright &gt;&gt; 8 == 0)则可以下载<br />    char Rev[58];    // 未知<br />    DWORD SN;        // 超星书号<br />    char Path[];    // 路径和文件名<br />};<br /><br /><br />三、解密算法<br />_____________________________________________________________________<br /><br />解密以 0x10 字节为单位顺序进行，最后不足单位的字节忽略。<br /><br />void Decrypt(DWORD *s)<br />{<br />    DWORD v = 0xe3779b90;<br />    DWORD d = 0x9e3779b9;<br />    static DWORD k[] = {0x3f65496d, 0x61737745,    0x2e2c2e5e,<br />    0x38375f2f};<br />    int i;<br /><br />    for (i = 0; i &lt; 0x10; i++) {<br />        s[3] -= ((s[0] &lt;&lt; 4) + k[2]) ^ (s[0] + v) ^<br />                ((s[0] &gt;&gt; 5) + k[1]);<br />        s[2] -= ((s[3] &lt;&lt; 4) + k[0]) ^ (s[3] + v) ^<br />                ((s[3] &gt;&gt; 5) + k[3]);<br />        s[1] -= ((s[2] &lt;&lt; 4) + k[2]) ^ (s[2] + v) ^<br />                ((s[2] &gt;&gt; 5) + k[3]);<br />        s[0] -= ((s[1] &lt;&lt; 4) + k[0]) ^ (s[1] + v) ^<br />                ((s[1] &gt;&gt; 5) + k[1]);<br />        v -= d;<br />    }<br />}<br /><br />_____________________________________________________________________<br />“超星图书阅览器” 是北京世纪超星信息技术发展公司的注册商标<br />&lt;&lt;&lt; 全文结束</span>
		<br />
<img src ="http://www.blogjava.net/Yipak/aggbug/226951.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Yipak/" target="_blank">死神</a> 2008-09-04 14:50 <a href="http://www.blogjava.net/Yipak/articles/226951.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>