硬盘加密--解析二 (转)

本文介绍了一种基于硬盘主引导记录(MBR)的简单硬盘加密方案。该方案将硬盘分为两个分区,通过锁定次要分区(D盘)来保护重要数据的安全。在主分区(C盘)损坏时,可以通过解锁D盘恢复数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

硬盘加密--解析二 (转)[@more@]

在对硬盘主引导记录熟悉之后,就可以编出很多种硬盘加密程序(完全取决于你自已的需要),随着硬盘容量越来越大,其实我们可以将硬盘分为两个盘,一个是C盘,一个是D盘,平时将C盘重要的文件拷贝至D盘,并将D盘加锁,这样当C盘受到破坏时,就可以解锁D盘,将D盘上存储的文件恢复过来,我下面的程序就是以这一原理来编写的,请看代码:
Announcement:You can use any editor to edit source codes,such as Notepad,QE,Edit and so on.
Source Codes:
  data segment
  FQB db 512 dup(0);To define a buffer,which will be used to store harddisk's MBR
  MESSAGE1 DB 0DH,0AH,"C------------LOCK C"
  DB 0DH,0AH,"D------------LOCK D"
  DB 0DH,0AH,"E------------Exit"
  DB 0DH,0AH,"Enter your selection!$"
  MESSAGE2 DB 0DH,0AH,"OK!$"
  MESSAGE3 DB "NOT FOUND DRIVE D!$"
  ERROR  DB "ENTER ERROR!$"
  IOERROR  DB "HARDDISK I/O ERROR!$"
  CXD  DW 0
  data ends
  stack segment
  DB 512 dup(0)
  stack ends
  code segment
  assume cs:code,ds:data,ss:stack
  START:
  mov AX,0201
  mov BX,OFFSET FQB
  mov CX,0001
  mov CXD,CX
  mov DX,0080
  INT 13;Read Main Boot Record,which is in 0 Header,0 Cylinder,1 Sector
  JB ERR
  MOV DX,OFFSET MESS1
  MOV AH,9
  INT 21
  AA0: ;Accept user's enter
  MOV AH,1
  INT 21 
  CMP AL,'E';Exit
  JZ EXIT
  CMP AL,'e';Exit
  JZ EXIT
  CMP AL,'C';Lock Drive C
  JZ LockC
  CMP AL,'c';Lock Drive C
  JZ LockC
  CMP AL,'D'
  JZ LockD;//Lock Drive D
  CMP AL,'d'
  JZ LockD;//Lock Drive D
  LEA DX,ERROR;Enter Error
  MOV AH,9
  INT 21
  JMP EXIT
  LockC:
  MOV AH,55H
  CLD
  MOV SI,OFFSET FQB
  MOV DI,SI
  MOV CX,01FE
  AA1:
  LOADSB
  XOR AL,AH
  ROL AH,1
  STOSB;//Encrypt Partition-Table
  Loop AA1
  AA3:
  MOV AX,0301
  MOV BX,OFFSET BUF
  MOV CX,CXD
  MOV DX,0080
  INT 13
  JB ERR
  LEA DX,MESSAGE2
  MOV AH,9
  INT 21
  MOV AX,0040;Reset
  MOV DS,AX
  MOV AX,1234
  MOV SI,0072
  MOV [SI],AX
  JMP FFFF:0000
  INT 20
  LockD:
  CMP BYTE PTR [BUF+1D0],0
  JNZ AA2
  MOV DX,MESSAGE3;No Drive D
  MOV AH,9
  INT 21
  JMP EXIT
  AA2:
  MOV AX,0201
  MOV BX,OFFSET BUF
  MOV CX,word PTR [BUF+1D0];Read Logic Drive D Partition-Table
  MOV DX,0080
  INT 13
  JB ERR
  JMP LockC
  ERR:
  MOV DX,OFFSET IOERROR
  MOV AH,9
  INT 21
  EXIT:
  MOV AH,4CH
  INT 21

code ends
end start

上面的程序适合于只有两个分区的硬盘,不过程序也可以改进成多个分区的硬盘。在注释RESET处是热启动的代码,即交1234送至偏移地址0040:0072处,然后再跳转到FFFF:0处,即可以进行热启动。


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10752043/viewspace-992487/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/10752043/viewspace-992487/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值