我试图使用DD for Windows来获取通过Veracrypt加密的非系统分区的散列,但是遇到了一些问题。
用于获取加密分区哈希的命令如下所示
dd if=\\?\Device\HarddiskVolume11 of=hash_output.txt bs=512 count=1这个命令(理论上)应该创建一个名为hash_output.txt的文件,该文件包含加密的散列,例如,看起来类似于以下内容:
(Šö÷…o¢–n[¨hìùlŒ‡¬»J`但是,当发出上面的DD命令时,我得到的输出更像这样:
fb55 d397 2879 2f55 7653 24a3 c250 14d3
3711 7109 e563 617f ab73 f11a 3469 33bb这显然不是我所期望的那样,所以我希望有人能帮我找出我做错了什么。
有些事情要注意:
我100%肯定我在DD命令中选择的驱动器是正确的驱动器。驱动器上只有一个加密分区,该分区跨越驱动器的整个大小。驱动器没有造成此问题的物理/功能损坏。这是在一个外部1tb驱动器,是通过USB3.0连接(我尝试过其他电缆和端口)。相同的DD命令在测试驱动器上运行良好,我使用为该驱动器设置的相同参数对其进行了加密。发布于 2020-03-29 01:33:33
您的dd命令只是将512字节复制到输出文件中。如果您想要哈希,则需要将其导入哈希函数,如:
dd if=\\?\Device\HarddiskVolume11 bs=512 count=1 | md5sum例如,在我的Linux机器上(用普通斜杠代替Windows反斜杠):
dd if=/dev/sdb bs=512 count=1 | md5sum
1+0 records in
1+0 records out
512 bytes copied, 0.00163753 s, 313 kB/s
5b31a7aa24ccde6a44083cb30e33db4d-编辑
我明白了;您正在尝试获取卷头,而不是生成散列。
<#>首先您需要确保以一致的方式查看数据。我不知道您有哪些Windows命令和工具,但我建议您以规范格式显示数据。一种方法是将数据传输到十六进制,例如:
dd if=veracryptcontainer bs=512 count=1 | hexdump -C
1+0 records in
1+0 records out
512 bytes copied, 0.0578936 s, 8.8 kB/s
00000000 21 09 b4 29 58 67 31 ca 22 f3 8f bb c9 65 33 63 |!..)Xg1."....e3c|
00000010 54 de 18 44 2e 95 2e 7b 74 6b cc 4a dd 80 77 8b |T..D...{tk.J..w.|
00000020 e8 c3 fb 5f ec 44 ea 67 1a de 9a 21 2a e9 06 c8 |..._.D.g...!*...|
00000030 bb 5a b8 c0 79 ad 66 c2 6b 51 03 03 8c ba 74 94 |.Z..y.f.kQ....t.|
00000040 96 de 57 8f 34 6b 65 e0 92 56 bf 14 71 0b 37 43 |..W.4ke..V..q.7C|
00000050 f3 dd d2 cd 06 aa 50 ee 46 20 c9 2d 55 4b a5 df |......P.F .-UK..|
00000060 73 cf a3 d3 a3 d3 b2 86 07 a0 d0 1b 4f ea 68 ce |s...........O.h.|
00000070 77 01 98 e0 5b ea e5 22 be ff 09 0b ef 6e f9 ce |w...[..".....n..|
00000080 c9 e6 6a 15 30 85 ff e5 bc 7b 5e b8 2f 35 f1 4a |..j.0....{^./5.J|
00000090 ac 1a 76 e5 33 e2 37 8d fd a0 b8 e5 ad e2 85 58 |..v.3.7........X|
000000a0 0f 8a 1a 42 85 f5 23 2b b9 be ef 8e a8 68 82 b0 |...B..#+.....h..|
000000b0 63 a5 91 1d 7c 74 b4 c9 bc 9f fe 4e a1 e8 63 17 |c...|t.....N..c.|
000000c0 af 77 0d 73 70 7d 27 12 a6 48 3d 82 bc e2 ba 08 |.w.sp}'..H=.....|
000000d0 be c5 2d 4a a9 86 d6 e6 1f 9c 5e da d1 0e c9 e6 |..-J......^.....|
000000e0 0b 94 47 df 3a 21 f3 73 3a d4 56 d3 a2 cb 0c de |..G.:!.s:.V.....|
000000f0 ca 20 64 bb f0 c9 1a f4 b4 a7 78 c1 d9 3a 85 7a |. d.......x..:.z|
00000100 51 f8 27 02 c6 4c f3 03 e1 69 b7 5f a2 9d 6f 10 |Q.'..L...i._..o.|
00000110 c2 dd ac 1f 39 5c 76 e6 44 15 f7 12 7c 25 42 6a |....9\v.D...|%Bj|
00000120 d9 68 91 2b b5 9b 79 be 70 c7 07 a4 97 2f 53 57 |.h.+..y.p..../SW|
00000130 1c 62 22 89 7a fd f0 66 e8 ce 4e 33 78 9a 6a 2c |.b".z..f..N3x.j,|
00000140 7d b3 d1 3a bc dd a7 2b bf 7a 5f ce 93 55 c7 2e |}..:...+.z_..U..|
00000150 41 b2 24 9e fe 94 17 8a 34 17 2f 8a 3b d0 b9 d1 |A.$.....4./.;...|
00000160 ca 6b 07 1f 3c 40 66 88 f9 38 b2 d1 2a 07 b3 01 |.k..<@f..8..*...|
00000170 10 3c a8 5a 8c 62 42 fa 37 df 4f 16 3d 73 f5 9d |.<.Z.bB.7.O.=s..|
00000180 08 3b 22 d0 a0 58 b7 fa f1 0c f8 0e 6f c0 eb ce |.;"..X......o...|
00000190 2f 7f a5 36 12 3f 14 52 28 97 c9 42 e3 71 66 81 |/..6.?.R(..B.qf.|
000001a0 92 90 6f 74 ee 42 df 49 1a 08 77 53 83 0c bc e2 |..ot.B.I..wS....|
000001b0 13 a5 76 49 96 50 b4 e2 66 17 95 b4 6f f4 7b 9b |..vI.P..f...o.{.|
000001c0 73 72 ae da ed 4e 2a 82 2d b4 7b c8 1d b4 f4 9e |sr...N*.-.{.....|
000001d0 8f f9 30 ee f1 50 db 3d bc 55 25 27 0b 62 78 15 |..0..P.=.U%'.bx.|
000001e0 bb 6b 9a f0 ac 3c e1 b4 e3 9f 00 8d 5e b3 aa bd |.k...<......^...|
000001f0 72 55 6c 2e c5 34 ff 48 4c 18 41 e2 2b ca 20 17 |rUl..4.HL.A.+. .|
00000200第二个破解Veracrypt而不知道至少有一个候选密码的目标子集是一项艰巨的任务。Veracrypt非系统散列数的默认值为50万。最重要的是,它允许自定义轮计数。
Veracrypt卷头结构记录在这里:Veracrypt卷格式
如果你成功了,请告诉我们!
-第二版-
我启动了Windows,并尝试了"DD for Windows“,这是我从未使用过的。
当您运行dd --列表时,请仔细注意目标设备。它是否显示多个分区?我插入了一个简单的FAT32拇指驱动器,只有一个分区,但drive显示为两个分区,如下所示:
\\?\Device\Harddisk1\Partition0
link to \\?\Device\Harddisk1\DR2
Removable media other than floppy. Block size = 512
size is 4089446400 bytes
\\?\Device\Harddisk1\Partition1
link to \\?\Device\HarddiskVolume5
Removable media other than floppy. Block size = 512
size is 4089069568 bytes在Linux中使用fdisk检查这一点,会发现一个分区的开始,并且唯一的分区不是零。很明显,DD for Windows将此偏移量表示为分区。
最终的结果是,如果选择原始设备而不是分区,那么两个分区除以512的大小的差异是,如果选择原始设备而不是分区,则需要dd命令的skip=value。
https://security.stackexchange.com/questions/228897
复制相似问题