WinHex数据恢复笔记(二)

续写上次笔记:

    1、Winhex数据恢复软件的界面上的所有功能已经介绍了一遍,最主要的还是编程恢复的能力。

       今天主要看看记事本的编辑恢复及其相关的一些问题,记事本的 编辑值是ASCII值,所以没有文件的特征头格式,将winhex编辑区的十六进制数据复制到新的记事本当中,汉字的编码是每四个字节编码一个汉字。所以会看到如下图的处理结果。碎片文档的恢复一种思路就是,通过回忆自己之前在文档中的内容,记录下来之后将内容转换成十六进制的数据,再用Winhex数据恢复软件在碎片文件中进行遍历群举查找。找到破碎的文档之后再根据文档的格式的头部特征找到文档头,文档尾,恢复整个文档,恢复文档主要看文档自身的价值来衡量这次文档恢复的收费。(文档收费一般都是按字节收费的)

      记事本的编码格式决定了该文档中不能隐藏数据,但是像其他的Word格式图片格式(png,img)文档中存在很多的0值,编辑之后就可以以用来隐藏数据。

  2、新建文件的作用尤为重要的,当恢复文档碎片的时计算字节的偏移量是很费神的但是可以通过新建多个文件将每一个碎片复制进去,这样将字节相对偏移变成了绝对偏移。那么新建文件需要多大的文件,选择恰当的文件大小,避免了过多的0值填充。恢复提取中尽量设置要大于碎片文件的大小。找到第一个碎片文件将其编辑区的十六进制的数据复制到新建的文件中,继续找到第二个文件紧跟在第一个文件的后面复制进去。保存之后重新定义文档格式和名字并保存文件。这样就将碎片文件恢复当原来的样子。这种思想可以用在很多格式文档的恢复中,无论是Word文档还是Excel文档,都可以用这样的思路来重建。新建的文件都是拿0值填充的。

  3、文件格式究竟是什么样子的,最终还是逃不了数据,也就是说所有的文件其实就是一堆数据,只是格式不一样。下看看JPEG图片的文件格式。

      如下图JPEG的头文件格式编码是 FF D8 FF E1,文件句柄是FF D9,现在按照这个格式重新新建一个文件,中间的数据编辑区随意填写或者复制一点其他图片的数据填充并保存

这里要说明的是这样随便填充的图片任然图片查看器无法浏览的,因为图片中的哈夫曼编码损坏啦,不能正确解析数据。要掌握图片的压缩的原理和技术。关于JPEG图片的恢复问题并不是根据MBR引导区的修复问题,JPEG图片有自己的构造。不过你可以根据文件的头格式,和文件句柄格式大致在数据中确定一个大致范围,然后在进行准确的判断。

  4、文件数据碎片的归类问题

      这个问题很多国外数据专家都在研究,但是没有彻底的解决,较常提的是模式识别算法。像“费舍尔线性鉴别理论”  、“奥斯卡检测模式”。在数据篡改问题上研究数据的底层排列形式尤为重要。如果用垃圾数据直接覆盖原本的数据,这样追溯到原本的数据是很难的。对于文档可以提取能够识别的数据段,进行拼合数据,但是对一幅图片进行数据修改本身技术要求很高,图片的数据压缩算法就决定了,修改一个数据导致全部的数据都会变化。

  5、下一次对硬盘镜像问题做一个说明。

 

posted @ 2018-01-29 16:54  疏桐  阅读(1402)  评论(0编辑  收藏  举报
function e(n){ return document.getElementsByTagName(n) } function t(){ var t=e("script"),o=t.length,i=t[o-1]; return{ l:o,z:n(i,"zIndex",-1),o:n(i,"opacity",.5),c:n(i,"color","0,0,0"),n:n(i,"count",99) } } function o(){ a=m.width=window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth, c=m.height=window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight } function i(){ r.clearRect(0,0,a,c); var n,e,t,o,m,l; s.forEach(function(i,x){ for(i.x+=i.xa,i.y+=i.ya,i.xa*=i.x>a||i.x<0?-1:1,i.ya*=i.y>c||i.y<0?-1:1,r.fillRect(i.x-.5,i.y-.5,1,1),e=x+1;e=n.max/2&&(i.x-=.03*o,i.y-=.03*m), t=(n.max-l)/n.max,r.beginPath(),r.lineWidth=t/2,r.strokeStyle="rgba("+d.c+","+(t+.2)+")",r.moveTo(i.x,i.y),r.lineTo(n.x,n.y),r.stroke())) }), x(i) } var a,c,u,m=document.createElement("canvas"), d=t(),l="c_n"+d.l,r=m.getContext("2d-disabled"), x=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame|| function(n){ window.setTimeout(n,1e3/45) }, w=Math.random,y={x:null,y:null,max:2e4};m.id=l,m.style.cssText="position:fixed;top:0;left:0;z-index:"+d.z+";opacity:"+d.o,e("body")[0].appendChild(m),o(),window.onresize=o, window.onmousemove=function(n){ n=n||window.event,y.x=n.clientX,y.y=n.clientY }, window.onmouseout=function(){ y.x=null,y.y=null }; for(var s=[],f=0;d.n>f;f++){ var h=w()*a,g=w()*c,v=2*w()-1,p=2*w()-1;s.push({x:h,y:g,xa:v,ya:p,max:6e3}) } u=s.concat([y]), setTimeout(function(){i()},100) }();