新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   XML论坛     W3CHINA.ORG讨论区     >>计算机科学论坛<<     SOAChina论坛     Blog     开放翻译计划     新浪微博  
 
  • 首页
  • 登录
  • 注册
  • 软件下载
  • 资料下载
  • 核心成员
  • 帮助
  •   Add to Google

    >> 讨论密码学、密码协议、入侵检测、访问控制等与安全理论研究有关的主题
    [返回] 计算机科学论坛计算机理论与工程『 安全理论 』 → 硬盘加密初探 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 13364 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: 硬盘加密初探 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     卷积内核 帅哥哟,离线,有人找我吗?
      
      
      威望:8
      头衔:总统
      等级:博士二年级(版主)
      文章:3942
      积分:27590
      门派:XML.ORG.CN
      注册:2004/7/21

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给卷积内核发送一个短消息 把卷积内核加入好友 查看卷积内核的个人资料 搜索卷积内核在『 安全理论 』的所有贴子 访问卷积内核的主页 引用回复这个贴子 回复这个贴子 查看卷积内核的博客楼主
    发贴心情 硬盘加密初探

    //以下程序适用平台为WIN98/WINME,WIN2000或者更高版本不支持对硬盘直接读写操作。
         我们都有知道硬盘的分区表位于0柱0面1扇区,在偏移地址1BE至1FD处就是硬盘的分区表内容,通常我们看硬盘分区表,只需用DEBUG即可,即是说:
    C:\>DEBUG
    -A100
    MOV AX,0201
    MOV BX,0200
    MOV CX,0001
    MOV DX,0080
    INT 13
    INT 20
    -G=100
    -D3BE 3FF
    //SAVE PARTITION DATA INTO FILE AKING.DAT
    -N AKING.DAT
    -RCX
    :200
    -W200
    执行完上述指令,我们将会看到66个字节,其中最后两个字节必定为55AA,这是硬盘的主引导标志(也称自举标志),如果这两个字节不为55AA,那么你的硬盘将不能启动,因为电脑识别不了硬盘。而且在偏移地址1BE处一定是80H,否则在启动时会提示操作系统丢失。除去硬盘的自举标志,总共剩下达64个字节,每个硬盘占用16个字节,主机上的IDE口或EIDE口总共可以挂4个硬盘(外挂的不算),通常为安全起见我们可以将硬盘这重要的66个字节信息或多或少512个字节信息保存到一个文件中。每一个硬盘分区表的16个字节都有其对应的含义:
    第一个字节:如果是引导分区,就是80H,如果不是,就是00H
    第二个字节到第四个字节:是该分区的起始扇区号
    第五个字节:标志字节,比如05表示扩展分区
    第六个字节到第八个字节:该分区的终止扇区号
    第九个字节到第十二个字节:该分区使用的扇区数
    第十三个字到第十六个字节:该分区总共使用的扇区数
         在了解完上述架构后,写出简单的加密程序就很简单了,比如说我对硬盘的自举标志55AA作一个异或XOR运算,第一次执行程序时硬盘被锁起,第二次执行时硬盘又被解锁,第三次执行时硬盘又被锁起。。。。除了对自举标志之外,我还可以对其它重要标志作异或运算,比如说对引导分区的标志字节80作异或运算,比如说隐藏某个扩展分等都可以实现。下面我用DEBUG写出汇编程序,在这里我以加锁/解锁自举标志来写程序。以上我已经声明如果你要使用我的这个程序请注意先做一张启动盘,将硬盘分区表先以一个文件的形式保存到FLOPPY DISK中,以防万一,请看程序:
    C:\>DEBUG
    -A100
    MOV AX,0201
    MOV BX,0200
    MOV CX,0001
    MOV DX,0080
    INT 13
    JB ERROR
    MOV SI,03FE
    MOV BP,AA55
    XOR [SI],BP
    MOV AX,0301
    MOV BX,0200
    MOV CX,0001
    MOV DX,0080
    INT 13
    JB ERROR
    CMP [SI],BP
    JNZ LOCK
    MOV DX,0150
    MOV AH,9
    INT 21
    JMP END
    LOCK:
      MOV DX,0165
      MOV AH,9
      INT 21
      JMP END
    ERROR:
      MOV DX,0180
      MOV AH,9
      INT 21
    END:
      MOV AH,4CH
      INT 21H
    -N AKING.COM
    -RCX
    :200
    -W100
    -Q

    至此,我们已将上述代码存成文件AKING.COM。你可以将AKING.COM这个文件COPY到软盘,从软盘启动计算机,第一次执行AKING.COM硬盘被锁住,再一次执行硬盘解锁。

    以前读书时就对汇编以及如何用汇编对硬盘编程就很感兴趣,前两天偶然听到朋友问如何对硬盘加密,我想这是一种较为简单的方法,而且NT和2000以及XP均不去支持对硬盘的直接读写操作,在这种情况下,如果要对硬盘某一扇区进行读写操作,就需要用API来进行编程,如CreateFile,ReadFile,WriteFile等API函数。
    再有一点我要声明的是:上面的代码是随手写出来的,其中LOCK,ERROR,END这三处在实际应用中应该换成偏移地址,这里为了叙述方便用LABEL。


       收藏   分享  
    顶(0)
      




    ----------------------------------------------
    事业是国家的,荣誉是单位的,成绩是领导的,工资是老婆的,财产是孩子的,错误是自己的。

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/8/28 14:05:00
     
     卷积内核 帅哥哟,离线,有人找我吗?
      
      
      威望:8
      头衔:总统
      等级:博士二年级(版主)
      文章:3942
      积分:27590
      门派:XML.ORG.CN
      注册:2004/7/21

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给卷积内核发送一个短消息 把卷积内核加入好友 查看卷积内核的个人资料 搜索卷积内核在『 安全理论 』的所有贴子 访问卷积内核的主页 引用回复这个贴子 回复这个贴子 查看卷积内核的博客2
    发贴心情 
    在对硬盘主引导记录熟悉之后,就可以编出很多种硬盘加密程序(完全取决于你自已的需要),随着硬盘容量越来越大,其实我们可以将硬盘分为两个盘,一个是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处,即可以进行热启动。

    ----------------------------------------------
    事业是国家的,荣誉是单位的,成绩是领导的,工资是老婆的,财产是孩子的,错误是自己的。

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/8/28 14:07:00
     
     卷积内核 帅哥哟,离线,有人找我吗?
      
      
      威望:8
      头衔:总统
      等级:博士二年级(版主)
      文章:3942
      积分:27590
      门派:XML.ORG.CN
      注册:2004/7/21

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给卷积内核发送一个短消息 把卷积内核加入好友 查看卷积内核的个人资料 搜索卷积内核在『 安全理论 』的所有贴子 访问卷积内核的主页 引用回复这个贴子 回复这个贴子 查看卷积内核的博客3
    发贴心情 
    上一篇文章解析了硬盘上有两个分区的加密过程,下面的程序将允许有N个分区的加密过程:
    Source Codes:

    data segment
      FQB DB 512 dup(0);a buffer that will be used to store partition-table
      FIRSTP DB 40 dup(0);storing the first partition information
      SECONDP DB 00,01,00,00
              DB 512 dup(0)
      INFO1 DB "My Computer has the following drives:!$"
      INFO2 DB 0DH,0AH,"Please enter the drive needed to be locked!$"
      INFO3 DB 0DH,0AH,"Invalid Enter!$"
      ERROR DB 0DH,0AH,"Harddisk I/O error!$"
    data ends
    code segment
       assume cs:code,ds:data
       START:
          MOV AX,1000H
          MOV DS,AX
          MOV SI,OFFSET SECONDP;
          MOV DI,OFFSET FIRSTP;
          SUB DI,4
       READP:
          MOV AX,0201
          MOV BX,OFFSET FQB
          MOV CX,WORD PTR [SI+1]
          MOV DX,0080
          INT 13
          JB ERROR
          ADD SI,4
          ADD DI,4
          ;The first partition
          ADD BX,1BE
          MOV AX,WORD PTR [BX+1]
          MOV [DI],AX
          MOV AX,WORD PTR [BX+3]
          MOV [DI+2],AX
          ;The second partition
          ADD BX,10H
          MOV AX,WORD PTR [BX+1]
          MOV [SI],AX
          MOV AX,WORD PTR [BX+3]
          MOV [SI+2],AX
          CMP WORD PTR [SI+1],0;Determine whether the header,sector is 0 or not
          JNZ READP
          LEA DX,INFO1
          MOV AH,9
          INT 21H
          MOV DL,43H
          MOV DI,OFFSET FIRSTP
       DISP:
          CMP WORD PTR [DI+1],0
          JZ ENCRYPT
          MOV AH,02
          INT 21H
          MOV CL,DL
          CMP BYTE PTR [DI+3],0
          JNZ NLOCK
          JMP ENCRYPT
       NLOCK:
          MOV DL,','
          INT 21
          MOV DL,CL
          INC DL
          ADD DI,4
          JMP DISP
       ENCRYPT:
          MOV AH,9
          LEA DX,INFO2
          INT 21
          MOV AH,1
          INT 21
          CMP AL,'A'
          JB ERROR1
          CMP AL,'Z'
          JA ERROR1
          SUB AL,43H
          XOR AH,AH;AH=0
          SHL AX,1
          SHL AX,1
          MOV SI,OFFSET SECONDP
          ADD SI,AX
          MOV AX,0201
          MOV BX,OFFSET FQB
          MOV CX,[SI+1];Sector,Cylinder
          MOV DH,[SI];Header
          MOV DL,80H;The first harddisk:80,the second:81
          INT 13
          JB ERROR
          ADD BX,1C1H
          MOV AX,[BX]
          XCHG [BX-20],AX
          MOV [BX],AX
          MOV AX,0301
          MOV BX,OFFSET FQB
          MOV CX,[SI+1]
          MOV DH,[SI]
          MOV DL,80H
          INT 13
          JB ERROR
          MOV AX,0040
          MOV DS,AX
          MOV SI,0072
          MOV AX,1234
          MOV [SI],AX
          JMP FFFF:0
          INT 20H
       ERROR1:
          LEA DX,INFO3
          MOV AH,9
          INT 21H
          JMP EXIT
       ERROR:
          LEA DX,INFO2
          MOV AH,9
          INT 21
       EXIT:
          MOV AH,4CH
          INT 21H
      code ends

      end start

    ----------------------------------------------
    事业是国家的,荣誉是单位的,成绩是领导的,工资是老婆的,财产是孩子的,错误是自己的。

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/8/28 14:11:00
     
     Fck 帅哥哟,离线,有人找我吗?双鱼座1989-3-12
      
      
      等级:大一(猛啃高等数学)
      文章:15
      积分:114
      门派:XML.ORG.CN
      注册:2006/8/31

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给Fck发送一个短消息 把Fck加入好友 查看Fck的个人资料 搜索Fck在『 安全理论 』的所有贴子 引用回复这个贴子 回复这个贴子 查看Fck的博客4
    发贴心情 
    好深的程序.我菜鸟5555
    能做我师傅吗.

    ----------------------------------------------
    QQ148382415 菜鸟一个 寻找一个师傅

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/8/31 23:22:00
     
     feifei805 美女呀,离线,快来找我吧!
      
      
      等级:大一新生
      文章:4
      积分:89
      门派:XML.ORG.CN
      注册:2006/9/13

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给feifei805发送一个短消息 把feifei805加入好友 查看feifei805的个人资料 搜索feifei805在『 安全理论 』的所有贴子 引用回复这个贴子 回复这个贴子 查看feifei805的博客5
    发贴心情 
    好高深啊
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/9/13 10:10:00
     
     longshentailang 帅哥哟,离线,有人找我吗?
      
      
      威望:1
      等级:计算机学士学位
      文章:325
      积分:2990
      门派:XML.ORG.CN
      注册:2006/6/20

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给longshentailang发送一个短消息 把longshentailang加入好友 查看longshentailang的个人资料 搜索longshentailang在『 安全理论 』的所有贴子 引用回复这个贴子 回复这个贴子 查看longshentailang的博客6
    发贴心情 
    学习,对汇编还是要求很熟悉的!
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/9/20 20:08:00
     
     q282466667 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:0
      积分:54
      门派:XML.ORG.CN
      注册:2006/10/21

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给q282466667发送一个短消息 把q282466667加入好友 查看q282466667的个人资料 搜索q282466667在『 安全理论 』的所有贴子 引用回复这个贴子 回复这个贴子 查看q282466667的博客7
    发贴心情 
    我是个刚走进计算机的小菜鸟  , 想找个计算机群和大家讨论问题,请大哥哥大姐姐有群的MM一下偶让偶加加 。。。。。。。。。。偶QQ282466667
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/10/21 10:51:00
     
     GoogleAdSense
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 安全理论 』的所有贴子 访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2024/4/27 11:32:57

    本主题贴数7,分页: [1]

    管理选项修改tag | 锁定 | 解锁 | 提升 | 删除 | 移动 | 固顶 | 总固顶 | 奖励 | 惩罚 | 发布公告
    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) 旗 下 站 点
    苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    125.000ms