[分享] 数据恢复深度技术:单片机硬盘扇区读写工具

[复制链接]
  • TA的每日心情
    开心
    2014-4-2 21:30
  • 签到天数: 3 天

    [LV.2]九品芝麻官

    534

    主题

    400

    回帖

    7742

    积分

    Intohard Team

    Rank: 7Rank: 7Rank: 7

    积分
    7742
    发表于 2014-3-27 14:58:19 | 显示全部楼层 |阅读模式
      在数据恢复实际工作中,当计算机不认硬盘,或者硬盘的坏道较多,计算机无法做镜像时,需要用额外的设备工具来读取硬盘数据,或者维修硬盘的固件使硬盘复活。这种比较专业的操作,数据恢复工程师一般使用PC3000这类的专业工具来做,但是这些工具价格上都比较贵,对偶尔遇到硬盘物理故障需要修复硬盘恢复数据的用户来说,成本偏高。有没有既便宜又好用的方法呢?其实只要掌握一些单片机编程和基础的电子线路知识,是完全可以自己DIY一个读写硬盘数据的小工具的,如果结合一些硬盘维修指令的知识,这个小工具也能修修硬盘。
      单片机由于其成本低廉,性能可靠,在工业控制领域广泛运用,而且现在的单片机开发环境也比较简单易用,用C语言就可以编程。因此采用单片机来读写硬盘,是个不错的选择,唯一的缺点就是速度太慢,这个算是代价吧。
      常用的单片机一般都是8位机,例如8051系列、PIC系列、AVR系列等,低速的DSP也可以看做是16位的单片机,一些32位的ARM片子,如果不上操作系统,也可当做单片机用,就是资源比较丰富而已。我们这里先采用8位的AVR单片机来做这个小工具。基本的思路就是用AVR的Mega16单片机的IO口,读写硬盘的IO口、控制线和地址线。但是Mega16的每个IO口是8位,硬盘的数据线是16位,需要做IO的扩展,将8位数据线扩展成16位数据线,来读写硬盘。
      IO扩展可以用CPLD或者像8255之类的扩展芯片,用CPLD比较灵活,但是涉及到硬件描述语言HDL的编程和下载调试,比较复杂。采用8255比较简单,只需要在单片机端编程控制就可以了,但是8255有个缺点,就是在工作模式切换时,IO管脚会全部拉低,此时,接到硬盘复位管脚上的信号也被拉低,引起硬盘的意外复位。因此需要采用一个倒相器,将8255输出的硬盘控制信号反相,这样当8255输出口全部拉低时,硬盘复位信号经倒相器后处于拉高状态,就不会引起硬盘的意外复位了。8255的具体使用和倒相器的连接见下图所示:
    HD001.jpg
      图1 8255使用说明
      我们用8255的A口和B口连接到硬盘的16根数据线上,C口的8根线连接到硬盘的地址线和控制线上,通过以前ATA协议的分析,若采用PIO方式读写硬盘,且不考虑IORDY信号,可以只用5根地址线(CS1、CS0、DA2、DA1、DA0)和三根控制线(IOW、IOR和RESET)来实现PIO模式下的寄存器传输和数据传输。因此,可利用8255的C口来实现。大家要是有人分析过PC3000的PCI版,就会发现,ACE也是这个思路,只是他用的是复杂一些的xilinx FPGA和245芯片实现罢了。再来看一下倒相器的使用:
    HD002.jpg
      图2 倒相器
      采用的是74HC04,将RST信号,IOW和IOR信号,CS1和CS0信号接到反相器,保证了8255模式切换时,不会引起硬盘的误操作。
      在核心的单片机端,使用了PA口的8根IO连接到8255的数据线,PB口的5根IO连接到8255的控制线和地址线。具体看下图:
    HD003.jpg
      图3 Mega16单片机
      除了PA和PB口外,PC口用于连接到JTAG调试端,实现在线调试。PD口用于连接串口输出,用于调试和观察硬盘数据。
      按照原理图绘制电路板,画好的电路板效果图为:
    HD004.jpg
      图4 电路效果图
      板子制作好调通,剩下的工作就是单片机编程了,采用C语言来实现是比较简单的,主要就是硬盘寄存器的读写,比如状态寄存器和命令寄存器等,结合PIO时序要求,编写相应的程序就行了,如果有示波器,可以看一下控制管脚输出信号的时序,对加快软件调试非常有用。后续文章会进一步讲解单片机读写硬盘的编程知识。
      将程序编好调试好后,通过JTAG或ISP接口下载到单片机当中,就完成了单片机读写硬盘小工具的制作,利用这个小工具,可以进一步学习ATA协议和硬盘维修指令,提高数据恢复技能。
  • TA的每日心情
    开心
    2017-12-23 17:04
  • 签到天数: 602 天

    [LV.9]二品侍郎

    18

    主题

    1022

    回帖

    3689

    积分

    [INTOHARD]团长

    Rank: 8Rank: 8

    积分
    3689
    发表于 2014-3-27 18:38:52 | 显示全部楼层
    这东西对数据恢复有什么用呢
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2021-1-27 15:03
  • 签到天数: 1552 天

    [LV.Master]三朝元老

    79

    主题

    2582

    回帖

    1万

    积分

    [INTOHARD]旅长

    Rank: 9Rank: 9Rank: 9

    积分
    16142
    发表于 2014-3-27 18:49:22 | 显示全部楼层
    看着像我转老外的那个电路,可以单头备吧??
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-4-12 06:22
  • 签到天数: 80 天

    [LV.6]五品郎中

    0

    主题

    279

    回帖

    580

    积分

    [INTOHARD]连长

    Rank: 4

    积分
    580
    发表于 2014-3-27 20:03:51 | 显示全部楼层
    这个玩玩可以, 当个兴趣。
    那个老外可是是个高手, HACKER. 我有时到他的BLOG浏览。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2017-12-23 17:04
  • 签到天数: 602 天

    [LV.9]二品侍郎

    18

    主题

    1022

    回帖

    3689

    积分

    [INTOHARD]团长

    Rank: 8Rank: 8

    积分
    3689
    发表于 2014-3-27 20:44:09 | 显示全部楼层
    那个老外的blog地址链接贴出来好吗?想看看
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2022-4-7 09:31
  • 签到天数: 1917 天

    [LV.Master]三朝元老

    2

    主题

    2128

    回帖

    9438

    积分

    [INTOHARD]团长

    Rank: 8Rank: 8

    积分
    9438
    发表于 2014-3-27 22:35:43 | 显示全部楼层
    这个不太现实额。。。。。。。要求很高,一般人弄不了这个
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2017-2-10 11:58
  • 签到天数: 67 天

    [LV.6]五品郎中

    2

    主题

    184

    回帖

    497

    积分

    [INTOHARD]排长

    Rank: 3Rank: 3

    积分
    497
    发表于 2014-3-31 08:38:41 | 显示全部楼层
    楼主好屌,老衲拜服
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-4-13 06:35
  • 签到天数: 68 天

    [LV.6]五品郎中

    0

    主题

    121

    回帖

    648

    积分

    [INTOHARD]连长

    Rank: 4

    积分
    648
    发表于 2014-4-1 04:02:36 | 显示全部楼层
    太高科技 玩不了
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2014-4-14 18:23
  • 签到天数: 1 天

    [LV.1]布衣百姓

    0

    主题

    11

    回帖

    9

    积分

    [INTOHARD]工兵

    Rank: 1

    积分
    9
    发表于 2014-4-14 19:13:28 | 显示全部楼层
    真是太牛了~~
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    快速回复 返回顶部 返回列表