安装依赖包
根据说明,依赖包包括,
编译器, gcc 或 clang
cmake (至少 2.6 版本)
make
FUSE 头文件
PolarSSL/mbedTLS 头文件
可选:ruby 头文件
其中 gcc cmake make 一般系统中默认都安装了,不过再试试也没什么,
sudo zypper in gcc cmake make
然后是 FUSE 包,
sudo zypper in fuse-devel
最后是提供加密服务的 PolarSSL/mbedTLS。mbedTLS https://tls.mbed.org/就是改名后的 PolarSSL。它们是一个东西。没有 mbedTLS 就安装 PolarSSL 试试看。在 openSUSE 安装源里的是 mbedTLS。直接安装,
sudo zypper in mbedTLS-devel
至于 Ruby 属于可选内容。如果安装时关联 Ruby,则安装后可以提供一个 dislocker-find 模块(一个 Ruby 脚本)用于在所有连接的硬盘中尝试寻找使用 BitLocker 加密的分区。所以如果不需要这个功能的话就不用安装 Ruby。如果要安装的话,
sudo zypper in ruby-devel /usr/bin/ruby
需要 /usr/bin/ruby 是因为在 RHEL 7 中的是 rubypick 而在 RHEL 6 或 5 中是 ruby。
安装 DISLOCKER 稳定版
下载 dislocker。开发版本可以从 GitHub 下载,稳定版本(目前是 0.5.2)可以从 HSC 下载。这里选用的是稳定版本。
wget http://www.hsc.fr/ressources/outils/dislocker/download/dislocker-0.5.2.tar.gz -O ~/tmp/dislocker.tar.gz
这里 wget 使用 -O 指定保存的目标文件夹和文件名。如果只是想指定保存文件夹而不想改变文件名,则应该使用 -P 选项(-P ~/tmp)。
然后解压,同样指定目标文件夹(-C 选项),并使用 --strip-components=1 来忽略掉压缩包里自带的文件夹(这是个带版本参数的文件夹),
tar -xf ~/tmp/dislocker.tar.gz -C ~/tmp/dislocker --strip-components=1
然后就可以直接安装了,
cd ~/tmp/dislocker
cmake .
make
sudo make install
自动安装脚本
!#/bin/bash
sudo zypper in gcc cmake make fuse-devel mbedTLS-devel
# sudo zypper in gcc cmake make fuse-devel mbedTLS-devel ruby-devel /usr/bin/ruby
mkdir -p tmp/dislocker
wget http://www.hsc.fr/ressources/outils/dislocker/download/dislocker-0.5.2.tar.gz -O tmp/dislocker.tar.gz
tar -xf tmp/dislocker.tar.gz -C tmp/dislocker --strip-components=1
cd tmp/dislocker
cmake .
make
sudo make install
挂载 BitLocker 加密的磁盘分区
插上带有 BitLocker 加密分区的磁盘,使用 fdisk 查看磁盘及分区信息。一般可以根据自己熟悉的该分区的容量区分出来。当然也可以用 dislocker-find 如果安装的时候使用了 Ruby 的话。
这里假设没有 dislocker-find,电脑只有一个硬盘,现在外接一个带两个分区的移动硬盘,其中一个容量为 500GB 的分区是 BitLocker 加密的。磁盘设备在 openSUSE 里使用 /dev/sdX(X 为 a-z 的小写字母)标识。所以本机内置磁盘为 /dev/sda,而外接移动硬盘为 /dev/sdb。
sudo fdisk -l
Disk /dev/sdb: 931.5 GiB, 1000170586112 bytes, 1953458176 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xd2840axx
Device Boot Start End Sectors Size Id Type
/dev/sdb1 2048 1048586239 1048584192 500G 7 HPFS/NTFS/exFAT
/dev/sdb2 1048586240 1953454079 904867840 431.5G 7 HPFS/NTFS/exFAT
根据大小可以判断为 /dev/sdb1,即 /dev/sdb 的第一个分区。。
创建一个空文件夹来放置 dislocker 解密挂载点,以免使用现有文件夹时 disklocker 会提示目标文件夹不为空的警告。
mkdir /dislocker
先用 disklocker 解密该分区,并选用 /dislocker 为解密挂载点,
sudo dislocker -u -V /dev/sdb1 -- /disklocker
按提示直接输入解密用的用户密码(user password)即可,不是 root 密码。其中 -u 表示使用用户设置的用户密码来解密。也可以用 -p 表示使用恢复密码(recovery password)解密。而 -V 指定要解密的分区的路径。-- /dislocker 表示将解密对象传递给 FUSE 并使用 /dislocker 文件夹作为解密文件挂载点。解密后对象访问的路径为 /dislocker/dislocker-file。
然后使用系统的 mount 指令挂载解密后的文件,假设预先创建的挂载点为 /myencryptdisk。
sudo mkdir /myencryptdisk
sudo mount -o loop,rw /zdislocker/dislocker-file /myencryptdisk
这样就将该磁盘分区挂载为可读写的文件夹 /myencryptdisk 了。
可能是因为 openSUSE 的文件浏览器 Dolphin 的关系,也可能是因为这东西本来就是这么运作的,该分区挂载后在 Dolphin 左边栏显示为 Loop Device,而不是挂载点的名称 myencryptdisk,也不是该分区的卷标。不过 Dolphin 地址栏的路径是正确地显示为 /myencryptdisk 的。