winhex先Add再XOR后的数据恢复


 

      近来经常有网友QQ问我,用winhex修改数据,先Add运算,再XOR运算,这样修改后(加密)的数据如何恢复(还原)?

 

      这个好像是中职(或高职)学生在参加全国数据恢复比赛时的题目。我试着做了一下,下面是过程:

 

      首先创建了一个名为“实验doc文档”,如下图:


 

 

      用winhex打开这个文件,选定所有字节,作如下运算:

 

      先 Add 23H ,再XOR 32H(这两个数值是随意选择的)。如下图:



 

      这样运算之后的数据如下图:

 


 

      数据已经被加密了。

 

      下面开始恢复数据:

 

      思路:首先把复合文档的文件头0xD0CF11E0A1B11AE1作为关键字,而加密后关键字偏移位置的值为0x C1C00631F6E60F36 。

 

      已知关键字的当前值是由关键字先Add某个数值再XOR某个数值得到的,理论上反向操作(先XOR再Add)的话,由于按字节运算了两次(Add和XOR),而一个字节最大可以表示256个数值(00 H至FF H),那么使用穷举法,最多需要计算256的平方=  65536 次就可以了。

 

      如果通过反向运算后,得到了文件头0xD0CF11E0A1B11AE1,那么就可以得到这两个运算(Add和XOR)的数值。

 

      可能有人会问,Add运算的结果,要用减法来还原才行啊。其实减去一个数就等于加一个负数,这样就好理解了。呵呵。

 

      很明显,这个数量级的计算用手工就太慢了,所以需要编写winhex脚本或小程序来完成计算。下图是我编写的小程序:

 


 

      用程序计算效率就高多了,一秒钟结果就出来了。从图中可以看到,通过反向计算,一共找到了两组数值:1.  32H DD H ; 2. B2 H5D H

 

      通过验证,这两组数值都可以恢复原数据。那么为什么有两组呢?大家可以思考思考,在这儿就不详细讲了。

 

 

 

 

      好了,以上就是我的恢复思路和方法。再见!

 

 

                                                                                                   保定图锐数据恢复工作室:bsmao   QQ:281935223

 

                                                                                                                                                           2018 . 2 . 22

  • 7
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值