分类: LINUX
2015-09-27 00:54:22
近日,研究了下在Debian7下打开包含bitlocker加密的VHD虚拟磁盘的方法,好像中文介绍不多,遂记录备查,也供有类似需要人参考。
主要涉及的工具有
1. fuse工具,及virtualbox-fuse(需要里面的vdfuse工具)
2. gcc,make(因为dislocker安装需要编译)安装,libfuse-dev(编译后面的工具需要)
3. dislocker工具
具体过程,先安装相应的预编译工具和库
-
aptitude install fuse virtualbox-fuse gcc make libfuse-dev
从
点击(此处)折叠或打开
-
wget http://www.hsc.fr/ressources/outils/dislocker/download/dislocker.tar.gz
解压源码包并编译安装
-
tar zxvf dislocker.tar.gz
-
cd dislocker/src
-
make && make install
至此,应用环境已经处理好,可以进行挂载操作了。
因为VHD的内容是加密的,所以其实需要3次挂载才能达到使用状态,第一次是利用virtualbox-fuse获得的vdfuse挂载VHD文件
-
vdfuse -t VHD -f <VHDPATH> -w <VHDMOUNTPOINT>
其中的选项参数 -t 指定了映像文件类型是vhd,不指定则为auto,但识别率较低,-f 后面的
<VHDPATH> 就是vhd文件的路径,-w 选项表示是可写挂载,后面的
<VHDMOUNTPOINT> 就是挂载点的位置了。成功后在
<VHDMOUNTPOINT>目录下会有多个块文件,其中EntireDisk是入口点, Partition1是第一个分区的入口点。
然后是分区解密挂载,加密分区了,要用到dislocker工具(以挂载第一个分区为例)
-
dislocker -v -V <VHDMOUNTPOINT>/Partition1 -u"<PASSWD>" -- <DISLOCKERPOINT>
其中选项参数的意思是 -v 显示冗长的提示, -V 获取卷信息,
<VHDMOUNTPOINT>/Partition1 就是指定要挂载的设备,
-u"<PASSWD>" 指定采用密码方式解密,密码是
<PASSWD>,
-- 表示选项结束,后面就是挂载点
<DISLOCKERPOINT>。 挂载成功后,在
<DISLOCKERPOINT>目录下有dislocker-file这样一个块文件。
最后就是一般的挂载了,需要用常规挂载工具mount,注意挂载参数
-
mount -o loop <DISLOCKERPOINT>/dislocker-file <MOUNTPIONT>
其中
<MOUNTPIONT>就是最终挂载后的访问点,整个过程挂载后是可读写的挂载。
至此整个过程完成,可以正常读写了。
注意:整个过程中所有的<VHDMOUNTPOINT>、<DISLOCKERPOINT>、<MOUNTPIONT>都必须是已存在的目录,在我给出的操作中这些部分需要根据你实际情况替换。<PASSWD>同样需要根据情况替换。另操作需要root权限。
卸载都是用umount,以前面的逆序完成。
为了方便,结合情况(一般的VHD中都只有一个分区),且同时挂载多个VHD文件的需求不是特别大,所以可以自定义一个脚本来一次完成,我简单写了一个脚最简单本
文件mountLokerVhd.sh
内容见下:
-
#!/bin/bash
# mountLokerVhd.sh
#挂载VHD文件到指定位置,如果未指定,则只能挂载一个文件,需要挂载其他文件时需要先卸载
-
#VHD中文件支持bitlocker加密
-
-
VHDPATH="$1"
-
PASSWD="$2"
-
# 确定各个挂载点可用
-
mkdir -p /mnt/vhd-disk /mnt/image /mnt/partition1
-
# 确定各个挂载点属性(方便读写)操作
-
chmod 777 /mnt/vhd-disk /mnt/image /mnt/partition1
-
-
vdfuse -t VHD -f "${VHDPATH}" -w /mnt/vhd-disk/ \
-
&& dislocker -v -V /mnt/vhd-disk/Partition1 -u"${PASSWD}" -- /mnt/image/ \
-
&& mount -o loop /mnt/image/dislocker-file /mnt/partition1/
调用方法就是:
-
mountLokerVhd.sh <vhdpath> <passwd>
其中
<vhdpath>是vhd文件路径, <passwd>是解密密码。
卸载的最简单脚本umountVhd.sh:
-
#!/bin/bash
-
# umountVhd.sh
-
# 卸载挂载的vhd文件
-
-
umount /mnt/partition1/ && sleep 2 && umount /mnt/image/ && sleep 2 && umount /mnt/vhd-disk/
调用方法是:
其他Linux发行版及类Unix发行版,只要能安装上同样的工具,操作应该是共通的。
阅读(3397) | 评论(0) | 转发(0) |