我使用 cryptsetup 加密了磁盘。我希望能够直观地看到加密磁盘之前的已知文本在加密后变成了乱码。
我该如何进行这样的比较?
以下是最佳场景的示例:
在解密的磁盘中,假设我创建了一个文本文件,其中包含单词“测试字符串”。我将能够以某种方式在加密之前可视化“测试字符串”,然后在加密之后,可视化“测试字符串”变成乱码。我想使用相同的方法来可视化“测试字符串”和乱码,以便我可以确定是“测试字符串”变成了乱码。如果这意味着我必须找到十六进制的“测试字符串”,那就这样吧。我只需要能够看到有“测试字符串”,然后就找不到“测试字符串”(而是有其他乱码)。
知道我应该使用什么样的方法来探测磁盘以查找“测试字符串”吗?
答案1
例如,考虑我工作的服务器。硬盘有一个小/boot
分区 ,/dev/sda1
该分区必然未加密,以及一个大的加密分区 ,/dev/sda2
其中托管 LUKS 容器,当通过密码设置输入密码后在启动时自动显示为/dev/mapper/Serverax
。容器中有一个LVM物理卷,其上居住着一个LVM卷组;卷组包含逻辑卷Root
、Home
和Srv
。Swap
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 294M 0 part /boot
└─sda2 8:2 0 19.7G 0 part
└─Serverax 252:0 0 19.7G 0 crypt
├─Serverax-Root 252:1 0 10.7G 0 lvm /
├─Serverax-Swap 252:2 0 1G 0 lvm [SWAP]
├─Serverax-Srv 252:3 0 6G 0 lvm /srv
└─Serverax-Home 252:4 0 2G 0 lvm /home
要查看磁盘上的原始数据,请直接从 读取一些块/dev/sda2
。在示例中,skip=$((2*1024))
跳过 2 MiB LUKS 标头,并进入 LVM 标头:
$ sudo dd if=/dev/sda2 bs=1K count=1 skip=$((2*1024)) 2>/dev/null | hd
00000000 33 b2 f7 1b 03 ce a6 3a 87 b4 03 98 7d a7 b1 cc |3......:....}...|
00000010 1a c9 99 80 01 19 c0 db f0 54 a7 4c 1c 2b 9c ea |.........T.L.+..|
00000020 f3 84 b0 d8 0c 54 c0 fe ec c0 06 a8 8c c0 6b 10 |.....T........k.|
...
00000200 d4 0b 67 3b ba d1 21 06 58 ce 84 b4 3b 3b e0 f2 |..g;..!.X...;;..|
00000210 4d eb 99 d3 15 63 81 f3 92 b7 ff c2 17 95 ed b3 |M....c..........|
00000220 92 51 ab dc 29 84 9b 6f 68 cc a9 fe 35 cd e0 08 |.Q..)..oh...5...|
00000230 1f d1 e0 52 34 46 13 90 38 c4 3d 18 30 1a 1d c8 |...R4F..8.=.0...|
00000240 1c 05 2f 17 0b ad 39 6f 56 9c 28 71 e3 f7 78 10 |../...9oV.(q..x.|
00000250 97 09 cb 49 50 f5 b1 06 a1 8a e0 4d 7a 0e 39 94 |...IP......Mz.9.|
00000260 15 2d 05 b5 94 75 c0 a2 d1 bf 78 3d ba 30 06 61 |.-...u....x=.0.a|
00000270 e6 82 8d 4a 60 90 81 e7 0a 34 5a f8 03 fc a6 89 |...J`....4Z.....|
00000280 12 11 19 b2 2b 44 9b 0a 07 c1 40 d9 4b df bd 54 |[email protected]|
00000290 0a 40 2b 4f 1f 55 f5 e2 fa 10 41 3b f9 58 5a 2f |.@+O.U....A;.XZ/|
...
可以从 读取相同的数据,解密后/dev/mapper/Serverax
;请注意,这次没有skip=
:
$ sudo dd if=/dev/mapper/Serverax bs=1K count=1 2>/dev/null | hd
00000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
00000200 4c 41 42 45 4c 4f 4e 45 01 00 00 00 00 00 00 00 |LABELONE........|
00000210 be af fb 35 20 00 00 00 4c 56 4d 32 20 30 30 31 |...5 ...LVM2 001|
00000220 47 41 70 58 43 62 74 55 65 6b 33 41 6b 53 54 73 |GApXCbtUek3AkSTs|
00000230 4f 6b 6a 49 49 72 6e 53 66 54 41 77 6e 31 53 6e |OkjIIrnSfTAwn1Sn|
00000240 00 00 60 ed 04 00 00 00 00 00 20 00 00 00 00 00 |..`....... .....|
00000250 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000260 00 00 00 00 00 00 00 00 00 10 00 00 00 00 00 00 |................|
00000270 00 f0 1f 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000280 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 |................|
00000290 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
00000400
答案2
要查看加密数据,只需从原始设备读取,在 Linux 上通常是这样/dev/sdX
(对于某些人来说X
)。
我盒子里的一个例子:
grove@mary> ll /dev/mapper/luks_crypto_*
lrwxrwxrwx 1 root root 7 nov 7 08:32 /dev/mapper/luks_crypto_58cf05c2-a296-46ff-80f4-70476ee06ae0 -> ../dm-3
lrwxrwxrwx 1 root root 7 nov 7 08:32 /dev/mapper/luks_crypto_ff052855-76f5-48cd-bf11-e4af60126484 -> ../dm-2
grove@mary> ll /dev/disk/by-uuid/ff052855-76f5-48cd-bf11-e4af60126484
lrwxrwxrwx 1 root root 9 nov 7 08:32 /dev/disk/by-uuid/ff052855-76f5-48cd-bf11-e4af60126484 -> ../../sdg
grove@mary> sudo file -s /dev/dm-2
/dev/dm-2: Linux rev 1.0 ext4 filesystem data, UUID=e33a9842-a597-4311-a37b-10adfca1eabd (needs journal recovery) (extents) (large files) (huge files)
grove@mary> sudo file -s /dev/sdg
/dev/sdg: LUKS encrypted file, ver 1 [aes, cbc-essiv:sha256, sha1] UUID: ff052855-76f5-48cd-bf11-e4af60126484