数据恢复中经常会遇到linux或是Unix,如果无法把存储链接到windows的话,就没有办法使用像winhex这样的16进制磁盘编辑软件,也就更谈不上分析存储结构!
在这种情况下可以使用dd、dd_rescue、od或是Vim来简单的读取访问存储上面的数据,如果问题比较简单容易处理,也可以直接对其进行修改!
下面详细说一下这几个工具的使用:
1) dd
dd 的主要选项:
if=file 源文件名,缺省为标准输入
of=file 目标文件名,缺省为标准输出
ibs=x 每次读取的个字节大小 (即输入的块大小为x字节)
obs=y 每次写入的个字节大小 (即写入的块大小为y字节)
bs=z 同时设置读写块的大小,同 ibs=obs=z
cbs=c 每次转换c个字节
skip=s 略过输入文件前s个字节,即从第s 1个字节开始拷贝
seek=s 略过输入文件前s个块.(当输出文件是磁盘或磁带)
count=b 需要复制的块数(ibs指定的大小)
conv=c [,conversion...] 用指定的参数转换文件
比较重要的参数:noerror 出错时不停止
notrunc 不截短输出文件
sync 把每个输入块填充ibs个字节,不足部分用空字符补齐
例子:
dd if=/dev/sda of=/dev/sdb bs=32M 将sda备份到sdb
dd if=/dev/fd0 of=~/soft.img bs=1440k 制作软盘镜像
dd if=/dev/sda of=~/mbr.img bs=512 count=1 读取sda的mbr
dd if=/dev/sda of=~/sda.img bs=4096 conv=noerror,sync
noerror 参数说明在碰到读写错误(可能是坏道引起的)时继续向下操作,而不是停止退出.sync 参数说明对于从源设备无法正常读取的块,就使用NULL填充.
2) dd_rescue
dd_rescue [options] infile outfile
选项: -s ipos 输入文件的开始位置(default=0)
-S opos 输出文件的开始位置 (def=ipos)
-b softbs 拷贝时的块大小 (def=65536)
-B hardbs 当出现错误时,拷贝操作的块大小 (def=512)
-e maxerr 当出现maxerr个错误时退出 (def=0=infinite)
-m maxxfer 交换最大的数据量 (def=0=inf)
-y syncfrq 调用输出文件的频率,即每读取n个块后写入 (def=512*softbs)
-l logfile 错误记录文件 (def="")
-o bbfile 记录坏块的文件 (def="")
-r 反向复制 (def=forward)
-t 截断输出文件 (def=no)
-d/D 使用 O_DIRECT 进行读写(def=no)
-w 出现写错误时中止 (def=no)
-a 写稀疏文件 (def=no)
-A 当出现错误时总是使用0填充 (def=no)
-i interactive: 在数据覆盖时询问 (def=no)
-f force: 跳过一些正常的检查 (def=no)
-p preserve: 保留属性 (def=no)
-q 静默方式操作
-v 显示详细信息
注意: 块大小的单位为 b(=512) 或 k(=1024) 或 M(=1024^2) 或 G(1024^3) bytes.
相比dd,dd_rescue 优点在于在碰到错误时,可以以更小的数据块重新读取这段数据,从而确保能够读出尽量多的数据,此外,据说相同环境下速度会比dd略快.
3) od
以十进制、八进制、十六进制和ASCII码来显示文件.
od [选项] 文件…
选项:
- A 指定地址基数,包括:
d 十进制
o 八进制(系统默认值)
x 十六进制
n 不打印位移值
- t 指定数据的显示格式,包括:
c ASCII字符或反斜杠序列
d 有符号十进制数
f 浮点数
o 八进制(系统默认值为02)
u 无符号十进制数
x 十六进制数
注意:除选项c外 |