JPG是一种优秀的图片压缩算法,其优点是压缩率、保真率高。从数据恢复的角度来解析JPG出现碎片后是不太容易恢复的,因为JPG类的文件结构性的元文件所占的容量相对整个文件的容量是极小的,文件中的大头被压缩数据给占用了,所以导致在定位碎片和判断碎片时没有参考点,从而重组失败。这也是为什么大量号称可以重组JPG碎片,但是在实际操作时却效果很差的原因。下边我们来看一个相关的JPG重组案例,用比较另类的方法实现重组。

故障存储:SD卡 64G /exFAT

故障现象:

拍完照片后通过读卡器电脑端查看,结果发现连续有大约8张JPG文件无法正常打开。使用通用恢复软件恢复后同样不能查看,提示损坏。

故障分析:

通过在WINHEX中查看出错的文件表现出相同的故障:

  1. 文件容量大小正常

  1. 第一个簇块是正常的,文件头看样子也正常。

  1. Fat表链出现问题,跳转FAT表发现指向为0,所以查看表链也仅能获取第一个簇块编号。

初步推测是可能是由于读卡器问题导致相关文件的FAT表被清0,文件变的不正常。

故障处理:

前边已经说过JPG的文件结构不太适合碎片的定位和重组,但是分析这个案例还是发现恢复是可行的,最终决定使用遍历的方法进行按簇写入再查看。

因为在文件系统中所有写入最小单位是簇,那么以簇块为单位进行文件头之外的遍历写入,因为JPG的霍夫曼压缩算法是以行为单位,那么每写入一次去解析查看一次图片如果能得解压出正常的行,那么当前碎片就算吻合,如此重复直到完成。当然要想做到这些,至少要保证以下几点:

  1. 文件没有被覆盖过至少一簇

  1. 尽可能的压缩查找区间,在很小的范围内进行遍历。

  1. 遍历过程中进行初步判断排除一些无用的碎片,因为存在JPG交叉碎片的情况,所以提升遍历的质量也很重要。

基于以上三点,写了一个小程序,实际使用效果非常好,当然这个也和此卡仅仅拍摄照片有关系,如果卡中数据过于复杂,如存在视频文件,视频文件也是压缩算法会导致遍历成本增加。

如下图,通过这个程序可以探测出文件尾,缩小遍历区间,同时做到第3点要求,最终成功恢复出6张JPG文件,极其完美。另外2张JPG,经过对比文件头所在的簇有覆盖产生,所以已经不满足之前我们说的条件了,无法有效恢复。考虑到这个案例的特殊性,此程序仅提供一种极端情况下的恢复方案,如果碎片区间过大,区间中干扰信息较多,那么遍历的成本就会无限增加!

这就是JPG文件碎片的恢复方法,算是一个另类的采用笨办法遍历的方法,当然从恢复结果来看虽然方法笨但是有效!大家在遇到此类问题时,可以和我们联系。

一种JPG文件碎片多的恢复方法相关推荐

  1. 一台计算机数据丢失与恢复,电脑文件丢失怎么找回?电脑文件数据丢失原因及恢复方法...

    原标题:电脑文件丢失怎么找回?电脑文件数据丢失原因及恢复方法 经常使用电脑的朋友,难免在电脑里储存大量的信息和日常文件.不知道你有没有过莫名其妙丢失电脑文件和信息的经历.丢失之后,有没有想过电脑文件莫 ...

  2. 如何给html文件夹密码,怎样给文件夹加上密码_分享两种给文件夹设密码的方法...

    现在大家习惯把重要的文件或比较隐私的文件存放在电脑上,出于安全考虑,大家会选择给文件夹设密码.但是问题来了,怎样给文件夹加密码呢?估计大多数的人都还不太清楚该怎么设置吧,别着急,这里小编分享两种给文件 ...

  3. cad计算机忘了保存,win7系统下cad文件忘记保存的恢复方法

    cad是一款计算机制图辅助设计软件,很多win7系统用户都会在电脑中安装使用,但是在操作过程中如果断电或CAD出现致命错误,导致制作好的cad文件不见了,那么遇到这种cad文件忘记保存的话要怎么恢复呢 ...

  4. U盘/硬盘/数码相机RAW格式文件丢失的原因|恢复方法

    在现代数字生活中,U盘.硬盘以及数码相机等设备已经成为我们储存和分享数据的主要工具.然而,当这些设备中的RAW格式文件出现丢失时,我们可能会陷入困境.面对这种情况,了解如何恢复这些RAW格式文件就变得 ...

  5. vb中5种打开文件夹浏览框的方法总结(转)

    代码 众所周知,在vb中如果是打开某一个文件的话,非常简单,使用CommonDialog组件即可轻松完成,但是他只能选择文件,之后或许选取的文件路径,而如果想要浏览文件夹,就没这么方便了. 这里介绍3 ...

  6. sd卡中病毒的表现及sd文件消失后的恢复方法

    sd卡在日常使用中十分常见,但有时也会发生一些意外情况.例如,不小心意外感染病毒,导致sd卡中存储的文件消失.那么对于丢失的文件,我们该如何恢复呢?下面将带您了解sd卡中病毒的表现以及sd卡文件消失怎 ...

  7. .mdf数据库恢复mysql_SQL2000下仅有MDF文件时的数据库恢复方法

    29日星期六,考试到服务器已经有N久没有重装,速度变得特别慢,终于下定决心重装.经过一番努力,终于把系统重装,结果在恢复公文交换中心的数据时伤眼了:数据库LDF文件在D盘下,没有备份. 打开浏览器上网 ...

  8. 达梦数据库表数据或者物理文件误删除或者损坏恢复方法

    一.数据库表数据误删除 情况一:之前没有做备份或者忘记做备份了,这种情况下不能恢复误删除的数据 情况二:做了备份并且也配置了归档,这种情况下可以通过备份文件恢复+还原归档日志的方式恢复到指定时间点 模 ...

  9. .exe文件打不开恢复方法

    1.新建文件后缀名为.reg 粘贴以下内容(可以用任意你可以用的应用打开修改) Windows Registry Editor Version 5.00[HKEY_CLASSES_ROOT\.exe] ...

最新文章

  1. eclipse中 properties文件编码问题
  2. 只想安安静静的做个程序员
  3. javabean mysql_Mysql 存储 javabean
  4. Python入门记录
  5. 深度学习 500 问!一份火爆 GitHub 的面试手册
  6. C/Cpp / #define
  7. VTK:循环布尔PolyData用法实战
  8. MySQL在like查询中是否使用到索引
  9. 看完这篇你就知道什么是无服务器架构了
  10. PAT乙级(1009 说反话)
  11. mysql 错误代码:1293
  12. TensorFlow Seq2Seq模型样例:实现语言翻译
  13. 智联招聘 'python数据分析'职位分析第一篇
  14. ArcGIS Server 服务启动停止解决方法
  15. Axure RP 9”已损坏,无法打开。 您应该将它移到废纸篓。
  16. 强制关闭计算机窗口,windows系统怎么取消关机时强制关闭程序提示窗口?
  17. MTK平台Metadata的加载(4)—Q版本后
  18. 微信小程序轮播图的实现
  19. 蓝海创意云丨这六款软件,帮助制片高效规划拍摄计划
  20. 可以重写static方法和private方法吗

热门文章

  1. 世纪前线网络质量测试工具 是什么_上海控安发布汽车信息安全评估工具箱:一款标准化、自动化的安全测试工具...
  2. 使用腾讯企业邮箱调用SpringMail或者JavaMail发送邮件的发送服务器设置
  3. Mybatis概念和配置应用
  4. Parlay/OSA-创建无线业务的一种新途径
  5. 智慧灯杆系列网关产品 赋能智慧城市
  6. 增值电信业务中1069短信代码和1066短信代码有什么区别吗?
  7. 【SciPy库】scipy.optimize.fmin_l_bfgs_b进行L-BFGS优化
  8. 苹果电脑上下载工具folx的自动化下载功能怎么使用
  9. 【优秀的iPhone/iPad数据恢复工具】Omni Recover for Mac 2.5
  10. 2023年Python面试题(真题)【进阶】