热门标签 | HotTags
当前位置:  开发笔记 > 程序员 > 正文

7个碎片的excel重组实验

H盘是fat32系统,簇大小8。根目录下有一个123.xls文件,winhex下查看文件共有7个碎片。现在删除这个文件,再用winhex分析查找到所有碎片,提取出来,最后在重

         H盘是fat32系统,簇大小8 。根目录下有一个123.xls文件,winhex下查看文件共有7个碎片。现在删除这个文件,再用winhex分析查找到所有碎片,提取出来,最后在重组为一个文件,就是原来删除的123.xls







下面是恢复过程:打开winhex,根据目录项定位到他的文件头扇区。1591240



根据文件头中的参数跳转到ROOT所在扇区,查看workbook流的起始位置,为08 00 00 00



跳转过去,



    然后根据workbook流的结构关键字标识(比如字体,格式,样式,调色板,SSTsheet表等等)来分析当前碎片的结束位置和下一个碎片的开始位置。


当分析到1591271扇区时,发现下一扇区明显是另外一个复合文档的文件头,这说明1591271扇区就是第一个碎片的结束扇区,经过计算,这个扇区正好是198404号簇的最后一个扇区。



    这样第一个碎片就确定了,1591240---1591271 ,提取出来保存为1.dat 。现在查找第二个碎片,我们利用下一个碎片第一个关键字标识距离碎片开始的字节长度为线索来查找。期间排出了几个错误的搜索结果,最后确认1591280扇区为下一个碎片的开始扇区。



    下面继续分析,查找是碎片的结尾。通过分析搜索,在1592143扇区找到了碎片尾部,如图:



    这样,第二个碎片就确定了,1591280---1592143。提取出来保存为2.dat


下面查找第三个碎片的开始扇区,同样的思路。最终在1593840扇区找到了下一个碎片的开始扇区。如图:



继续分析查找碎片的结尾,在1594191扇区找到了碎片的结束扇区,如图:



这样,第三个碎片就确定了大小范围,1593840---1594191 。提取出来保存为3.dat 。继续分析搜索第四个碎片。我就不一一贴图了,以下是分析出的各碎片的范围:


  1. 1595128---1596183

  2. 1669056---1669631

  3. 1745208---1745623

  4. 1761672---1762887

    最后把这提取出来的7个碎片文件合并成一个excel文件:recovery.xls 。然后打开验证

    一下,如图:





没有任何问题,文件重组成功!


 以上是我自己做的实验,在实际的重组过程中可能会碰到一些其他的问题。在这就不探讨了。此实验只是提供一种思路供大家参考,前提是要对workbook流的结构要有一定的了解才行。好了,就到这里,下次见!           


                             


                                                                                                                                          bsmao      2014-1-8





推荐阅读
  • 怀疑是每次都在新建文件,具体代码如下 ... [详细]
  • 本文介绍了Python对Excel文件的读取方法,包括模块的安装和使用。通过安装xlrd、xlwt、xlutils、pyExcelerator等模块,可以实现对Excel文件的读取和处理。具体的读取方法包括打开excel文件、抓取所有sheet的名称、定位到指定的表单等。本文提供了两种定位表单的方式,并给出了相应的代码示例。 ... [详细]
  • 本文介绍了使用SRILM平滑Katz回退方法训练语言模型的步骤,包括测试文件的使用、模型训练过程以及困惑度的重新计算。平滑Katz回退方法通过将次数较少的N-gram组的概率减少,并将减少的概率分配给训练集中未出现的N-gram组。详细的条件概率计算过程可参考附录中的Excel表格。通过重新计算困惑度,可以评估训练得到的语言模型的质量。 ... [详细]
  • 本文介绍了如何使用python从列表中删除所有的零,并将结果以列表形式输出,同时提供了示例格式。 ... [详细]
  • MATLAB函数重名问题解决方法及数据导入导出操作详解
    本文介绍了解决MATLAB函数重名的方法,并详细讲解了数据导入和导出的操作。包括使用菜单导入数据、在工作区直接新建变量、粘贴数据到.m文件或.txt文件并用load命令调用、使用save命令导出数据等方法。同时还介绍了使用dlmread函数调用数据的方法。通过本文的内容,读者可以更好地处理MATLAB中的函数重名问题,并掌握数据导入导出的各种操作。 ... [详细]
  • 我们有(据我所知)星型模式SQL数据库中的数据文件。该数据库有5个不同的文件,扩展名为 ... [详细]
  • 解决.net项目中未注册“microsoft.ACE.oledb.12.0”提供程序的方法
    在开发.net项目中,通过microsoft.ACE.oledb读取excel文件信息时,报错“未在本地计算机上注册“microsoft.ACE.oledb.12.0”提供程序”。本文提供了解决这个问题的方法,包括错误描述和代码示例。通过注册提供程序和修改连接字符串,可以成功读取excel文件信息。 ... [详细]
  • 本文介绍了一个免费的asp.net控件,该控件具备数据显示、录入、更新、删除等功能。它比datagrid更易用、更实用,同时具备多种功能,例如属性设置、数据排序、字段类型格式化显示、密码字段支持、图像字段上传和生成缩略图等。此外,它还提供了数据验证、日期选择器、数字选择器等功能,以及防止注入攻击、非本页提交和自动分页技术等安全性和性能优化功能。最后,该控件还支持字段值合计和数据导出功能。总之,该控件功能强大且免费,适用于asp.net开发。 ... [详细]
  • YOLOv7基于自己的数据集从零构建模型完整训练、推理计算超详细教程
    本文介绍了关于人工智能、神经网络和深度学习的知识点,并提供了YOLOv7基于自己的数据集从零构建模型完整训练、推理计算的详细教程。文章还提到了郑州最低生活保障的话题。对于从事目标检测任务的人来说,YOLO是一个熟悉的模型。文章还提到了yolov4和yolov6的相关内容,以及选择模型的优化思路。 ... [详细]
  • 安装mysqlclient失败解决办法
    本文介绍了在MAC系统中,使用django使用mysql数据库报错的解决办法。通过源码安装mysqlclient或将mysql_config添加到系统环境变量中,可以解决安装mysqlclient失败的问题。同时,还介绍了查看mysql安装路径和使配置文件生效的方法。 ... [详细]
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • 本文介绍了在Python3中如何使用选择文件对话框的格式打开和保存图片的方法。通过使用tkinter库中的filedialog模块的asksaveasfilename和askopenfilename函数,可以方便地选择要打开或保存的图片文件,并进行相关操作。具体的代码示例和操作步骤也被提供。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
author-avatar
书友79805954
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有