• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    硬盘基地手机版
  • 关注官方公众号
    微信扫一扫关注
    硬盘基地公众号
  • exFAT校验块快速计算与修复

    [复制链接]
    feifanll 发表于 2019-4-28 18:46:42 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
    exFAT校验块快速计算与修复
    我们知道 exFAT在DBR损坏后,可以找FAT表、$BitMap、$UpCase、Root等位置参数快速恢复DBR。
    但是单纯的修复好DBR,分区依然不能正常打开。

    这是因为操作系统会对比exFAT分区的11号扇区的校验值,值不相同则报错并不予识别。
    这个校验值是通过0-10号扇区的数据计算得到的,也就是说只要0-10这几个扇区发生改变,则校验值改变。

    查阅资料得到这个校验算法是这样的--11号扇区校验的算法:

    UINT32 VBRChecksum(const unsigned char octsts[],long NumberOfBytes)
    { UINT32 Checksum = 0;
      long Index;
      for (Index = 0; Index < NumberOfBytes; Index++)
        {
            if (Index == 106 || Index == 107 || Index == 112)
                {
                 continue;
                }
            Checksum = ((Checksum <<31) | (Checksum>> 1)) + (UINT32) octsts[Index];
        }
      return Checksum;
    }


    好,算法有了,我们用winhex脚本快速实现。
    下来演示一下,脚本的实地效果:
    exFAT校验计算.gif
    演示说明:
    这是一个正常的exFAT分区虚拟磁盘,加载后显示里面有10张图片。

    我们搞下破坏,在1号扇区修改一些数据并保存。
    弹出虚拟磁盘后再加载,此刻系统报错。识别为RAW格式。

    打开写好的脚本,计算并修改一下校验值。

    保存后分区自动打开,数据正常访问。

    精彩评论2

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    关注0

    粉丝7

    帖子9

    发布主题
    阅读排行 更多
    广告位

    扫描微信二维码

    查看手机版网站

    随时了解更新最新资讯

    .

    在线客服(服务时间 9:00~18:00)

    在线QQ客服
    .
    Email:9443120@qq.com
    移动电话:13011628855

    Powered by Intohard X1.0© 2001-2013 Inhdd Inc.( 鲁ICP备09029790号 )