java里如何正确计算检验和

java里如何正确计算检验和,第1张

import javasecurityMessageDigest;

 

public class MD5HashingExample 

{

    public static void main(String[] args)throws Exception

    {

     String password = "123456";

 

        MessageDigest md = MessageDigestgetInstance("MD5");

        mdupdate(passwordgetBytes("UTF-8"    )); //or GBK

 

        byte byteData[] = mddigest();

 

        //convert the byte to hex format method 1

        StringBuffer sb = new StringBuffer();

        for (int i = 0; i < byteDatalength; i++) {

         sbappend(IntegertoString((byteData[i] & 0xff) + 0x100, 16)substring(1));

        }

 

        Systemoutprintln("Digest(in hex format):: " + sbtoString());

 

        //convert the byte to hex format method 2

        StringBuffer hexString = new StringBuffer();

     for (int i=0;i<byteDatalength;i++) {

     String hex=IntegertoHexString(0xff & byteData[i]);

          if(hexlength()==1) hexStringappend('0');

          hexStringappend(hex);

     }

     Systemoutprintln("Digest(in hex format):: " + hexStringtoString());

    }

}

用HexWorkshop。HexWorkshop是一款非常专业的十六进制编辑器,功能强大的开发工具,可以方便地进行十六进制编辑、插入、填充、删除、剪切、复制和粘贴工作,配合查找、替换、比较以及计算校验和等命令使工作更加快捷。

如果单片机没加密的话可以从里面读到二进制程序,一般是用编程器,有些单片机支持下载线的用下载线也可以

修改改程序比较难,首先你得到二进制程序,然后反汇编,再修改汇编程序,再编译

这个比较难,如果单片机加密就几乎没办法了,并且得到程序你还要看懂,知道怎么改

HEX文件与BIN文件从使用上没区别,最终表示的都是二进制的数据块,只是HEX文件是ASCII码的(可用记事打开)并且有校验,BIN就是二进制的数据块,这两种文件都是没有密码的,打开他们不成问题

不严谨的说法,hex文件是一种特殊格式的程序文件,hex文件里面存储的是全部ASCII字符,这些字符有固定的规律,如果想了解如何将Hex文件转为Bin文件可以查一下Intel的Hex文件的规格书。由于有一系列地址、数据、校验信息在HEX文件里,所通常状况下Hex文件是比BIN文件体积要大。也正是由于HEX文件中包含了地址信息,所以HEX文件可以存储非连续地址的二进制文件或者说是程序文件,在这种情况下HEX文件就有可能比包含同样多信息的BIN文件小了。

这其中的关键其实就是个HEX文件格式的问题,你随便查一查HEX文件的数据格式,你的问题就迎刃而解了。

至于你说的51单片机的数据区问题。

data区对应51单片机的内部RAM,C51里通过data(用于声明直接或间接寻址数据),idata(用于声明只间接寻址数据)。

xdata区对应51单片机的MOVX指令寻址,传统51单片机中对应于外部RAM,一些变种的51单片机(现在主流的单片机应该都算是传统51单片机的变种)中扩展了内部RAM就是通过MOVX指令做的文章,C51中使用xdata关键字声明。

code区对应51单片机的程序存储区,这个不多说了,C51中可以使用code关键字将数据定义在程序存储区。

另,找本C语言的书看看吧,这些都是最基础的东西,good luck

如何读懂 Intel HEX 文件

什么是 Intel HEX 文件格式

Intel HEX 文件是遵循 Intel HEX 文件格式的 ASCII 文本文件。在 Intel HEX 文件的每一行都包含了一个 HEX 记录。这些记录是由一些代表机器语言代码和常量的16进制数据组成的。Intel HEX 文件常用来传输要存储在 ROM 或者 EPROM 中的程序和数据。大部分的 EPROM 编程器能使用 Intel HEX 文件。

Intel HEX由任意数量的十六进制记录组成。每个记录包含5个域,它们按以下格式排列:

Start Code  每个 Intel HEX 记录都由冒号开头

Byte count 是数据长度域,它代表记录当中数据字节的数量

Address 是地址域,它代表记录当中数据的起始地址

Record type 是代表HEX记录类型的域,它可能是以下数据当中的一个:

00-数据记录

01-文件结束记录

02-扩展段地址记录

03-开始段地址记录

04-扩展线性地址记录

05-开始线性地址记录

Data 是数据域,一个记录可以有许多数据字节记录当中数据字节的数量必须和数据长度域中指定的数字相符

Checksum 是校验和域,它表示这个记录的校验和校验和的计算是通过将记录当中所有十六进制编码数字对的值相加,以256为模进行以下补足。

WinHex [Window Hex] 是一个专门用来对付各种日常紧急情况的小工具。它可以用来检查和修复各种文件、恢复删除文件、硬盘损坏造成的数据丢失等。同时它还可以让你看到其他程序隐藏起来的文件和数据。总体来说是一款非常不错的 16 进制编辑器。得到 ZDNetSoftwareLibrary 五星级最高评价,拥有强大的系统效用。

Winhex使用简单,功能强大,可以方便你程序的调试、文本编辑、科学计算和系统管理,相信你会喜欢的。如果你想删除Winhex软件,简单,把整个目录干掉就行了

作为一个16进制文件编辑与磁盘编辑软件。WinHex以文件小、速度快,功能强大而著称,连ZDNetSoftwareLibrary也给了他5星的最高评价。它可以胜任Hex和ASCII码编辑修改,多文件寻替换功能,一般运算及逻辑运算,磁盘磁区编辑(支持FAT16、FAT32和NTFS)自动搜寻编辑,文件比对和分析,编辑内存里面的资料等功能

首先我们到这里去下载一个814KB大小的中文汉化版本的WINHEX,汉化版本更加容易使用嘛,值得一提的是WINHEX是免费软件,你可以在所有的WINDOWS平台上面运行。安装过程非常简单,成功安装之后,程序图标就会出现在"开始→程序"菜单和桌面上。其界面由标题栏、工具栏、菜单栏、浏览区和状态栏组成。下面我们来简要介绍一下:

◇功能菜单:WINHEX的菜单栏由八个菜单组成,分别是:文件、编辑、查找、位置、工具、选项、文件管理器、窗口和帮助。所有的功能都已经包含在里面了。在文件菜单里面包含的是新建、打开文件和保存以及退出命令,另外还有备份管理、创建备份和载入备份功能。在编辑菜单里面除了复制粘贴之类的常见命令之外还有对数据格式进行转换和修改的功能。查找功能是方便您在文件里面查找特定的文本内容或者是十六进制代码的,支持整数值和浮点数值。位置菜单里面的命令就是让你在编辑大体积的文件的时候能够方便地进行定位,你可以根据其中的偏移地址或者是区块的位置来快速定位。工具菜单里面包括的都是一些十分实用的功能,譬如磁盘编辑工具(类似PCTOOLS里面的DISKEDIT)、文本编辑工具(类似记事本)、计算器、模板管理工具和十进制、十六进制转换器等等。如果你要对WINHEX的功能进行设置,那么就必须进入选项菜单了,里面除了常规选项的设置,还有安全性设置和还原选项设置。在文件管理菜单中,你可以对文件进行分割、比较、复制和剖析,功能十分强大。"工具"选项里面包含的是文件新建、打开、保存、打印、属性工具;剪切、粘贴和复制编辑工具;查找文本和Hex值,替换文本和Hex值;文件定位工具、RAM编辑器、计算器、区块分析和磁盘编辑工具等等。这些功能除了在菜单里面进行选择之外,还可以通过菜单下面的一列快捷按钮来执行。

◇在使用Winhex时首先打开一个需要处理的文件,窗口中显示十六进制HEX格式的数值和地址。在旁边的区域显示文件名称、大小、创建时间、最后修改日期,窗口属性以及相关信息。利用鼠标拖放功能你可以选择一块数值进行修改编辑。按Ctrl+T,d出数据修改对话框,选择数据类型和字节变换方式,可以方便的修改区块中的数据。执行文件菜单中的创建备份命令,d出备份对话框,你可以指定备份的文件名和路径、备份说明,还可以选择是否自动由备份管理指定文件夹,是否保存检查和摘要,是否压缩备份和加密备份,这样你可以方便的将你的文件进行备份,下次执行文件菜单中的装载备份就可以打开备份文件了,十分方便

◇强大的查找功能:Winhex具有强大的查找搜索功能,可以查找和替换文本或Hex值。选择搜索菜单中的联合搜索项,d出搜索对话框,先输入该文件要搜索的十六进制值选择通配符和搜索的范围就可以开始搜索了。你可以选择在整个文件中搜索,也可选择仅在区块中进行有条件的搜索。而且在Winhex中可以方便的进行定位 *** 作,快速转道新的位置。执行定位菜单中的标记定位命令,或按Ctrl+L,将鼠标指向需要定位的位置,就可以在当前鼠标所在的位置作上标记,不管你 *** 作到什么地方,按组合键Ctrl+k,就可以返回到标记所在的位置。执行定位菜单中的删除标记命令,可以将所作的标记删除。除了利用标记定位以外,你还可以方便的转到文件的开始和结尾,区块的开始和结尾,行首和行尾以及页首和页尾。你可以自己试一试,相信你很快就知道了。

◇Winhex集成了强大的工具,包括磁盘编辑器,计算器,Hex转换器和RAM编辑工具,使用十分方便。按F9,d出磁盘编辑器对话框,首先选择磁盘分区,然后按确定按钮就可以方便的对磁盘的空余空间进行清理。点击工具栏中的RAM编辑工具按钮,d出RAM编辑器,选择需要浏览或编辑修改的RAM区,选择确定就可以了,RAM的内容就显示在主窗口了。

如果您在PCTOOLS之后再也没有碰到过称心的十六进制编辑器,那么我推荐你使用WINHEX。

功能包括:

- 硬盘, 软盘, CD-ROM 和 DVD, ZIP, Smart Media, Compact Flash, 等磁盘编辑器。

- 支持 FAT, NTFS, Ext2/3, ReiserFS, Reiser4, UFS, CDFS, UDF 文件系统。

- 支持对磁盘阵列 RAID 系统和动态磁盘的重组、分析和数据恢复。

- 多种数据恢复技术。

- 可分析 RAW 格式原始数据镜像文件中的完整目录结构,支持分段保存的镜像文件。

- 数据解释器, 已知 20 种数据类型。

- 使用模板编辑数据结构 (例如: 修复分区表/引导扇区)。

- 连接和分割、以奇数偶数字节或字的方式合并、分解文件。

- 分析和比较文件。

- 搜索和替换功能尤其灵活。

- 磁盘克隆 (可在 DOS 环境下使用 X-Ways Replica)。

- 驱动器镜像和备份 (可选压缩或分割成 650 MB 的档案)。

- 程序接口 (API) 和脚本。

- 256 位 AES 加密, 校验和, CRC32, 哈希算法 (MD5, SHA-1, )。

- 数据擦除功能,可彻底清除存储介质中残留数据。

- 可导入剪贴板所有格式数据, 包括 ASCII、16 进制数据。

- 可进行 2 进制、16 进制 ASCII, Intel 16 进制, 和 Motorola S 转换。

- 字符集: ANSI ASCII, IBM ASCII, EBCDIC, (Unicode)。

- 立即窗口切换、打印、生成随机数字。

- 支持打开大于 4 GB 的文件,非常快速,容易使用。

- 广泛的联机帮助。

特别注意

仅 Windows 2000/XP/2003 下才能使用完整功能。

尽量不要解压至中文名文件夹下,否则运行出错!

该软件的使用。

标题栏:与一般的应用软件一样,标题栏中显示软件名称和当前打开的文件名称;

菜单栏:Winhex的菜单栏由八个菜单项组成-文件菜单、编辑菜单、搜索、定位、工具、选项菜单、文件管理、窗口和帮助菜单。

在文件菜单中,除了常规的新建、打开文件和保存以及退出命令以外,还有备份管理、创建备份和载入备份功能。选择文件菜单中的属性项,d出文件属性窗口,包括文件路径、名称、大小、创建时间和修改日期等内容。在编辑菜单中,除了常规的复制、粘贴和剪切功能外,还有数据格式转换和修改的功能。在搜索菜单中,你可以查找或替换文本内容和十六进制文件,搜索整数值和浮点数值。在定位菜单中,你可以根据偏移地址和区块的位置快速定位。在工具菜单中,包括磁盘编辑工具、文本编辑工具、计算器、模板管理工具和Hex转换器,使用十分方便。在选项菜单中,包括常规选项设置、安全性设置和还原选项设置。

在Winhex的工具栏中,包括文件新建、打开、保存、打印、属性工具;剪切、粘贴和复制编辑工具;查找文本和Hex值,替换文本和Hex值;文件定位工具、RAM编辑器、计算器、区块分析和磁盘编辑工具;选项设置工具和帮助工具按钮。通过使用工具栏中的快捷按钮可以更方便的进行 *** 作,这些和菜单中相应的命令是一样的。

在使用Winhex之前需要进行相应的选项设置,点击工具栏中的选项设置快捷图标按钮,d出选项设置对话框它包括是否将WinHex作为默认关联,是否添加WinHex到上下文菜单,是否不更新文件名,是否快速打开文件以及是否显示文件图标和工具栏。而且你还可以设置最近打开的文件列表中文件的数目,选择是否用TAB键产生标记,设置临时文件夹、备份文件夹和文本编辑的路径。在常规设置中,你可以选择是否选择显示双光标和页分隔符,是否逐行滚动,是否显示Windows进度条,此外你还可以设置字体类型和颜色,相信你很快就学会了。执行选项菜单中的安全项,d出安全保护选项设置窗口,你可以选择是否限制驱动控制,是否计算标准检查和扇区读入缓存以及是否确认更新文件。另外你可以选择是否自动检查磁簇,是否总显示恢复报告,是否对下个会话保持驱动映像,是否隐蔽输入加密关键码()以及检查虚拟内存变换和在RAM中是否保留密匙。在所有设置完成后,点击保存按钮,然后按确定按钮返回主窗口。

数据恢复:

硬恢复和软恢复。所谓硬恢复就是硬盘出现物理性损伤,比如有盘体坏道、电路板芯片烧毁、盘体异响,等故障,由此所导致的普通用户不容易取出里面数据,那么我们将它修好,同时又保留里面的数据或后来恢复里面的数据,这些都叫数据恢复,只不过这些故障有容易的和困难的之分;所谓软恢复,就是硬盘本身没有物理损伤,而是由于人为或者病毒破坏所造成的数据丢失(比如误格式化,误分区),那么这样的数据恢复就叫软恢复。因为硬恢复还需要购买一些工具设备(比如pc3000,电烙铁,各种芯片、电路板),而且还需要懂一点点电路基础,我们主要使用软恢复。

恢复前提:

硬盘数据结构

下面是一个分了三个区的整个硬盘的数据结构

MBR C盘EBRD盘 EBR E盘

MBR,即主引导纪录,位于整个硬盘的0柱面0磁道1扇区,共占用了63个扇区,但实际只使用了1个扇区(512字节)。在总共512字节的主引导记录中,MBR又可分为三部分:第一部分:引导代码,占用了446个字节;第二部分:分区表,占用了64字节;第三部分:55AA,结束标志,占用了两个字节。后面我们要说的用winhex软件来恢复误分区,主要就是恢复第二部分:分区表。

引导代码的作用:

就是让硬盘具备可以引导的功能。如果引导代码丢失,分区表还在,那么这个硬盘作为从盘所有分区数据都还在,只是这个硬盘自己不能够用来启动进系统了。如果要恢复引导代码,可以用DOS下的命令:FDISK /MBR;这个命令只是用来恢复引导代码,不会引起分区改变,丢失数据。另外,也可以用工具软件,比如DISKGEN、WINHEX等。

但分区表如果丢失,后果就是整个硬盘一个分区没有,就好像刚买来一个新硬盘没有分过区一样。是很多病毒喜欢破坏的区域。

EBR,也叫做扩展MBR(Extended MBR)。因为主引导记录MBR最多只能描述4个分区项,如果想要在一个硬盘上分多于4个区,就要采用扩展MBR的办法。

MBR、EBR是分区产生的。

比如MBR和EBR各都占用63个扇区,C盘占用1435329个扇区……那么数据结构如下表:

63 1435329 63 1435329 63 1253889

MBR C盘 EBR D盘 EBR E盘

扩展分区

而每一个分区又由DBR、FAT1、FAT2、DIR、DATA5部分组成:比如C 盘的数据结构:

C 盘

DBR FAT1 FAT2 DIR DATA

恢复教程

Winhex有完善的分区管理功能和文件管理功能,能自动分析分区链和文件簇链,能对硬盘进行不同方式不同程度的备份,甚至克隆整个硬盘;它能够编辑任何一种文件类型的二进制内容(用十六进制显示)其磁盘编辑器可以编辑物理磁盘或逻辑磁盘的任意扇区,是手工恢复数据的首选工具软件。

首先要安装Winhex,安装完了就可以启动winhex了,启动后,首先出现的是启动中心对话框。

这里我们要对磁盘进行 *** 作,就选择"打开磁盘",出现"编辑磁盘"对话框:

在这个对话框里,我们可以选择对单个分区打开,也可以对整个硬盘打开,HD0是我现在正用的西部数据40G系统盘,HD1是我们要分析的硬盘,迈拓2G。这里我们就选择打开HD1整个硬盘,再点确定然后我们就看到了Winhex的整个工作界面。

最上面的是菜单栏和工具栏,下面最大的窗口是工作区,现在看到的是硬盘的第一个扇区的内容,以十六进制进行显示,并在右边显示相应的ASCII码,右边是详细资源面板,分为五个部分:状态、容量、当前位置、窗口情况和剪贴板情况。这些情况对把握整个硬盘的情况非常有帮助。另外,在其上单击鼠标右键,可以将详细资源面板与窗口对换位置,或关闭资源面板。(如果关闭了资源面板可以通过"察看"菜单--"显示"命令--"详细资源面板"来打开)。

最下面一栏是非常有用的辅助信息,如当前扇区/总扇区数目……等

向下拉拉滚动条,可以看到一个灰色的横杠,每到一个横杠为一个扇区,一个扇区共512字节,每两个数字为一个字节,比如00。

下面我们来分析一下MBR,因为前面我们说过,前446个字节为引导代码,对我们来说没有意义,这里我们只分析分区表中的64个字节。

分区表64个字节,一共可以描述4个分区表项,每一个分区表项可以描述一个主分区或一个扩展分区(比如上面的分区表,第一个分区表项描述主分区C盘,第二个分区表项描述扩展分区,第三第四个分区表项填零未用)

每一个分区表项各占16个字节,各字节含义如下:(H表示16进制)

字节位置 内容及含义

第1字节 引导标志。若值为80H表示活动分区;若值为00H表示非活动分区。

第2、3、4字节 本分区的起始磁头号、扇区号、柱面号

第5字节 分区类型符:

00H--表示该分区未用

06H--FAT16基本分区

0BH--FAT32基本分区

05H--扩展分区

07H--NTFS分区

0FH--(LBA模式)扩展分区

83H-- Linux分区

第6、7、8字节 本分区的结束磁头号、扇区号、柱面号

第9、10、11、12字节 本分区之前已用了的扇区数

第13、14、15、16字节 本分区的总扇区数

此硬盘的第一分区表(即MBR)分析如下:

第一个分区表项(C盘)

第1字节80:表示此分区为活动分区;

第5字节0B:表示分区类型为Fat32;

第9、10、11、12字节 系统隐含扇区3F 00 00 00:所谓系统隐含扇区就是本分区(C盘)之前已用了的扇区数,这是一个十六进制数,但要注意:真正的隐含扇区数应该反过来填写(比如:隐含扇区数为3E 4D 5A 6F,则反过来就是6F 5A 4D 3E ,这才是实际的隐含扇区数)。那么,3F 00 00 00反过来写就是00 00 003F,也就是3F,将他转成十进制数我们才能知道实际的隐含扇区数是多大。这可以使用计算器来算,单击工具栏上的"计算器"按钮。

这样就启动了计算器

计算器有两种型号,我们要进行进制转换,就要选择"科学型"

比如我们要将十六进制3F转换为十进制,就要先选中"十六进制",然后输入3F

再选中"十进制",十六进制3F转为十进制等于63。想一想我们前面所讲的,MBR占用63个扇区,也就是C盘之前已用了的扇区数为63,第64个扇区就是C盘的第一个扇区,但要注意的是,整个硬盘的LBA地址是从零开始的,0~62的扇区为MBR。

第13、14、15、16字节本分区总扇区数(当然,这也就是C盘的大小):C1 E6 15 00,同样,实际的十六进制数也要反过来才对,也就是00 15 E6 C1,将它转换成十六进制数是1435329。给你出个题,你知道D盘的EBR在哪个扇区吗我们一起来算一下,还记得前面数据结构那个表吗C盘后面不就是D盘的EBR吗D盘EBR的第一个扇区=MBR+C盘的大小,也就是 63+1435329=1435392。

我们来看看对不对,单击工具栏上的"转到扇区"按钮,出现一个"转到扇区"对话框

然后输入1435392,再点"确定",就到了1435392扇区了(你可以使用它再转回到0扇区)

这个就是D盘的EBR,也就是D盘的分区表了,怎么知道的呢因为MBR和EBR的结构是完全一样的,都是占用了63个扇区,但只用了第一个扇区,其余62个扇区填零不用。第一个扇区前446个字节都为引导代码,后64个字节为分区表,最后2个字节为55AA结束标志。因为EBR不是活动分区,不需要引导代码,所以前446个字节为零。

还有另一种方法直接找到D盘的EBR,扇区

这样,分区表中的第一个分区表项共十六个字节分析完毕,下面我们再来看看第二个分区表项(扩展分区)。

第1字节00:表示非活动分区

第5字节05:表示扩展分区

第9、10、11、12字节00 E7 15 00:本分区之前的扇区数(扩展分区前面也就是MBR和C盘,好像我们前面算过这个数)同样,先将它反过来,就是00 15 E7 00 ,再转为十进制是1435392,看来我们前面真的算过这个数。

第13、14、15、16字节40 09 29 00:本分区的总扇区数。也就是扩展分区的总扇区数。转为十进制应该是2689344。想一想,用这个数加上前面的1435392,不正好是整个硬盘的总扇区数4124736吗

这样,如果分区表被破坏,我们只要把这些数值都计算出来并填上,分区表不就恢复了那么,这里我们为什么不分析第2、3、4字节(本分区的起始磁头号、扇区号、柱面号)和第6、7、8字节(本分区的结束磁头号、扇区号、柱面号)呢这是因为C/H/S(柱面/磁头/扇区)是老式硬盘的寻址方式,这种寻址方式来管理硬盘效率很低;而现在几乎所有的硬盘都支持LBA(全称是Logic Block Address,即扇区的逻辑块地址)寻址方式,这种管理方式简单高效。在LBA方式下,系统把所有的物理扇区都统一编号,按照从零到某个最大值排列,这样只用一个序数就确定了一个唯一的物理扇区。

那么,你可能要问了:如果要恢复分区表,这个起始磁头号、扇区号、柱面号还有结束磁头号、扇区号、柱面号应该怎么填呢简单得很,在后面恢复分区表的时候我会告诉你,直接填,都不用计算。

其实,通常情况下EBR是不会被破坏的,或者破坏的几率极低极低,通常情况下,都是只有MBR被破坏,那么这种情况下,我们只要把MBR的分区表64个字节复原,其他的分区顺着分区表所提供的链自然而然就出来了。那么,如何才能将分区表复原呢这就要通过计算结合Winhex强大的功能来实现了。

下面我们就来模仿分区表被病毒破坏的情况,将MBR全部填零。我们首先将MBR所在的扇区选中。鼠标指向第一个字节,单击右键,选择"选块开始"

然后鼠标指向MBR的最后一个字节,单击右键,选择"选块结尾"

然后我们在选区内部单击鼠标右键,选择"编辑"

这样就有出来一个菜单

然后我们选"填充选块",这样就出来一个填充选块对话框

在"用十六进制填充"的输入框中输入"00",再点"确定"

这样MBR所在扇区全部被我们填充为"00"

如果想取消选区,那就用鼠标拖动随便选中一块区域,那么原来的选区就会取消。注意,如果扇区数据被修改了而没有存盘就会变为别的颜色。

修改了扇区,这时候还没有存盘生效,如果你想存盘生效的话,就选择"文件"菜单"保存扇区"命令。

这时候就会出现一个提示,如果你不想存盘了就点取消,如果想存盘,就点确定,再点是。

好,这样就存盘了,扇区被修改的数据又变为黑色。

这样我们就把分区表给删除了,这时候必须重新启动才能生效,如果你打开我的电脑,会发现三个分区(F 、G、 H)还在那里,并且里面的数据还能正常使用。

现在,我们关闭所有程序将电脑重新启动……

经过不长时间的等待,电脑启动起来了,我们打开我的电脑看看,发现F 、G 、H三个分区不见了。

再打开Winhex发现MBR全部为零了,下面我们就着手开始手工恢复分区表

首先恢复引导代码,这最简单了,只要用Winhex到别的系统盘把引导代码复制过来就行了。我现在的机器上不是挂着两个硬盘吗一个迈拓2G,一个西数40G,西数40G是我的系统盘,那就从这个盘上复制就行了。

单击"磁盘编辑器"按钮

出现"编辑磁盘"对话框

选择"HD0WDC WD400EB---00CPF0",点"确定"

这样我们就把系统盘的分区表给打开了,注意,现在我们是打开了两个窗口,当前的窗口是"硬盘0",在标题栏上有显示。另外,打开窗口菜单也能看出来,当前窗口被打上一个勾,如果想切换回原来的窗口,就点击"硬盘1"。

首先选中系统盘的引导代码

然后在选区中单击鼠标右键,选"编辑"

又出来一个菜单,然后我们选"复制选块"--"正常"

然后我们切换回硬盘1窗口,在零扇区的第一个字节处单击鼠标右键,选"编辑"

然后选"剪贴板数据"--"写入……"

出现一个窗口提示,点"确定"

这样,我们就把一个正常系统盘上的引导代码复制过来了。

下面,我们就开始恢复分区表(共64个字节,分为4个分区表项,每个分区表项占用16个字节,一般只使用前两个分区表项),我们首先来恢复第一个分区标项(也就是用来描述C盘的)。

首先,在第1个字节处(0扇区倒数第五行,倒数第二个字节)填上分区引导标志,因为C盘是活动分区,所以填上80。

接着是第2、3、4字节(本分区起始磁头号、扇区号、柱面号),填上:01 01 00。

第5字节是分区类型符,因为原先C盘是Fat32格式,所以填上:0B。那么,如果你不知道C盘是什么格式怎么办呢你会说问问客户呀,那么如果他也不知道呢别着急,后面在说恢复DBR的时候我会教你怎么分辨分区的格式。

第6、7、8字节是本分区的结束磁头号、扇区号、柱面号,这怎么知道呢别着急,现在的磁盘都是按照LBA方式寻址,并不按照C/H/S(及柱面、磁头、扇区)方式寻址,所以这个地方你填些什么一般关系不大,但是我要告诉你有一个通用的填法,那就是:FE FF FF。

第9、10、11、12字节,本分区之前已用了的扇区数,也就是MBR所占用的扇区数,那不是63吗对,但是要将63转为十六进制数,再反过来倒着填写上。还记得怎么用计算器吗将63转为十六进制数是3F,不够四个字节前面加零,也就是00 00 00 3F,再将此数从右向左依次序反过来就是3F 00 00 00。

第13、14、15、16字节是本分区的总扇区数,也就是C盘的大小,这就要通过稍微一点点计算来得到了。因为C盘是从第63个扇区开始,而C盘后面紧接着的是EBR,所以用EBR所在的第一个扇区数减去63就是C盘的大小。那么如何才能找到EBR所在的第一个扇区呢我们前面说过,EBR的结构和MBR是一样的,所以,EBR的结束标志也一定是55AA,那么,只要我们找到这个结束标志,再看看这个扇区是不是EBR不就行了

单击"搜索"--"查找十六进制数值……",然后出来一个对话框

在文本框中输入"55AA",搜索框中选"全部",然后选中"条件",把偏移量设置为"512=510"。

再单击"确定"。

首先找到第一个"55AA",我们看到,个扇区在第63个扇区上,并不是我们要找的EBR,再按F3继续查找

又找到好几个扇区,都不是,那么下面这个扇区是不是

前面我们说过,EBR的结构和MBR的结构是一样的,所以在倒数第五行倒数第二个字节应该是00 01,并且前446个字节应该是0,显然这也不是EBR,继续按F3查找……终于找到了真正的EBR,在1435392扇区。

手工恢复数据恢复成功率比较高,而且比较有趣味和挑战性,能找回许多傻瓜似的软件所找不回来的文件,但是要求工程师一定要有耐性,而且一定要保持清醒,清楚自己正在 *** 作什么, *** 作完了会有什么后果,能不能退回到上一步状态。特别是对一些破坏性 *** 作,一定要考虑周到,只要条件允许,就一定要在 *** 作之前进行备份,否则会造成"血"的教训,切记!

以上就是关于java里如何正确计算检验和全部的内容,包括:java里如何正确计算检验和、hex用什么软件编程、如何打开hex文件/从单片机里读程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10123046.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存