VeraCrypt
aboutsummaryrefslogtreecommitdiff
path: root/src/Boot/EFI/DcsBml.efi
blob: 97b130248724e977d99654b155fa54baf27b71c3 (plain)
ofshex dumpascii
0000 4d 5a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 MZ..............................
0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 b8 00 00 00 ................................
0040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0080 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
00a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 50 45 00 00 64 86 05 00 ........................PE..d...
00c0 00 00 00 00 00 00 00 00 00 00 00 00 f0 00 22 20 0b 02 0a 00 40 21 00 00 60 0a 00 00 00 00 00 00 ..............".....@!..`.......
00e0 a0 02 00 00 a0 02 00 00 00 00 00 00 00 00 00 00 20 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 ................................
0100 00 00 00 00 00 00 00 00 40 2e 00 00 a0 02 00 00 5f 55 00 00 0c 00 00 00 00 00 00 00 00 00 00 00 ........@......._U..............
0120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 10 00 00 00 ................................
0140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0160 40 2e 00 00 a0 05 00 00 e0 2d 00 00 5c 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 @........-..\...................
0180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
01a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
01c0 2e 74 65 78 74 00 00 00 32 21 00 00 a0 02 00 00 40 21 00 00 a0 02 00 00 00 00 00 00 00 00 00 00 .text...2!......@!..............
01e0 00 00 00 00 20 00 00 68 2e 64 61 74 61 00 00 00 e8 07 00 00 e0 23 00 00 00 08 00 00 e0 23 00 00 .......h.data........#.......#..
0200 00 00 00 00 00 00 00 00 00 00 00 00 40 00 00 c8 00 00 00 00 00 00 00 00 14 01 00 00 e0 2b 00 00 ............@................+..
0220 20 01 00 00 e0 2b 00 00 00 00 00 00 00 00 00 00 00 00 00 00 40 00 00 42 2e 78 64 61 74 61 00 00 .....+..............@..B.xdata..
0240 dc 00 00 00 00 2d 00 00 e0 00 00 00 00 2d 00 00 00 00 00 00 00 00 00 00 00 00 00 00 40 00 00 42 .....-.......-..............@..B
0260 2e 72 65 6c 6f 63 00 00 5c 00 00 00 e0 2d 00 00 60 00 00 00 e0 2d 00 00 00 00 00 00 00 00 00 00 .reloc..\....-..`....-..........
0280 00 00 00 00 40 00 00 42 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ....@..B........................
02a0 40 53 48 83 ec 20 48 8b d9 e8 3e 00 00 00 48 8b cb e8 f6 00 00 00 48 8b d8 48 85 c0 79 22 48 8b @SH...H...>...H.......H..H..y"H.
02c0 15 83 28 00 00 48 8b 0d e4 28 00 00 ff 52 70 48 8b 15 72 28 00 00 48 8b 0d db 28 00 00 ff 52 70 ..(..H...(...RpH..r(..H...(...Rp
02e0 48 8b c3 48 83 c4 20 5b c3 cc cc cc 40 53 48 83 ec 30 48 8b 42 60 48 89 0d 3b 28 00 00 48 8b da H..H...[....@SH..0H.B`H..;(..H..
0300 48 89 15 39 28 00 00 4c 8d 05 92 28 00 00 48 8d 0d 0b 21 00 00 33 d2 48 89 05 2a 28 00 00 ff 90 H..9(..L...(..H...!..3.H..*(....
0320 40 01 00 00 4c 8b 5b 58 48 8d 05 81 28 00 00 48 89 44 24 28 48 8d 05 b5 20 00 00 45 33 c9 48 89 @...L.[XH...(..H.D$(H......E3.H.
0340 44 24 20 48 8b 05 fe 27 00 00 bb 00 02 00 00 4c 8d 05 72 04 00 00 41 8d 51 10 8b cb 4c 89 1d ed D$.H...'.......L..r...A.Q...L...
0360 27 00 00 4c 89 1d 3e 28 00 00 ff 90 70 01 00 00 4c 8d 1d 41 28 00 00 48 8d 05 82 20 00 00 45 33 '..L..>(....p...L..A(..H......E3
0380 c9 4c 89 5c 24 28 48 89 44 24 20 48 8b 05 b6 27 00 00 4c 8d 05 27 04 00 00 41 8d 51 10 8b cb ff .L.\$(H.D$.H...'..L..'...A.Q....
03a0 90 70 01 00 00 48 83 c4 30 5b c3 cc 40 53 48 83 ec 30 48 89 4c 24 40 4c 8d 05 d2 27 00 00 48 8d .p...H..0[..@SH..0H.L$@L...'..H.
03c0 15 c3 27 00 00 48 8d 0d 84 20 00 00 e8 9b 0e 00 00 4c 8b 1d b8 27 00 00 4d 85 db 74 31 49 8d 43 ..'..H...........L...'..M..t1I.C
03e0 ff 49 3b c3 73 28 48 8b 0d 9b 27 00 00 4c 8d 05 a4 27 00 00 48 8d 15 55 20 00 00 48 8b 0c c1 48 .I;.s(H...'..L...'..H..U...H...H
0400 8b 05 42 27 00 00 ff 90 98 00 00 00 eb 0a 48 b8 0e 00 00 00 00 00 00 80 48 85 c0 78 0f 48 bb 0f ..B'..........H.........H..x.H..
0420 00 00 00 00 00 00 80 e9 b9 00 00 00 48 8b 05 15 27 00 00 4c 8d 05 46 20 00 00 48 8d 15 2f 20 00 ............H...'..L..F...H../..
0440 00 48 8d 4c 24 40 45 33 c9 ff 90 48 01 00 00 48 8b d8 48 85 c0 79 16 4c 8d 05 fa 20 00 00 83 c9 .H.L$@E3...H...H..H..y.L........
0460 ff 4c 8b c8 8b d1 e8 29 09 00 00 eb 78 48 8b 05 d4 26 00 00 ba 10 00 00 00 4c 8d 05 a0 26 00 00 .L.....)....xH...&.......L...&..
0480 8d 4a f6 ff 50 40 48 8b d8 48 85 c0 79 09 4c 8d 05 fb 20 00 00 eb c7 48 8d 05 22 27 00 00 45 33 .J..P@H..H..y.L........H.."'..E3
04a0 c9 4c 8d 05 ec 00 00 00 48 89 44 24 28 48 8d 05 3c 1f 00 00 41 8d 51 10 48 89 44 24 20 48 8b 05 .L......H.D$(H..<...A.Q.H.D$.H..
04c0 84 26 00 00 b9 00 02 00 00 ff 90 70 01 00 00 48 8b d8 48 85 c0 79 0c 4c 8d 05 fa 20 00 00 e9 7b .&.........p...H..H..y.L.......{
04e0 ff ff ff 33 db 48 8b c3 48 83 c4 30 5b c3 cc cc 48 89 5c 24 08 48 89 74 24 10 57 48 83 ec 30 49 ...3.H..H..0[...H.\$.H.t$.WH..0I
0500 8b d9 41 8b f8 48 8b f2 4c 8b d9 48 85 c9 74 27 48 8d 15 e9 1f 00 00 e8 1c 02 00 00 49 3b c3 75 ..A..H..L..H..t'H...........I;.u
0520 16 48 8b c3 48 f7 d8 1a c9 22 0d f9 25 00 00 88 0d f3 25 00 00 eb 06 8a 0d eb 25 00 00 84 c9 74 .H..H...."..%.....%.......%....t
0540 25 4d 85 db 74 20 48 8d 15 cb 1f 00 00 49 8b cb e8 e3 01 00 00 49 3b c3 75 0c 48 b8 0f 00 00 00 %M..t.H......I.......I;.u.H.....
0560 00 00 00 80 eb 1c 48 8b 44 24 60 4c 8b cb 44 8b c7 48 8b d6 49 8b cb 48 89 44 24 20 ff 15 ae 25 ......H.D$`L..D..H..I..H.D$....%
0580 00 00 48 8b 5c 24 40 48 8b 74 24 48 48 83 c4 30 5f c3 cc cc 48 83 ec 28 48 8b 05 b1 25 00 00 48 ..H.\$@H.t$HH..0_...H..(H...%..H
05a0 8d 15 7a 25 00 00 33 c9 ff 50 40 48 8b 05 9e 25 00 00 48 8d 15 77 25 00 00 33 c9 48 83 c4 28 48 ..z%..3..P@H...%..H..w%..3.H..(H
05c0 ff 60 40 cc 48 8b c4 53 56 57 48 83 ec 30 48 83 60 18 00 4c 8d 48 08 4c 8d 40 e0 48 8d 50 18 48 .`@.H..SVWH..0H.`..L.H.L.@.H.P.H
05e0 8d 0d 1a 1f 00 00 e8 d9 07 00 00 48 8b d8 48 85 c0 79 0c e8 a8 0b 00 00 e8 8f 09 00 00 eb 79 4c ...........H..H..y............yL
0600 8d 4c 24 58 4c 8d 44 24 68 48 8d 54 24 20 48 8d 0d 13 1f 00 00 bf 01 00 00 00 e8 a5 07 00 00 48 .L$XL.D$hH.T$.H................H
0620 8b f0 48 85 c0 78 47 48 8b 54 24 68 48 8b 4c 24 20 48 be 0e 00 00 00 00 00 00 80 48 d1 ea 8d 47 ..H..xGH.T$hH.L$.H.........H...G
0640 ff 74 19 41 b8 5b dc 00 00 66 44 39 04 41 74 0a 48 03 c7 48 3b c2 72 eb eb 02 33 f6 48 8b f8 48 .t.A.[...fD9.At.H..H;.r...3.H..H
0660 85 c9 74 0a 48 8b 05 dd 24 00 00 ff 50 48 48 85 f6 78 05 48 85 ff 74 08 e8 f7 07 00 00 48 8b d8 ..t.H...$...PHH..x.H..t......H..
0680 48 8b 4c 24 60 48 85 c9 74 0a 48 8b 05 b7 24 00 00 ff 50 48 48 8b c3 48 83 c4 30 5f 5e 5b c3 cc H.L$`H..t.H...$...PHH..H..0_^[..
06a0 40 53 48 83 ec 30 8b da f6 c2 02 74 05 e8 12 ff ff ff f6 c3 04 74 3b b8 5b dc 00 00 41 b9 02 00 @SH..0.....t.........t;.[...A...
06c0 00 00 48 8d 15 17 1d 00 00 66 89 44 24 48 48 8b 05 6b 24 00 00 45 8d 41 05 4c 8b 50 58 48 8d 44 ..H......f.D$HH..k$..E.A.L.PXH.D
06e0 24 48 48 8d 0d 57 1e 00 00 48 89 44 24 20 41 ff 52 58 f6 c3 01 74 36 48 83 3d 31 24 00 00 00 75 $HH..W...H.D$.A.RX...t6H.=1$...u
0700 2c 48 8b 15 38 24 00 00 c6 05 19 24 00 00 01 48 8b 42 58 48 8b 48 58 48 89 0d 12 24 00 00 48 8b ,H..8$.....$...H.BXH.HXH...$..H.
0720 42 58 48 8d 0d c7 fd ff ff 48 89 48 58 33 c0 48 83 c4 30 5b c3 cc cc cc 45 33 d2 4c 8b ca 66 44 BXH......H.HX3.H..0[....E3.L..fD
0740 39 12 75 36 48 8b c1 c3 4d 8b c1 48 8b d1 66 41 3b 01 75 16 66 85 c0 74 11 48 83 c1 02 49 83 c0 9.u6H...M..H..fA;.u.f..t.H...I..
0760 02 0f b7 01 66 41 3b 00 74 ea 66 45 39 10 74 15 66 44 39 11 74 0c 48 8d 4a 02 0f b7 01 66 85 c0 ....fA;.t.fE9.t.fD9.t.H.J....f..
0780 75 c6 33 c0 c3 48 8b c2 c3 cc cc cc 48 83 ec 28 48 8b 05 b1 23 00 00 4c 8d 44 24 38 48 8d 15 6d u.3..H......H..(H...#..L.D$8H..m
07a0 1c 00 00 ff 90 98 00 00 00 48 8b 4c 24 38 33 d2 48 85 c0 48 0f 48 ca 48 8b c1 48 83 c4 28 c3 cc .........H.L$83.H..H.H.H..H..(..
07c0 c6 05 63 23 00 00 01 c3 48 83 ec 28 48 8b 05 7d 23 00 00 48 8d 15 ce 23 00 00 33 c9 ff 50 40 c6 ..c#....H..(H..}#..H...#..3..P@.
07e0 05 43 23 00 00 01 48 83 c4 28 c3 cc 48 89 5c 24 08 48 89 6c 24 10 48 89 74 24 18 57 41 54 41 55 .C#...H..(..H.\$.H.l$.H.t$.WATAU
0800 41 56 41 57 48 83 ec 20 45 33 ff 49 8b e9 4d 8b e0 4c 8b f2 48 8b d9 48 85 c9 0f 84 0e 02 00 00 AVAWH...E3.I..M..L..H..H........
0820 48 85 d2 0f 84 05 02 00 00 4d 85 c0 0f 84 fc 01 00 00 4d 85 c9 0f 84 f3 01 00 00 49 8b c0 41 8b H........M........M........I..A.
0840 cf 66 45 39 38 0f 84 e3 01 00 00 48 83 c0 02 48 ff c1 66 44 39 38 75 f3 48 83 f9 01 0f 82 cc 01 .fE98......H...H..fD98u.H.......
0860 00 00 48 8b c3 49 8b cf 66 44 39 3b 0f 84 bc 01 00 00 48 83 c0 02 48 ff c1 66 44 39 38 75 f3 48 ..H..I..fD9;......H...H..fD98u.H
0880 83 f9 01 0f 82 a5 01 00 00 49 8b c1 49 8b f7 66 45 39 39 74 0d 48 83 c0 02 48 ff c6 66 44 39 38 .........I..I..fE99t.H...H..fD98
08a0 75 f3 4c 8d 6c 36 02 49 8b cd e8 99 09 00 00 48 8b f8 48 85 c0 0f 84 67 01 00 00 49 d1 ed 4c 8b u.L.l6.I.......H..H....g...I..L.
08c0 ce 4c 8b c5 49 8b d5 48 8b c8 e8 e9 18 00 00 bd 00 10 00 00 49 8b ce 8b d5 e8 22 1a 00 00 48 8b .L..I..H............I....."...H.
08e0 f0 0f b7 13 66 85 d2 0f 84 24 01 00 00 4d 8b c4 49 8b cf 66 45 39 3c 24 74 0d 49 83 c0 02 48 ff ....f....$...M..I..fE9<$t.I...H.
0900 c1 66 45 39 38 75 f3 49 8b c4 4c 8b c3 48 85 c9 0f 85 8c 00 00 00 49 8b c4 49 8b cf 66 45 39 3c .fE98u.I..L..H........I..I..fE9<
0920 24 74 0d 48 83 c0 02 48 ff c1 66 44 39 38 75 f3 48 8d 1c 4b 48 8b c6 49 8b cf 66 44 39 3e 74 0d $t.H...H..fD98u.H..KH..I..fD9>t.
0940 48 83 c0 02 48 ff c1 66 44 39 38 75 f3 48 8d 54 09 02 48 8b c7 49 8b cf 66 44 39 3f 74 0d 48 83 H...H..fD98u.H.T..H..I..fD9?t.H.
0960 c0 02 48 ff c1 66 44 39 38 75 f3 48 8d 04 4a 48 3b c5 0f 87 80 00 00 00 48 8b d7 48 8b ce e8 6d ..H..fD98u.H..JH;.......H..H...m
0980 17 00 00 e9 59 ff ff ff 66 3b 10 75 1a 48 83 f9 01 76 14 49 83 c0 02 48 83 c0 02 48 ff c9 41 0f ....Y...f;.u.H...v.I...H...H..A.
09a0 b7 10 66 85 d2 75 e1 0f b7 00 41 0f b7 08 3b c8 0f 84 60 ff ff ff 48 8b c6 49 8b cf 66 44 39 3e ..f..u....A...;...`...H..I..fD9>
09c0 74 0d 48 83 c0 02 48 ff c1 66 44 39 38 75 f3 48 8d 44 09 04 48 3b c5 77 1f 41 b9 01 00 00 00 4c t.H...H..fD98u.H.D..H;.w.A.....L
09e0 8b c3 ba 00 08 00 00 48 8b ce e8 c9 17 00 00 48 83 c3 02 e9 e9 fe ff ff 48 8b 05 49 21 00 00 48 .......H.......H........H..I!..H
0a00 8b cf ff 50 48 48 b8 05 00 00 00 00 00 00 80 eb 27 48 8b 05 30 21 00 00 48 8b cf ff 50 48 33 c0 ...PHH..........'H..0!..H...PH3.
0a20 eb 16 48 b8 09 00 00 00 00 00 00 80 eb 0a 48 b8 02 00 00 00 00 00 00 80 48 8b 5c 24 50 48 8b 6c ..H...........H.........H.\$PH.l
0a40 24 58 48 8b 74 24 60 48 83 c4 20 41 5f 41 5e 41 5d 41 5c 5f c3 cc cc cc 48 83 ec 28 45 33 c0 4c $XH.t$`H...A_A^A]A\_....H..(E3.L
0a60 8b c9 48 8b c1 41 8b d0 66 44 39 01 74 0d 48 83 c0 02 48 ff c2 66 44 39 00 75 f3 48 8d 04 12 48 ..H..A..fD9.t.H...H..fD9.u.H...H
0a80 89 44 24 30 48 85 c0 74 3c 48 8b 0d c8 20 00 00 48 85 c9 74 1b 48 8b 05 c4 20 00 00 48 8b 49 18 .D$0H..t<H......H..t.H......H.I.
0aa0 48 8d 54 24 30 4d 8b c1 ff 90 e0 00 00 00 eb 15 48 8b 05 89 20 00 00 49 8b d1 4c 8b 40 40 49 8b H.T$0M..........H......I..L.@@I.
0ac0 c8 41 ff 50 08 48 83 c4 28 c3 cc cc 48 89 5c 24 08 48 89 6c 24 10 48 89 74 24 18 57 41 54 41 55 .A.P.H..(...H.\$.H.l$.H.t$.WATAU
0ae0 41 56 41 57 48 83 ec 30 4c 63 e1 bf 00 10 00 00 4d 8b f1 8b cf 49 8b f0 48 63 da e8 48 07 00 00 AVAWH..0Lc......M....I..Hc..H...
0b00 8b cf 4c 8b e8 e8 3e 07 00 00 45 33 ff 48 8b f8 4d 85 ed 0f 84 40 02 00 00 48 85 c0 0f 84 2a 02 ..L...>...E3.H..M....@...H....*.
0b20 00 00 48 8b 0d 17 20 00 00 4c 8d 0d e0 1a 00 00 4c 8d 05 e1 1a 00 00 48 8b 51 40 48 8b 4a 48 49 ..H......L......L......H.Q@H.JHI
0b40 8b d5 48 63 69 08 48 8b ce e8 9e fc ff ff 4c 8d 0d cb 1a 00 00 4c 8d 05 cc 1a 00 00 48 8b d7 49 ..Hci.H.......L......L......H..I
0b60 8b cd e8 85 fc ff ff 4c 8d 0d c2 1a 00 00 4c 8d 05 c3 1a 00 00 49 8b d5 48 8b cf e8 6c fc ff ff .......L......L......I..H...l...
0b80 4c 8d 0d b9 1a 00 00 4c 8d 05 ba 1a 00 00 48 8b d7 49 8b cd e8 53 fc ff ff 4c 8d 0d b0 1a 00 00 L......L......H..I...S...L......
0ba0 4c 8d 05 b1 1a 00 00 49 8b d5 48 8b cf e8 3a fc ff ff 4d 8b cd ba 00 08 00 00 41 b8 40 01 00 00 L......I..H...:...M.......A.@...
0bc0 48 8b cf 4c 89 74 24 20 48 8b f0 e8 0c 08 00 00 41 83 fc ff 74 20 83 fb ff 74 1b 48 8b 05 5e 1f H..L.t$.H.......A...t....t.H..^.
0be0 00 00 4c 8b c3 49 8b d4 4c 8b 48 40 49 8b c9 41 ff 51 38 48 8b f0 4c 8b df 66 44 39 3f 0f 84 15 ..L..I..L.H@I..A.Q8H..L..fD9?...
0c00 01 00 00 4c 8d 35 56 1a 00 00 49 8b d6 49 8b cb e8 23 fb ff ff 48 8b d8 48 85 c0 74 04 66 44 89 ...L.5V...I..I...#...H..H..t.fD.
0c20 38 49 8b c3 49 8b cf 66 45 39 3b 74 26 48 83 c0 02 48 ff c1 66 44 39 38 75 f3 48 85 c9 74 14 49 8I..I..fE9;t&H...H..fD98u.H..t.I
0c40 8b cb e8 11 fe ff ff 48 8b f0 48 85 c0 0f 88 c5 00 00 00 48 85 db 0f 84 bc 00 00 00 66 83 7b fe .......H..H........H........f.{.
0c60 5e 75 2f 48 8b 05 d6 1e 00 00 4c 8b 48 40 49 8b 41 48 8b 48 0c 4c 63 40 10 ff c9 48 63 d1 49 8b ^u/H......L.H@I.AH.H.Lc@...Hc.I.
0c80 c9 41 ff 51 38 49 8b ce e8 cb fd ff ff 48 8b f0 eb 2d 0f b7 43 02 83 f8 42 74 53 83 f8 45 74 42 .A.Q8I.......H...-..C...BtS..EtB
0ca0 83 f8 48 74 31 83 f8 4e 74 27 83 f8 56 74 16 49 8b ce e8 a1 fd ff ff 48 8b f0 48 85 c0 78 4b 48 ..Ht1..Nt'..Vt.I.......H..H..xKH
0cc0 83 c3 fe eb 45 48 8b d5 83 e2 70 48 83 ca 02 eb 27 48 8b d5 eb 22 48 8b d5 83 e2 70 48 83 ca 0f ....EH....pH....'H..."H....pH...
0ce0 eb 16 48 8b d5 83 e2 70 48 83 ca 0e eb 0a 48 8b d5 83 e2 70 48 83 ca 01 48 8b 05 41 1e 00 00 4c ..H....pH.....H....pH...H..A...L
0d00 8b 40 40 49 8b c8 41 ff 50 28 4c 8d 5b 04 66 45 39 3b 0f 85 f2 fe ff ff 48 8b 05 21 1e 00 00 48 .@@I..A.P(L.[.fE9;......H..!...H
0d20 8b d5 4c 8b 40 40 49 8b c8 41 ff 50 28 48 8b 05 14 1e 00 00 49 8b cd ff 50 48 48 8b 05 07 1e 00 ..L.@@I..A.P(H......I...PHH.....
0d40 00 48 8b cf ff 50 48 48 8b c6 eb 29 48 8b 05 f5 1d 00 00 49 8b cd ff 50 48 48 85 ff 74 0d 48 8b .H...PHH...)H......I...PHH..t.H.
0d60 05 e3 1d 00 00 48 8b cf ff 50 48 48 b8 09 00 00 00 00 00 00 80 48 8b 5c 24 60 48 8b 6c 24 68 48 .....H...PHH.........H.\$`H.l$hH
0d80 8b 74 24 70 48 83 c4 30 41 5f 41 5e 41 5d 41 5c 5f c3 cc cc 4c 89 44 24 18 4c 89 4c 24 20 48 83 .t$pH..0A_A^A]A\_...L.D$.L.L$.H.
0da0 ec 28 4d 85 c0 75 0c 48 b8 02 00 00 00 00 00 00 80 eb 0a 4c 8d 4c 24 48 e8 0f fd ff ff 48 83 c4 .(M..u.H...........L.L$H.....H..
0dc0 28 c3 cc cc 4c 8b dc 49 89 5b 08 49 89 6b 10 49 89 73 18 57 41 54 41 55 48 83 ec 30 49 83 20 00 (...L..I.[.I.k.I.s.WATAUH..0I...
0de0 48 8b 05 59 1d 00 00 49 83 63 d8 00 4c 8b 50 58 49 8b f1 4c 8b e2 49 8b f8 4d 8b c8 48 8d 15 dd H..Y...I.c..L.PXI..L..I..M..H...
0e00 15 00 00 4c 8b c6 48 8b e9 41 ff 52 48 49 bd 05 00 00 00 00 00 00 80 49 3b c5 75 3d 48 8b 0f e8 ...L..H..A.RHI.........I;.u=H...
0e20 24 04 00 00 48 8b d8 48 85 c0 75 05 49 8b c5 eb 28 48 8b 05 08 1d 00 00 48 8d 15 a1 15 00 00 4c $...H..H..u.I...(H......H......L
0e40 8b cf 4c 8b 50 58 4c 8b c6 48 8b cd 48 89 5c 24 20 41 ff 52 48 49 89 1c 24 48 8b 5c 24 50 48 8b ..L.PXL..H..H.\$.A.RHI..$H.\$PH.
0e60 6c 24 58 48 8b 74 24 60 48 83 c4 30 41 5d 41 5c 5f c3 cc cc 40 53 56 57 48 83 ec 40 b8 5b dc 00 l$XH.t$`H..0A]A\_...@SVWH..@.[..
0e80 00 4c 8d 4c 24 60 4c 8d 44 24 68 48 8d 54 24 70 48 8d 0d 91 16 00 00 66 89 44 24 30 e8 23 ff ff .L.L$`L.D$hH.T$pH......f.D$0.#..
0ea0 ff 48 85 c0 79 36 48 8b 05 93 1c 00 00 41 b9 02 00 00 00 48 8d 15 26 15 00 00 4c 8b 50 58 48 8d .H..y6H......A.....H..&...L.PXH.
0ec0 44 24 30 45 8d 41 05 48 8d 0d 5a 16 00 00 48 89 44 24 20 41 ff 52 58 e9 a7 00 00 00 48 8b 5c 24 D$0E.A.H..Z...H.D$.A.RX.....H.\$
0ee0 68 48 d1 eb 48 8d 4c 1b 02 e8 5a 03 00 00 48 8b 7c 24 70 45 33 c9 33 d2 48 8b f0 48 85 db 74 2e hH..H.L...Z...H.|$pE3.3.H..H..t.
0f00 4d 85 c9 75 0e 0f b7 4c 24 30 41 b9 01 00 00 00 66 89 0e 0f b7 04 57 66 3b 44 24 30 74 08 66 42 M..u...L$0A.....f.....Wf;D$0t.fB
0f20 89 04 4e 49 ff c1 48 ff c2 48 3b d3 72 d2 48 8b 05 0b 1c 00 00 48 8d 15 a4 14 00 00 48 8d 0d e5 ..NI..H..H;.r.H......H......H...
0f40 15 00 00 4c 8b 50 58 4d 03 c9 41 b8 07 00 00 00 48 89 74 24 20 41 ff 52 58 48 8b d8 48 85 f6 74 ...L.PXM..A.....H.t$.A.RXH..H..t
0f60 0d 48 8b 15 e0 1b 00 00 48 8b ce ff 52 48 48 85 ff 74 0d 48 8b 15 ce 1b 00 00 48 8b cf ff 52 48 .H......H...RHH..t.H......H...RH
0f80 48 8b c3 48 83 c4 40 5f 5e 5b c3 cc 48 89 5c 24 08 48 89 6c 24 10 48 89 74 24 18 57 41 54 41 55 H..H..@_^[..H.\$.H.l$.H.t$.WATAU
0fa0 41 56 41 57 48 83 ec 30 48 8b 0d c1 1b 00 00 e8 d8 f7 ff ff 41 bc 04 00 00 00 48 8b f0 48 8b c8 AVAWH..0H...........A.....H..H..
0fc0 80 39 7f 75 06 80 79 01 ff 74 17 44 38 21 75 06 80 79 01 01 74 09 0f b7 41 02 48 03 c8 eb e1 48 .9.u..y..t.D8!u..y..t...A.H....H
0fe0 8b f1 45 33 f6 4c 8d 2d dc 14 00 00 66 44 39 35 d4 14 00 00 49 8b c5 41 8b ee 41 8b fe 74 0d 48 ..E3.L.-....fD95....I..A..A..t.H
1000 83 c0 02 48 ff c7 66 44 39 30 75 f3 48 8d 7c 3f 02 48 8d 4f 08 e8 b2 12 00 00 48 8b d8 48 85 c0 ...H..fD90u.H.|?.H.O......H..H..
1020 74 5f 66 c7 00 04 04 48 8d 48 04 48 85 ff 74 10 49 3b cd 74 0b 4c 8b c7 49 8b d5 e8 e0 12 00 00 t_f....H.H.H..t.I;.t.L..I.......
1040 66 41 03 fc 48 8d 15 bd 15 00 00 0f b7 cf 66 89 4b 02 48 03 cb 48 3b ca 74 08 4d 8b c4 e8 be 12 fA..H.........f.K.H..H;.t.M.....
1060 00 00 48 8b 05 37 1b 00 00 48 8b d3 33 c9 ff 50 10 48 8b 15 d0 1a 00 00 48 8b cb 48 8b e8 ff 52 ..H..7...H..3..P.H......H..H...R
1080 48 4c 8b 05 18 1b 00 00 48 8b d5 48 8b ce 41 ff 50 10 48 8b 15 af 1a 00 00 48 8b cd 4c 8b e0 ff HL......H..H..A.P.H......H..L...
10a0 52 48 66 44 39 35 ee 13 00 00 4c 8d 3d e7 13 00 00 49 8b f6 49 8b cf 74 0d 48 83 c1 02 48 ff c6 RHfD95....L.=....I..I..t.H...H..
10c0 66 44 39 31 75 f3 48 8b 05 d3 1a 00 00 49 8b cc 48 8d 74 36 02 ff 10 48 8b f8 4c 8d 6c 30 06 49 fD91u.H......I..H.t6...H..L.l0.I
10e0 8b cd e8 61 01 00 00 48 8b e8 48 85 c0 0f 84 84 00 00 00 48 8d 58 04 c7 00 01 00 00 00 66 89 3b ...a...H..H........H.X.......f.;
1100 48 83 c3 02 48 85 f6 74 13 49 3b df 74 0e 4c 8b c6 49 8b d7 48 8b cb e8 04 12 00 00 48 03 de 48 H...H..t.I;.t.L..I..H.......H..H
1120 85 ff 74 13 49 3b dc 74 0e 4c 8b c7 49 8b d4 48 8b cb e8 e9 11 00 00 48 8b 05 02 1a 00 00 48 8d ..t.I;.t.L..I..H.......H......H.
1140 15 9b 12 00 00 48 8d 0d b4 13 00 00 4c 8b 50 58 4d 8b cd 41 b8 07 00 00 00 48 89 6c 24 20 41 ff .....H......L.PXM..A.....H.l$.A.
1160 52 58 48 8b 15 df 19 00 00 48 8b cd 48 8b d8 ff 52 48 48 8b c3 eb 0a 48 b8 05 00 00 00 00 00 00 RXH......H..H...RHH....H........
1180 80 48 8b 5c 24 60 48 8b 6c 24 68 48 8b 74 24 70 48 83 c4 30 41 5f 41 5e 41 5d 41 5c 5f c3 cc cc .H.\$`H.l$hH.t$pH..0A_A^A]A\_...
11a0 48 83 ec 28 4c 8d 05 d5 19 00 00 48 8d 15 c6 19 00 00 48 8d 0d 87 12 00 00 e8 ae 00 00 00 48 8b H..(L......H......H...........H.
11c0 05 83 19 00 00 48 8b 0d 6c 19 00 00 4c 8d 44 24 38 48 8d 15 58 12 00 00 ff 90 98 00 00 00 4c 8b .....H..l...L.D$8H..X.........L.
11e0 d8 48 85 c0 79 09 48 8b 0d 83 19 00 00 eb 13 48 8b 44 24 38 48 8b 48 18 49 8b c3 48 89 0d 6e 19 .H..y.H........H.D$8H.H.I..H..n.
1200 00 00 4d 85 db 78 3c 48 8b 05 3a 19 00 00 48 83 64 24 30 00 4c 8d 44 24 30 48 8d 15 20 12 00 00 ..M..x<H..:...H.d$0.L.D$0H......
1220 ff 90 98 00 00 00 48 85 c0 75 18 4c 8b 44 24 30 4d 85 c0 74 0e 48 8d 15 2c 19 00 00 49 8b c8 41 ......H..u.L.D$0M..t.H..,...I..A
1240 ff 50 08 48 83 c4 28 c3 40 53 48 83 ec 20 48 8b d9 e8 76 10 00 00 48 85 c0 74 0b 48 8b d3 48 8b .P.H..(.@SH...H...v...H..t.H..H.
1260 c8 e8 9a 10 00 00 48 83 c4 20 5b c3 48 89 5c 24 08 48 89 6c 24 18 56 57 41 56 48 83 ec 30 49 be ......H...[.H.\$.H.l$.VWAVH..0I.
1280 05 00 00 00 00 00 00 80 49 8b f0 48 8b da 48 8b e9 49 8b fe 48 85 d2 0f 84 ee 00 00 00 4d 85 c0 ........I..H..H..I..H........M..
12a0 0f 84 e5 00 00 00 48 8b 0a 48 85 c9 74 0a 48 8b 05 93 18 00 00 ff 50 48 48 83 26 00 b9 08 00 00 ......H..H..t.H.......PHH.&.....
12c0 00 e8 82 ff ff ff 48 89 03 48 85 c0 0f 84 a1 00 00 00 45 33 c0 48 89 44 24 20 48 8b 05 67 18 00 ......H..H........E3.H.D$.H..g..
12e0 00 4c 8d 4c 24 58 41 8d 48 02 48 8b d5 48 c7 44 24 58 08 00 00 00 ff 90 b0 00 00 00 48 8b f8 49 .L.L$XA.H.H..H.D$X..........H..I
1300 3b c6 75 74 48 8b 0b 48 85 c9 74 0a 48 8b 05 35 18 00 00 ff 50 48 48 8b 4c 24 58 e8 28 ff ff ff ;.utH..H..t.H..5....PHH.L$X.(...
1320 48 89 03 48 85 c0 75 0c 48 b8 09 00 00 00 00 00 00 80 eb 61 45 33 c0 48 89 44 24 20 48 8b 05 05 H..H..u.H..........aE3.H.D$.H...
1340 18 00 00 4c 8d 4c 24 58 41 8d 48 02 48 8b d5 ff 90 b0 00 00 00 48 8b f8 48 85 c0 74 20 48 8b 0b ...L.L$XA.H.H........H..H..t.H..
1360 48 85 c9 74 0a 48 8b 05 dc 17 00 00 ff 50 48 48 83 23 00 48 8b c7 eb 1d 48 85 c0 78 e0 48 8b 44 H..t.H.......PHH.#.H....H..x.H.D
1380 24 58 48 c1 e8 03 48 89 06 eb e8 48 b8 02 00 00 00 00 00 00 80 48 8b 5c 24 50 48 8b 6c 24 60 48 $XH...H....H.........H.\$PH.l$`H
13a0 83 c4 30 41 5e 5f 5e c3 45 33 d2 4d 85 c0 7e 27 48 3b ca 73 22 48 83 7c 24 28 01 44 88 09 74 0a ..0A^_^.E3.M..~'H;.s"H.|$(.D..t.
13c0 49 8b c1 48 c1 e8 08 88 41 01 48 03 4c 24 28 49 ff c2 4d 3b d0 7c d9 48 8b c1 c3 cc 48 89 5c 24 I..H....A.H.L$(I..M;.|.H....H.\$
13e0 08 4c 89 4c 24 20 55 56 57 41 54 41 55 41 56 41 57 48 8d 6c 24 d0 48 81 ec 30 01 00 00 4d 8b e0 .L.L$.UVWATAUAVAWH.l$.H..0...M..
1400 45 33 c0 4c 8b f1 4c 89 45 c0 49 0f ba e4 0d 73 5c 48 85 d2 75 03 45 33 f6 41 8a c4 bf 01 00 00 E3.L..L.E.I....s\H..u.E3.A......
1420 00 24 40 f6 d8 1b db 4c 21 45 e0 45 33 db f7 db 45 33 d2 4c 89 5d 90 03 df 4c 89 55 a0 89 5d 80 .$@....L!E.E3...E3.L.]...L.U..].
1440 4d 85 f6 74 15 4c 8d 52 ff 8b c3 4c 89 75 e0 4c 0f af d0 4d 03 d6 4c 89 55 a0 49 0f ba e4 08 73 M..t.L.R...L.u.L...M..L.U.I....s
1460 18 ba 02 00 00 00 be ff ff 00 00 eb 14 48 85 d2 75 a7 33 c0 e9 39 0c 00 00 48 8b d7 be ff 00 00 .............H..u.3..9...H......
1480 00 41 0f be 41 01 48 89 75 f0 48 89 55 d8 c1 e0 08 48 63 c8 41 0f b6 01 48 0b c8 48 23 ce 48 89 .A..A.H.u.H.U....Hc.A...H..H#.H.
14a0 4d c8 0f 84 c8 0b 00 00 4d 85 f6 74 09 4d 3b f2 0f 83 b6 0b 00 00 48 83 65 88 00 45 33 d2 45 32 M.......M..t.M;.......H.e..E3.E2
14c0 ff 4c 21 55 d0 41 81 e4 40 21 00 00 45 32 db 4c 8b ef 48 89 7d b8 44 89 7d a8 4c 89 a5 80 00 00 .L!U.A..@!..E2.L..H.}.D.}.L.....
14e0 00 44 88 7d 98 44 88 5d 84 4c 89 55 b0 48 83 f9 0a 0f 84 d4 07 00 00 48 83 f9 0d 0f 84 8f 02 00 .D.}.D.].L.U.H.........H........
1500 00 48 83 f9 25 74 34 49 0f ba ec 0a 48 8d 7d c8 4c 89 a5 80 00 00 00 4c 8b 45 88 41 b9 01 00 00 .H..%t4I....H.}.L......L.E.A....
1520 00 49 0f ba e4 0a 0f 83 ea 07 00 00 41 8d 71 01 41 bf ff ff 00 00 e9 e4 07 00 00 48 8b 9d 90 00 .I..........A.q.A..........H....
1540 00 00 4c 03 ca 4c 89 8d 88 00 00 00 41 0f be 41 01 c1 e0 08 48 63 c8 41 0f b6 01 48 0b c8 48 23 ..L..L......A..A....Hc.A...H..H#
1560 ce 48 89 4d c8 48 83 f9 2d 0f 87 bd 00 00 00 0f 84 af 00 00 00 48 8b c1 48 85 c9 0f 84 6c 01 00 .H.M.H..-............H..H....l..
1580 00 48 83 e8 20 0f 84 90 00 00 00 48 83 e8 0a 74 20 48 ff c8 74 12 48 ff c8 0f 85 5f 01 00 00 49 .H.........H...t.H..t.H...._...I
15a0 83 cc 08 e9 39 01 00 00 49 83 cc 02 e9 30 01 00 00 49 0f ba e4 0b 72 3a 49 0f ba ec 09 4c 89 a5 ....9...I....0...I....r:I....L..
15c0 80 00 00 00 4d 85 c0 75 10 48 8b 3b 48 83 c3 08 48 89 9d 90 00 00 00 eb 0b 49 8b 38 49 83 c0 08 ....M..u.H.;H...H........I.8I...
15e0 4c 89 45 c0 48 89 7d 88 bf 01 00 00 00 e9 50 ff ff ff 4d 85 c0 75 10 4c 8b 2b 48 83 c3 08 48 89 L.E.H.}.......P...M..u.L.+H...H.
1600 9d 90 00 00 00 eb 0b 4d 8b 28 49 83 c0 08 4c 89 45 c0 4c 89 6d b8 e9 27 ff ff ff 49 83 cc 04 e9 .......M.(I...L.E.L.m..'...I....
1620 bd 00 00 00 4c 0b e7 e9 b5 00 00 00 48 83 f9 2e 0f 84 a6 00 00 00 48 83 f9 30 74 25 0f 86 bc 00 ....L.......H.........H..0t%....
1640 00 00 48 83 f9 39 76 2b 48 83 f9 4c 74 0a 48 83 f9 6c 0f 85 a6 00 00 00 49 83 cc 10 e9 80 00 00 ..H..9v+H..Lt.H..l......I.......
1660 00 49 0f ba e4 0b 72 0b 49 83 cc 20 4c 89 a5 80 00 00 00 45 33 d2 4c 89 55 b0 48 83 f9 30 72 31 .I....r.I...L......E3.L.U.H..0r1
1680 48 83 f9 39 77 27 4b 8d 04 92 4c 03 ca 4c 8d 54 41 d0 41 0f be 41 01 c1 e0 08 48 63 c8 41 0f b6 H..9w'K...L..L.TA.A..A....Hc.A..
16a0 01 48 0b c8 48 23 ce 48 83 f9 30 73 d3 4c 89 55 b0 4c 2b ca 49 0f ba e4 0b 72 15 49 0f ba ec 09 .H..H#.H..0s.L.U.L+.I....r.I....
16c0 4c 89 55 88 4c 89 a5 80 00 00 00 e9 72 fe ff ff 4d 8b ea 4c 89 55 b8 e9 66 fe ff ff 49 0f ba ec L.U.L.......r...M..L.U..f...I...
16e0 0b 4c 89 a5 80 00 00 00 e9 55 fe ff ff 4c 2b ca 45 33 ed 4c 89 6d b8 4c 89 8d 88 00 00 00 48 83 .L.......U...L+.E3.L.m.L......H.
1700 f9 67 0f 87 cb 01 00 00 0f 84 ff 00 00 00 48 83 e9 0a 0f 84 b5 00 00 00 48 83 e9 03 74 6f 48 83 .g............H.........H...toH.
1720 e9 46 0f 84 70 02 00 00 48 83 e9 05 0f 84 68 03 00 00 48 83 e9 09 0f 84 68 02 00 00 48 83 e9 02 .F..p...H.....h...H.....h...H...
1740 74 0e 48 ff c9 0f 84 66 03 00 00 e9 b8 01 00 00 4d 85 c0 75 10 0f b7 03 48 83 c3 08 48 89 9d 90 t.H....f........M..u....H...H...
1760 00 00 00 eb 0c 41 0f b7 00 49 83 c0 08 4c 89 45 c0 48 89 45 e8 48 8d 7d e8 49 0f ba ec 0a 4c 89 .....A...I...L.E.H.E.H.}.I....L.
1780 a5 80 00 00 00 8b 5d 80 e9 8a fd ff ff 8b 5d 80 4c 8b 45 88 4c 03 ca 41 0f be 41 01 4c 89 8d 88 ......].......].L.E.L..A..A.L...
17a0 00 00 00 c1 e0 08 48 63 c8 41 0f b6 01 48 0b c8 48 23 ce 48 89 4d c8 48 83 f9 0a 0f 85 f4 04 00 ......Hc.A...H..H#.H.M.H........
17c0 00 48 8d 3d 3c 13 00 00 e9 4e fd ff ff 8b 5d 80 4c 8b 45 88 4c 03 ca 41 0f be 41 01 48 8d 3d 21 .H.=<....N....].L.E.L..A..A.H.=!
17e0 13 00 00 4c 89 8d 88 00 00 00 c1 e0 08 48 63 c8 41 0f b6 01 48 0b c8 48 23 ce 48 89 4d c8 48 83 ...L.........Hc.A...H..H#.H.M.H.
1800 f9 0d 0f 84 13 fd ff ff e9 af 04 00 00 4d 85 c0 75 10 4c 8b 2b 48 83 c3 08 48 89 9d 90 00 00 00 .............M..u.L.+H...H......
1820 eb 0b 4d 8b 28 49 83 c0 08 4c 89 45 c0 4d 85 ed 75 13 48 8d 3d 4f 12 00 00 8b 5d 80 4c 8b 6d b8 ..M.(I...L.E.M..u.H.=O....].L.m.
1840 e9 d2 fc ff ff 41 0f b6 45 0f 41 0f b6 4d 0e 41 0f b6 55 0d 45 0f b6 45 0c 45 0f b6 4d 0b 45 0f .....A..E.A..M.A..U.E..E.E..M.E.
1860 b6 55 0a 45 0f b6 5d 09 41 0f b6 5d 08 41 0f b7 7d 06 41 0f b7 75 04 89 44 24 70 41 8b 45 00 89 .U.E..].A..].A..}.A..u..D$pA.E..
1880 4c 24 68 89 54 24 60 44 89 44 24 58 44 89 4c 24 50 44 89 54 24 48 44 89 5c 24 40 89 5c 24 38 45 L$h.T$`D.D$XD.L$PD.T$HD.\$@.\$8E
18a0 33 c0 89 7c 24 30 4c 8d 0d eb 11 00 00 48 8d 4d f8 41 8d 50 26 89 74 24 28 89 44 24 20 e8 0e 08 3..|$0L......H.M.A.P&.t$(.D$....
18c0 00 00 4c 8b 55 b0 44 8a 5d 84 48 8d 7d f8 e9 66 ff ff ff 48 83 e9 70 0f 84 b5 01 00 00 48 83 e9 ..L.U.D.].H.}..f...H..p......H..
18e0 02 0f 84 0f 01 00 00 48 ff c9 0f 84 a8 00 00 00 48 ff c9 74 1c 48 ff c9 0f 84 a5 01 00 00 48 83 .......H........H..t.H........H.
1900 f9 03 0f 84 96 01 00 00 48 8d 7d c8 e9 68 fe ff ff 4d 85 c0 75 10 4c 8b 0b 48 83 c3 08 48 89 9d ........H.}..h...M..u.L..H...H..
1920 90 00 00 00 eb 0b 4d 8b 08 49 83 c0 08 4c 89 45 c0 4d 85 c9 75 0c 48 8d 3d 93 11 00 00 e9 43 fe ......M..I...L.E.M..u.H.=.....C.
1940 ff ff 41 0f b6 49 04 41 0f b7 11 45 0f b6 41 03 41 0f b6 41 05 45 0f b6 49 02 89 44 24 40 89 4c ..A..I.A...E..A.A..A.E..I..D$@.L
1960 24 38 89 54 24 30 44 89 44 24 28 45 33 c0 44 89 4c 24 20 4c 8d 0d 66 11 00 00 48 8d 4d f8 41 8d $8.T$0D.D$(E3.D.L$.L..f...H.M.A.
1980 50 26 e8 49 07 00 00 48 8d 7d f8 4c 8b 55 b0 44 8a 5d 84 e9 ed fd ff ff 49 0f ba ec 0a 4c 89 a5 P&.I...H.}.L.U.D.]......I....L..
19a0 80 00 00 00 4d 85 c0 75 10 48 8b 3b 48 83 c3 08 48 89 9d 90 00 00 00 eb 0b 49 8b 38 49 83 c0 08 ....M..u.H.;H...H........I.8I...
19c0 4c 89 45 c0 48 85 ff 75 13 49 0f ba f4 0a 48 8d 3d a3 10 00 00 4c 89 a5 80 00 00 00 8b 5d 80 4c L.E.H..u.I....H.=....L.......].L
19e0 8b 45 88 49 0f ba e4 0b 0f 82 2d fb ff ff 45 33 ed e9 25 fb ff ff 4d 85 c0 75 10 48 8b 0b 48 83 .E.I......-...E3..%...M..u.H..H.
1a00 c3 08 48 89 9d 90 00 00 00 eb 0b 49 8b 08 49 83 c0 08 4c 89 45 c0 48 8d 7d f8 48 85 c9 79 30 48 ..H........I..I...L.E.H.}.H..y0H
1a20 b8 ff ff ff ff ff ff ff 7f 48 8b d1 41 b8 20 00 00 00 48 23 d0 48 8d 42 ff 49 3b c0 77 33 48 8d .........H..A.....H#.H.B.I;.w3H.
1a40 05 bb e5 ff ff 48 8b bc d0 68 29 00 00 eb 15 48 83 f9 05 77 1c 48 8d 05 a4 e5 ff ff 48 8b bc c8 .....H...h)....H...w.H......H...
1a60 40 29 00 00 48 8d 45 f8 48 3b f8 0f 85 14 fd ff ff 45 33 c0 48 89 4c 24 20 4c 8d 0d 7c 10 00 00 @)..H.E.H;.......E3.H.L$.L..|...
1a80 41 8d 50 26 48 8d 4d f8 e8 43 06 00 00 e9 f9 fe ff ff 49 83 e4 d9 49 83 cc 10 49 83 cc 20 49 0f A.P&H.M..C........I...I...I...I.
1aa0 ba ec 07 45 84 e4 78 09 49 83 e4 fd 49 0f ba ec 0e 49 8b d4 83 e2 10 75 1e 4d 85 c0 75 10 48 63 ...E..x.I...I....I.....u.M..u.Hc
1ac0 0b 48 83 c3 08 48 89 9d 90 00 00 00 eb 29 49 63 08 49 83 c0 08 eb 1c 4d 85 c0 75 10 48 8b 0b 48 .H...H.......)Ic.I.....M..u.H..H
1ae0 83 c3 08 48 89 9d 90 00 00 00 eb 0b 49 8b 08 49 83 c0 08 4c 89 45 c0 8b 7d 98 41 f6 c4 04 41 0f ...H........I..I...L.E..}.A...A.
1b00 b6 c7 41 b8 20 00 00 00 40 0f b6 ff 41 0f 45 c0 41 f6 c4 02 44 0f b6 f8 41 8d 40 0b 44 0f 45 f8 ..A.....@...A.E.A...D...A.@.D.E.
1b20 41 f6 c4 08 8d 58 d6 0f 45 fb 44 89 7d a8 89 7d 98 45 84 e4 0f 88 56 01 00 00 8d 43 09 40 84 ff A....X..E.D.}..}.E....V....C.@..
1b40 74 07 49 83 e4 df 44 8b eb 48 85 c9 0f 89 22 01 00 00 49 0f ba e4 0e 0f 82 22 01 00 00 41 b7 2d t.I...D..H...."...I......"...A.-
1b60 49 83 cc 02 48 f7 d9 44 89 7d a8 44 8b 5d 98 4c 8b c1 4c 8d 55 f8 c6 45 f8 00 44 8b c8 4c 8d 3d I...H..D.}.D.].L..L.U..E..D..L.=
1b80 7c e4 ff ff 33 d2 49 8b c0 4c 03 d3 49 f7 f1 4c 8b c0 8b c2 42 8a 84 38 30 29 00 00 41 88 02 4d |...3.I..L..I..L....B..80)..A..M
1ba0 85 c0 75 e0 44 8b 7d a8 48 8d 45 f8 4c 2b d0 4c 89 55 b0 48 85 c9 75 10 49 8b c5 48 f7 d8 48 1b ..u.D.}.H.E.L+.L.U.H..u.I..H..H.
1bc0 c9 4c 23 d1 4c 89 55 b0 49 b8 ab aa aa aa aa aa aa aa 49 8b f2 4a 8d 7c 15 f8 49 8b c0 49 f7 e2 .L#.L.U.I.........I..J.|..I..I..
1be0 48 d1 ea 48 8d 04 52 48 2b f0 48 89 75 d0 74 0c b8 03 00 00 00 48 2b c6 48 89 45 d0 45 84 db 74 H..H..RH+.H.u.t......H+.H.E.E..t
1c00 19 4d 85 d2 74 14 49 8d 4a ff 49 8b c0 48 f7 e1 48 d1 ea 4c 03 d2 4c 89 55 b0 45 84 ff 74 0a 4c .M..t.I.J.I..H..H..L..L.U.E..t.L
1c20 03 d3 4c 03 eb 4c 89 55 b0 4c 8b 45 88 49 0f ba ec 0c b8 20 00 00 00 4c 89 a5 80 00 00 00 44 8a ..L..L.U.L.E.I.........L......D.
1c40 db 44 84 e0 0f 84 c4 00 00 00 44 84 e3 8b 5d 80 0f 85 c5 f8 ff ff 49 0f ba e4 09 0f 83 ba f8 ff .D........D...].......I.........
1c60 ff 49 0f ba e4 0b 0f 82 af f8 ff ff 4d 8b e8 e9 a7 f8 ff ff 49 0f ba e4 0e 0f 83 ec fe ff ff 41 .I..........M.......I..........A
1c80 f6 c4 10 0f 85 e2 fe ff ff 8b c9 e9 db fe ff ff 45 32 db b8 10 00 00 00 44 89 5d 98 48 85 d2 0f ................E2......D.].H...
1ca0 85 ca fe ff ff 48 85 c9 0f 89 c1 fe ff ff 8b c9 e9 ba fe ff ff 48 8d 3d 4c 0e 00 00 4c 2b ca 4c .....H...............H.=L...L+.L
1cc0 89 8d 88 00 00 00 e9 50 f8 ff ff 4c 03 ca 48 8d 3d 2f 0e 00 00 41 0f be 41 01 4c 89 8d 88 00 00 .......P...L..H.=/...A..A.L.....
1ce0 00 c1 e0 08 48 63 c8 41 0f b6 01 48 0b c8 48 23 ce 48 89 4d c8 48 83 f9 0d 0f 84 18 f8 ff ff 4c ....Hc.A...H..H#.H.M.H.........L
1d00 2b ca 4c 89 8d 88 00 00 00 e9 09 f8 ff ff 8b 5d 80 e9 05 f8 ff ff 41 bf ff 00 00 00 49 8b f1 49 +.L............]......A.....I..I
1d20 0f ba e4 0c 73 05 48 f7 de eb 33 45 33 d2 48 8b d7 4d 3b d5 72 07 49 0f ba e4 0b 72 1d 0f be 42 ....s.H...3E3.H..M;.r.I....r...B
1d40 01 c1 e0 08 48 63 c8 0f b6 02 48 0b c8 49 85 cf 74 08 4d 03 d1 48 03 d6 eb d7 4c 89 55 b0 4d 3b ....Hc....H..I..t.M..H....L.U.M;
1d60 ea 4d 0f 42 ea 4c 89 6d b8 4d 8b ec 4c 8b 4d b8 41 81 e5 01 02 00 00 4c 89 6d 20 49 81 fd 00 02 .M.B.L.m.M..L.M.A......L.m.I....
1d80 00 00 75 3f 4d 2b c1 8b c3 8b cb 49 0f af c0 48 01 45 90 49 0f ba e4 0d 72 29 48 8b 55 a0 4d 85 ..u?M+.....I...H.E.I....r)H.U.M.
1da0 f6 74 24 48 89 4c 24 20 41 b9 20 00 00 00 49 8b ce e8 f2 f5 ff ff 4c 8b 55 b0 4c 8b 4d b8 4c 8b .t$H.L$.A.....I.......L.U.L.M.L.
1dc0 f0 eb 04 48 8b 55 a0 45 84 db 0f 84 a2 00 00 00 48 63 45 a8 84 c0 74 43 8b d3 48 01 55 90 49 0f ...H.U.E........HcE...tC..H.U.I.
1de0 ba e4 0d 72 36 4d 85 f6 74 31 4c 8b 4d a0 33 c9 4c 0f be c0 44 8d 59 01 4d 3b f1 73 1e 45 88 06 ...r6M..t1L.M.3.L...D.Y.M;.s.E..
1e00 49 3b d3 74 0b 49 8b c0 48 c1 e8 08 41 88 46 01 49 03 cb 4c 03 f2 49 3b cb 7c dd 48 8b 55 90 4c I;.t.I..H...A.F.I..L..I;.|.H.U.L
1e20 8b 45 b8 8b c3 4d 2b c2 44 8b db 49 8b dc 49 0f af c0 48 03 d0 81 e3 00 20 00 00 48 89 55 90 0f .E...M+.D..I..I...H........H.U..
1e40 85 b7 00 00 00 4d 85 f6 0f 84 ae 00 00 00 48 8b 55 a0 44 8d 4b 30 49 8b ce 4c 89 5c 24 20 e8 45 .....M........H.U.D.K0I..L.\$..E
1e60 f5 ff ff 4c 8b d2 4c 8b f0 48 8b 55 90 e9 8e 00 00 00 8b c3 44 8b db 4d 8b c1 4d 2b c2 49 8b dc ...L..L..H.U........D..M..M+.I..
1e80 49 0f af c0 48 01 45 90 81 e3 00 20 00 00 75 19 4d 85 f6 74 14 44 8d 4b 20 49 8b ce 4c 89 5c 24 I...H.E.......u.M..t.D.K.I..L.\$
1ea0 20 e8 02 f5 ff ff 4c 8b f0 48 63 45 a8 48 8b 55 90 84 c0 74 47 49 03 d3 48 89 55 90 48 85 db 75 ......L..HcE.H.U...tGI..H.U.H..u
1ec0 3b 4c 8b 55 a0 4d 85 f6 74 36 48 0f be d0 33 c9 44 8d 43 01 4d 3b f2 73 90 41 88 16 4d 3b d8 74 ;L.U.M..t6H...3.D.C.M;.s.A..M;.t
1ee0 0b 48 8b c2 48 c1 e8 08 41 88 46 01 49 03 c8 4d 03 f3 49 3b c8 7c dd e9 6d ff ff ff 4c 8b 55 a0 .H..H...A.F.I..M..I;.|..m...L.U.
1f00 4c 8b 4d b0 45 33 c0 44 38 45 a8 41 8d 40 01 44 0f 45 c0 4d 3b c1 0f 83 c5 00 00 00 4c 8b 6d d0 L.M.E3.D8E.A.@.D.E.M;.......L.m.
1f20 44 8b 65 98 0f be 47 01 49 03 d3 c1 e0 08 48 89 55 90 48 63 c8 0f b6 07 48 0b c8 49 23 cf 48 85 D.e...G.I.....H.U.Hc....H..I#.H.
1f40 db 75 36 4d 85 f6 74 31 33 d2 8d 43 01 4d 3b f2 73 23 41 88 0e 4c 3b d8 74 10 48 8b c1 48 c1 e8 .u6M..t13..C.M;.s#A..L;.t.H..H..
1f60 08 41 88 46 01 b8 01 00 00 00 48 03 d0 4d 03 f3 48 3b d0 7c d8 48 8b 55 90 b9 01 00 00 00 48 03 .A.F......H..M..H;.|.H.U......H.
1f80 fe 4c 03 c1 45 84 e4 74 44 4c 03 e9 49 83 fd 03 75 3b 4c 03 c1 45 33 ed 4d 3b c1 73 39 49 03 d3 .L..E..tDL..I...u;L..E3.M;.s9I..
1fa0 48 89 55 90 48 85 db 75 24 4d 85 f6 74 1f 33 c0 4d 3b f2 73 18 41 c6 06 2c 4c 3b d9 74 04 45 88 H.U.H..u$M..t.3.M;.s.A..,L;.t.E.
1fc0 6e 01 48 03 c1 4d 03 f3 48 3b c1 7c e3 4d 3b c1 0f 82 4e ff ff ff 4c 8b a5 80 00 00 00 4c 8b 6d n.H..M..H;.|.M;...N...L......L.m
1fe0 20 49 81 fd 01 02 00 00 75 3a 48 8b 4d 88 49 8b c3 48 2b 4d b8 48 0f af c1 48 03 d0 48 89 55 90 .I......u:H.M.I..H+M.H...H..H.U.
2000 48 85 db 75 1f 4d 85 f6 74 1a 4c 8b c1 44 8d 4b 20 49 8b d2 49 8b ce 4c 89 5c 24 20 e8 87 f3 ff H..u.M..t.L..D.K.I..I..L.\$.....
2020 ff 4c 8b f0 4c 8b 8d 88 00 00 00 48 8b 55 d8 48 8b 75 f0 4c 8b 45 c0 4c 8b 55 a0 8b 5d 80 4c 03 .L..L......H.U.H.u.L.E.L.U..].L.
2040 ca bf 01 00 00 00 41 0f be 41 01 4c 89 8d 88 00 00 00 c1 e0 08 48 63 c8 41 0f b6 01 48 0b c8 48 ......A..A.L.........Hc.A...H..H
2060 23 ce 48 89 4d c8 0f 85 3c f4 ff ff 4c 8b 5d 90 33 d2 8b cb 49 0f ba e4 0d 73 08 49 8b c3 48 f7 #.H.M...<...L.].3...I....s.I..H.
2080 f1 eb 2f 49 8b c6 4e 8d 04 11 49 3b c0 73 17 c6 00 00 48 3b cf 74 04 c6 40 01 00 48 03 d7 48 03 ../I..N...I;.s....H;.t..@..H..H.
20a0 c1 48 3b d7 7c e4 4c 2b 75 e0 49 8b c6 48 99 48 f7 f9 48 8b 9c 24 70 01 00 00 48 81 c4 30 01 00 .H;.|.L+u.I..H.H..H..$p...H..0..
20c0 00 41 5f 41 5e 41 5d 41 5c 5f 5e 5d c3 cc cc cc 4c 89 4c 24 20 48 83 ec 38 48 8d 44 24 60 48 89 .A_A^A]A\_^]....L.L$.H..8H.D$`H.
20e0 44 24 20 e8 f4 f2 ff ff 48 83 c4 38 c3 cc cc cc 45 33 db 48 8b c1 41 b8 00 08 00 00 45 8b d3 48 D$......H..8....E3.H..A.....E..H
2100 85 c9 74 12 66 44 39 18 74 0c 49 ff c2 48 83 c0 02 4d 3b d0 72 ee 4d 2b c2 48 85 c9 75 0b 48 b8 ..t.fD9.t.I..H...M;.r.M+.H..u.H.
2120 02 00 00 00 00 00 00 80 c3 48 85 d2 74 f0 4d 85 c0 75 0b 48 b8 04 00 00 00 00 00 00 80 c3 4c 8b .........H..t.M..u.H..........L.
2140 ca 49 8b c3 4d 85 c0 74 12 66 45 39 19 74 0c 48 ff c0 49 83 c1 02 49 3b c0 72 ee 4c 3b c0 77 0b .I..M..t.fE9.t.H..I...I;.r.L;.w.
2160 48 b8 05 00 00 00 00 00 00 80 c3 48 3b d1 77 0f 48 8d 44 42 02 48 3b c8 72 11 48 3b d1 72 17 48 H..........H;.w.H.DB.H;.r.H;.r.H
2180 8d 81 00 10 00 00 48 3b d0 73 0b 48 b8 0f 00 00 00 00 00 00 80 c3 4a 8d 04 51 eb 0b 66 89 08 48 ......H;.s.H..........J..Q..f..H
21a0 83 c0 02 48 83 c2 02 0f b7 0a 66 85 c9 75 ed 66 44 89 18 33 c0 c3 cc cc 48 89 5c 24 08 48 89 7c ...H......f..u.fD..3....H.\$.H.|
21c0 24 10 33 ff 49 8b d9 4c 8b d9 4c 8b ca 48 8b c1 44 8b d7 48 85 c9 74 16 48 85 d2 74 11 66 39 38 $.3.I..L..L..H..D..H..t.H..t.f98
21e0 74 0c 49 ff c2 48 83 c0 02 4c 3b d2 72 ef 48 8b c2 49 2b c2 48 85 c9 75 0f 48 b8 02 00 00 00 00 t.I..H...L;.r.H..I+.H..u.H......
2200 00 00 80 e9 b6 00 00 00 4d 85 c0 74 ec b9 40 42 0f 00 48 3b d1 77 e2 48 3b d9 77 dd 48 85 d2 74 ........M..t..@B..H;.w.H;.w.H..t
2220 d8 48 85 c0 75 0f 48 b8 04 00 00 00 00 00 00 80 e9 89 00 00 00 49 8b d0 48 8b cf 48 85 c0 74 11 .H..u.H..............I..H..H..t.
2240 66 39 3a 74 0c 48 ff c1 48 83 c2 02 48 3b c8 72 ef 48 3b d8 72 11 48 3b c1 77 0c 48 b8 05 00 00 f9:t.H..H...H;.r.H;.r.H;.w.H....
2260 00 00 00 00 80 eb 57 48 3b cb 48 0f 47 cb 4d 3b c3 77 0f 49 8d 44 48 02 4c 3b d8 72 0e 4d 3b c3 ......WH;.H.G.M;.w.I.DH.L;.r.M;.
2280 72 15 4b 8d 04 4b 4c 3b c0 73 0c 48 b8 0f 00 00 00 00 00 00 80 eb 27 4b 8d 04 53 eb 13 48 85 c9 r.K..KL;.s.H..........'K..S..H..
22a0 74 17 66 89 10 49 83 c0 02 48 83 c0 02 48 ff c9 41 0f b7 10 66 85 d2 75 e4 66 89 38 33 c0 48 8b t.f..I...H...H..A...f..u.f.83.H.
22c0 5c 24 08 48 8b 7c 24 10 c3 cc cc cc 48 83 ec 28 48 8b 05 71 08 00 00 48 8b d1 4c 8d 44 24 38 b9 \$.H.|$.....H..(H..q...H..L.D$8.
22e0 04 00 00 00 ff 50 40 48 8b 4c 24 38 33 d2 48 85 c0 48 0f 48 ca 48 8b c1 48 83 c4 28 c3 cc cc cc .....P@H.L$83.H..H.H.H..H..(....
2300 57 51 48 33 c0 48 8b f9 48 8b ca 48 c1 e9 03 48 83 e2 07 f3 48 ab 8b ca f3 aa 58 5f c3 cc cc cc WQH3.H..H..H...H....H.....X_....
2320 56 57 48 8b f2 48 8b f9 4d 8d 4c 30 ff 48 3b f7 48 8b c7 73 05 4c 3b cf 73 10 49 8b c8 49 83 e0 VWH..H..M.L0.H;.H..s.L;.s.I..I..
2340 07 48 c1 e9 03 f3 48 a5 eb 09 49 8b f1 49 8d 7c 38 ff fd 49 8b c8 f3 a4 fc 5f 5e c3 cc cc cc cc .H....H...I..I.|8..I....._^.....
2360 57 49 8b c0 48 8b f9 48 87 ca f3 aa 48 8b c2 5f c3 cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc WI..H..H....H.._................
2380 56 57 48 8b f1 48 8b fa 49 8b c8 f3 a6 48 0f b6 46 ff 48 0f b6 57 ff 48 2b c2 5f 5e c3 cc cc cc VWH..H..I....H..F.H..W.H+._^....
23a0 57 48 8b f9 49 8b c0 48 87 ca f3 ab 48 8b c2 5f c3 cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc WH..I..H....H.._................
23c0 57 48 8b f9 49 8b c0 48 87 ca f3 48 ab 48 8b c2 5f c3 00 00 00 00 00 00 00 00 00 00 00 00 00 00 WH..I..H...H.H.._...............
23e0 61 df e4 8b ca 93 d2 11 aa 0d 00 e0 98 03 2b 8c 98 76 fa 13 31 c8 c7 49 87 ea 8f 43 fc c2 51 96 a.............+..v..1..I...C..Q.
2400 55 f0 ab 27 b8 b1 26 4c 80 48 74 8f 37 ba a2 df 91 6e 57 09 3f 6d d2 11 8e 39 00 a0 c9 69 72 3b U..'..&L.Ht.7....nW.?m...9...ir;
2420 4e be 79 03 06 d7 7d 43 b0 37 ed b8 2f b7 72 a4 a1 31 1b 5b 62 95 d2 11 8e 3f 00 a0 c9 69 72 3b N.y...}C.7../.r..1.[b....?...ir;
2440 22 5b 4e 96 59 64 d2 11 8e 39 00 a0 c9 69 72 3b 90 d0 b6 7f 55 87 fc 43 84 b5 6e 29 7f 9e c1 cd "[N.Yd...9...ir;....U..C..n)....
2460 c8 24 00 00 00 00 00 00 98 24 00 00 00 00 00 00 90 d0 b6 7f 55 87 fc 43 84 b5 6e 29 7f 9e c1 cd .$.......$..........U..C..n)....
2480 a0 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 56 00 65 00 72 00 61 00 ........................V.e.r.a.
24a0 43 00 72 00 79 00 70 00 74 00 28 00 44 00 43 00 53 00 29 00 20 00 6c 00 6f 00 61 00 64 00 65 00 C.r.y.p.t.(.D.C.S.)...l.o.a.d.e.
24c0 72 00 00 00 00 00 00 00 45 00 46 00 49 00 5c 00 56 00 65 00 72 00 61 00 43 00 72 00 79 00 70 00 r.......E.F.I.\.V.e.r.a.C.r.y.p.
24e0 74 00 5c 00 44 00 63 00 73 00 42 00 6f 00 6f 00 74 00 2e 00 65 00 66 00 69 00 00 00 00 00 00 00 t.\.D.c.s.B.o.o.t...e.f.i.......
2500 42 00 6f 00 6f 00 74 00 44 00 43 00 35 00 42 00 00 00 00 00 00 00 00 00 42 00 6f 00 6f 00 74 00 B.o.o.t.D.C.5.B.........B.o.o.t.
2520 00 00 00 00 00 00 00 00 42 00 6f 00 6f 00 74 00 4f 00 72 00 64 00 65 00 72 00 00 00 00 00 00 00 ........B.o.o.t.O.r.d.e.r.......
2540 42 00 6f 00 6f 00 74 00 4e 00 65 00 78 00 74 00 00 00 00 00 00 00 00 00 25 00 45 00 49 00 6e 00 B.o.o.t.N.e.x.t.........%.E.I.n.
2560 73 00 74 00 61 00 6c 00 6c 00 20 00 70 00 72 00 6f 00 74 00 6f 00 63 00 6f 00 6c 00 20 00 25 00 s.t.a.l.l...p.r.o.t.o.c.o.l...%.
2580 72 00 0a 00 25 00 4e 00 00 00 00 00 00 00 00 00 25 00 45 00 41 00 6c 00 6c 00 6f 00 63 00 61 00 r...%.N.........%.E.A.l.l.o.c.a.
25a0 74 00 65 00 20 00 72 00 75 00 6e 00 74 00 69 00 6d 00 65 00 20 00 67 00 6c 00 6f 00 62 00 61 00 t.e...r.u.n.t.i.m.e...g.l.o.b.a.
25c0 6c 00 73 00 20 00 25 00 72 00 0a 00 25 00 4e 00 00 00 00 00 00 00 00 00 25 00 45 00 52 00 65 00 l.s...%.r...%.N.........%.E.R.e.
25e0 67 00 69 00 73 00 74 00 65 00 72 00 20 00 6e 00 6f 00 74 00 69 00 66 00 79 00 20 00 25 00 72 00 g.i.s.t.e.r...n.o.t.i.f.y...%.r.
2600 0a 00 25 00 4e 00 00 00 7f ff 04 00 00 00 00 00 25 00 25 00 4e 00 00 00 25 00 4e 00 00 00 00 00 ..%.N...........%.%.N...%.N.....
2620 25 00 25 00 45 00 00 00 25 00 45 00 00 00 00 00 25 00 25 00 48 00 00 00 25 00 48 00 00 00 00 00 %.%.E...%.E.....%.%.H...%.H.....
2640 25 00 25 00 42 00 00 00 25 00 42 00 00 00 00 00 25 00 25 00 56 00 00 00 25 00 56 00 00 00 00 00 %.%.B...%.B.....%.%.V...%.V.....
2660 25 00 00 00 00 00 00 00 43 6f 6d 70 72 6f 6d 69 73 65 64 20 44 61 74 61 00 00 00 00 00 00 00 00 %.......Compromised.Data........
2680 49 6e 76 61 6c 69 64 20 4c 61 6e 67 75 61 67 65 00 00 00 00 00 00 00 00 45 6e 64 20 6f 66 20 46 Invalid.Language........End.of.F
26a0 69 6c 65 00 00 00 00 00 52 65 73 65 72 76 65 64 20 28 33 30 29 00 00 00 52 65 73 65 72 76 65 64 ile.....Reserved.(30)...Reserved
26c0 20 28 32 39 29 00 00 00 45 6e 64 20 6f 66 20 4d 65 64 69 61 00 00 00 00 43 52 43 20 45 72 72 6f .(29)...End.of.Media....CRC.Erro
26e0 72 00 00 00 00 00 00 00 53 65 63 75 72 69 74 79 20 56 69 6f 6c 61 74 69 6f 6e 00 00 00 00 00 00 r.......Security.Violation......
2700 49 6e 63 6f 6d 70 61 74 69 62 6c 65 20 56 65 72 73 69 6f 6e 00 00 00 00 50 72 6f 74 6f 63 6f 6c Incompatible.Version....Protocol
2720 20 45 72 72 6f 72 00 00 54 46 54 50 20 45 72 72 6f 72 00 00 00 00 00 00 49 43 4d 50 20 45 72 72 .Error..TFTP.Error......ICMP.Err
2740 6f 72 00 00 00 00 00 00 41 62 6f 72 74 65 64 00 41 6c 72 65 61 64 79 20 73 74 61 72 74 65 64 00 or......Aborted.Already.started.
2760 4e 6f 74 20 73 74 61 72 74 65 64 00 00 00 00 00 54 69 6d 65 20 6f 75 74 00 00 00 00 00 00 00 00 Not.started.....Time.out........
2780 4e 6f 20 6d 61 70 70 69 6e 67 00 00 00 00 00 00 4e 6f 20 52 65 73 70 6f 6e 73 65 00 00 00 00 00 No.mapping......No.Response.....
27a0 41 63 63 65 73 73 20 44 65 6e 69 65 64 00 00 00 4e 6f 74 20 46 6f 75 6e 64 00 00 00 00 00 00 00 Access.Denied...Not.Found.......
27c0 4d 65 64 69 61 20 63 68 61 6e 67 65 64 00 00 00 4e 6f 20 4d 65 64 69 61 00 00 00 00 00 00 00 00 Media.changed...No.Media........
27e0 56 6f 6c 75 6d 65 20 46 75 6c 6c 00 00 00 00 00 56 6f 6c 75 6d 65 20 43 6f 72 72 75 70 74 00 00 Volume.Full.....Volume.Corrupt..
2800 4f 75 74 20 6f 66 20 52 65 73 6f 75 72 63 65 73 00 00 00 00 00 00 00 00 57 72 69 74 65 20 50 72 Out.of.Resources........Write.Pr
2820 6f 74 65 63 74 65 64 00 44 65 76 69 63 65 20 45 72 72 6f 72 00 00 00 00 4e 6f 74 20 52 65 61 64 otected.Device.Error....Not.Read
2840 79 00 00 00 00 00 00 00 42 75 66 66 65 72 20 54 6f 6f 20 53 6d 61 6c 6c 00 00 00 00 00 00 00 00 y.......Buffer.Too.Small........
2860 42 61 64 20 42 75 66 66 65 72 20 53 69 7a 65 00 55 6e 73 75 70 70 6f 72 74 65 64 00 00 00 00 00 Bad.Buffer.Size.Unsupported.....
2880 49 6e 76 61 6c 69 64 20 50 61 72 61 6d 65 74 65 72 00 00 00 00 00 00 00 4c 6f 61 64 20 45 72 72 Invalid.Parameter.......Load.Err
28a0 6f 72 00 00 00 00 00 00 57 61 72 6e 69 6e 67 20 53 74 61 6c 65 20 44 61 74 61 00 00 00 00 00 00 or......Warning.Stale.Data......
28c0 57 61 72 6e 69 6e 67 20 42 75 66 66 65 72 20 54 6f 6f 20 53 6d 61 6c 6c 00 00 00 00 00 00 00 00 Warning.Buffer.Too.Small........
28e0 57 61 72 6e 69 6e 67 20 57 72 69 74 65 20 46 61 69 6c 75 72 65 00 00 00 57 61 72 6e 69 6e 67 20 Warning.Write.Failure...Warning.
2900 44 65 6c 65 74 65 20 46 61 69 6c 75 72 65 00 00 57 61 72 6e 69 6e 67 20 55 6e 6b 6e 6f 77 6e 20 Delete.Failure..Warning.Unknown.
2920 47 6c 79 70 68 00 00 00 53 75 63 63 65 73 73 00 30 31 32 33 34 35 36 37 38 39 41 42 43 44 45 46 Glyph...Success.0123456789ABCDEF
2940 28 29 00 00 00 00 00 00 10 29 00 00 00 00 00 00 f8 28 00 00 00 00 00 00 e0 28 00 00 00 00 00 00 ().......).......(.......(......
2960 c0 28 00 00 00 00 00 00 a8 28 00 00 00 00 00 00 98 28 00 00 00 00 00 00 80 28 00 00 00 00 00 00 .(.......(.......(.......(......
2980 70 28 00 00 00 00 00 00 60 28 00 00 00 00 00 00 48 28 00 00 00 00 00 00 38 28 00 00 00 00 00 00 p(......`(......H(......8(......
29a0 28 28 00 00 00 00 00 00 18 28 00 00 00 00 00 00 00 28 00 00 00 00 00 00 f0 27 00 00 00 00 00 00 ((.......(.......(.......'......
29c0 e0 27 00 00 00 00 00 00 d0 27 00 00 00 00 00 00 c0 27 00 00 00 00 00 00 b0 27 00 00 00 00 00 00 .'.......'.......'.......'......
29e0 a0 27 00 00 00 00 00 00 90 27 00 00 00 00 00 00 80 27 00 00 00 00 00 00 70 27 00 00 00 00 00 00 .'.......'.......'......p'......
2a00 60 27 00 00 00 00 00 00 50 27 00 00 00 00 00 00 48 27 00 00 00 00 00 00 38 27 00 00 00 00 00 00 `'......P'......H'......8'......
2a20 28 27 00 00 00 00 00 00 18 27 00 00 00 00 00 00 00 27 00 00 00 00 00 00 e8 26 00 00 00 00 00 00 ('.......'.......'.......&......
2a40 d8 26 00 00 00 00 00 00 c8 26 00 00 00 00 00 00 b8 26 00 00 00 00 00 00 a8 26 00 00 00 00 00 00 .&.......&.......&.......&......
2a60 98 26 00 00 00 00 00 00 80 26 00 00 00 00 00 00 68 26 00 00 00 00 00 00 3c 6e 75 6c 6c 20 73 74 .&.......&......h&......<null.st
2a80 72 69 6e 67 3e 00 00 00 3c 6e 75 6c 6c 20 67 75 69 64 3e 00 00 00 00 00 25 30 38 78 2d 25 30 34 ring>...<null.guid>.....%08x-%04
2aa0 78 2d 25 30 34 78 2d 25 30 32 78 25 30 32 78 2d 25 30 32 78 25 30 32 78 25 30 32 78 25 30 32 78 x-%04x-%02x%02x-%02x%02x%02x%02x
2ac0 25 30 32 78 25 30 32 78 00 00 00 00 00 00 00 00 3c 6e 75 6c 6c 20 74 69 6d 65 3e 00 00 00 00 00 %02x%02x........<null.time>.....
2ae0 25 30 32 64 2f 25 30 32 64 2f 25 30 34 64 20 20 25 30 32 64 3a 25 30 32 64 00 00 00 25 30 38 58 %02d/%02d/%04d..%02d:%02d...%08X
2b00 00 00 00 00 0d 0a 00 00 0d 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2ba0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2bc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2be0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2ca0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2cc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2ce0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2d00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2d20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2d40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2d60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2d80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2da0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2dc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2de0 00 20 00 00 5c 00 00 00 60 a4 68 a4 80 a4 40 a9 48 a9 50 a9 58 a9 60 a9 68 a9 70 a9 78 a9 80 a9 ....\...`.h...@.H.P.X.`.h.p.x...
2e00 88 a9 90 a9 98 a9 a0 a9 a8 a9 b0 a9 b8 a9 c0 a9 c8 a9 d0 a9 d8 a9 e0 a9 e8 a9 f0 a9 f8 a9 00 aa ................................
2e20 08 aa 10 aa 18 aa 20 aa 28 aa 30 aa 38 aa 40 aa 48 aa 50 aa 58 aa 60 aa 68 aa 70 aa 00 00 00 00 ........(.0.8.@.H.P.X.`.h.p.....
2e40 a0 05 00 00 00 02 02 00 30 82 05 91 06 09 2a 86 48 86 f7 0d 01 07 02 a0 82 05 82 30 82 05 7e 02 ........0.....*.H..........0..~.
2e60 01 01 31 0f 30 0d 06 09 60 86 48 01 65 03 04 02 01 05 00 30 5c 06 0a 2b 06 01 04 01 82 37 02 01 ..1.0...`.H.e......0\..+.....7..
2e80 04 a0 4e 30 4c 30 17 06 0a 2b 06 01 04 01 82 37 02 01 0f 30 09 03 01 00 a0 04 a2 02 80 00 30 31 ..N0L0...+.....7...0..........01
2ea0 30 0d 06 09 60 86 48 01 65 03 04 02 01 05 00 04 20 47 42 07 5a 36 50 fe ec 52 5e 09 ea 17 dd 90 0...`.H.e........GB.Z6P..R^.....
2ec0 0c 1d f1 b3 ae 4c a3 92 67 c6 ee 1e 52 f3 9d 40 0d a0 82 03 3a 30 82 03 36 30 82 02 1e a0 03 02 .....L..g...R..@....:0..60......
2ee0 01 02 02 10 ce a9 2c 3a e6 39 31 84 41 ac 9f cf 20 91 dd e6 30 0d 06 09 2a 86 48 86 f7 0d 01 01 ......,:.91.A.......0...*.H.....
2f00 0b 05 00 30 2b 31 29 30 27 06 03 55 04 03 1e 20 00 44 00 43 00 53 00 5f 00 6b 00 65 00 79 00 5f ...0+1)0'..U.....D.C.S._.k.e.y._
2f20 00 65 00 78 00 63 00 68 00 6e 00 61 00 67 00 65 30 1e 17 0d 31 36 30 38 30 39 30 38 33 38 31 33 .e.x.c.h.n.a.g.e0...160809083813
2f40 5a 17 0d 33 31 30 38 30 39 30 38 33 38 31 32 5a 30 1b 31 19 30 17 06 03 55 04 03 1e 10 00 44 00 Z..310809083812Z0.1.0...U.....D.
2f60 43 00 53 00 5f 00 73 00 69 00 67 00 6e 30 82 01 22 30 0d 06 09 2a 86 48 86 f7 0d 01 01 01 05 00 C.S._.s.i.g.n0.."0...*.H........
2f80 03 82 01 0f 00 30 82 01 0a 02 82 01 01 00 ba c7 1a fd 92 8f 2d a6 a9 5e ae e6 c3 31 58 30 25 bb .....0..............-..^...1X0%.
2fa0 5e a9 58 4b fa 7c 75 44 10 a6 6e 1e 59 64 9a 83 d9 42 a1 22 c0 ef a9 0f 84 89 bc a5 ca bb 03 bd ^.XK.|uD..n.Yd...B."............
2fc0 a7 cd 20 70 56 5e 16 32 41 c1 38 03 46 4d 69 3b 36 08 51 10 39 e5 2d fb 4a 68 16 73 eb bd b5 32 ...pV^.2A.8.FMi;6.Q.9.-.Jh.s...2
2fe0 35 a1 01 c4 e3 e8 29 61 ac cc d3 09 5c e4 74 7a 2d a7 59 25 6f 49 6b fb 2d bd d0 0c f5 83 1a 54 5.....)a....\.tz-.Y%oIk.-......T
3000 50 bf c2 4f d8 fa a0 aa c7 32 4f 5d f7 4d ba 68 80 fe 80 f8 93 fd 4a 42 1a 4f ff b2 fa 15 18 b7 P..O.....2O].M.h......JB.O......
3020 97 bd 7b 26 a0 0a a0 2a 63 8d 45 5b ba 29 b7 02 ad 2d 8d 23 80 60 44 09 40 d0 ff 9b 7b b8 b8 bc ..{&...*c.E[.)...-.#.`D.@...{...
3040 4d 85 c7 92 08 7e 0c 7c 32 3a 2c 75 90 99 f6 89 38 a4 b2 11 68 37 b2 a0 56 80 91 5e 31 49 9e 17 M....~.|2:,u....8...h7..V..^1I..
3060 9c 23 5a 14 22 07 4c c3 ef 18 e7 9c 02 d4 32 4d 05 78 a5 41 0d c3 bf 87 d9 64 dc b8 d5 c2 9d 8f .#Z.".L.......2M.x.A.....d......
3080 26 17 b4 a9 c0 e7 10 7b 6f a7 a9 4b 4b 29 02 03 01 00 01 a3 66 30 64 30 0c 06 03 55 1d 13 01 01 &......{o..KK)......f0d0...U....
30a0 ff 04 02 30 00 30 54 06 03 55 1d 01 04 4d 30 4b 80 10 7d aa fa f4 17 d5 40 88 93 77 48 d5 b0 be ...0.0T..U...M0K..}.....@..wH...
30c0 14 12 a1 25 30 23 31 21 30 1f 06 03 55 04 03 1e 18 00 44 00 43 00 53 00 5f 00 70 00 6c 00 61 00 ...%0#1!0...U.....D.C.S._.p.l.a.
30e0 74 00 66 00 6f 00 72 00 6d 82 10 8d 64 69 e0 25 64 87 89 4a 61 9f c9 e4 3b e7 83 30 0d 06 09 2a t.f.o.r.m...di.%d..Ja...;..0...*
3100 86 48 86 f7 0d 01 01 0b 05 00 03 82 01 01 00 6c 6a df 3e 93 7c c1 10 67 d0 3a 96 ac f6 5e 8c 7f .H.............lj.>.|..g.:...^..
3120 71 1d 2c 7a d5 10 f9 db bf 26 50 38 1b 7f 12 9b 14 7c ed 33 ab 66 18 a1 97 09 22 af b8 38 47 b7 q.,z.....&P8.....|.3.f...."..8G.
3140 26 3d 9b 9d 3d 1b cb 89 aa 0c 80 26 cf f7 2b 1e 6c ef 13 6f 47 49 29 79 af 41 8f fd 25 b0 16 77 &=..=......&..+.l..oGI)y.A..%..w
3160 35 11 7b 81 b8 18 f5 d6 ec bd 68 ff 14 1a dc 59 23 e2 0c 24 e8 e0 a2 ff 82 9e 2b 69 e6 97 54 eb 5.{.......h....Y#..$......+i..T.
3180 0e bc 49 52 76 7c 6b e3 c4 8c 0b 65 0a 3c 11 d4 4e 83 bc e8 35 65 a6 42 70 fc 03 7d b4 7c b3 6b ..IRv|k....e.<..N...5e.Bp..}.|.k
31a0 4c 31 f6 f6 20 a7 ef b9 7c 37 d1 61 ed 3c 2f f6 70 94 30 ae 9f aa 68 0d 29 33 94 68 f7 d6 b2 c5 L1......|7.a.</.p.0...h.)3.h....
31c0 7c 28 fb fe 47 d6 23 af a4 8b 2f 78 0b 59 61 6f 84 24 4f a6 8a 16 7c c7 c8 9d 13 a4 aa ba e6 da |(..G.#.../x.Yao.$O...|.........
31e0 c6 f9 c4 03 af 4c 46 b4 09 5f e9 08 d4 6d 36 82 65 e2 0d f6 38 ed 0e 06 df 5b 6e e7 04 da 5b c8 .....LF.._...m6.e...8....[n...[.
3200 ca df d3 76 6e 13 52 02 e2 7c b5 40 b5 ef 59 31 82 01 ca 30 82 01 c6 02 01 01 30 3f 30 2b 31 29 ...vn.R..|.@..Y1...0......0?0+1)
3220 30 27 06 03 55 04 03 1e 20 00 44 00 43 00 53 00 5f 00 6b 00 65 00 79 00 5f 00 65 00 78 00 63 00 0'..U.....D.C.S._.k.e.y._.e.x.c.
3240 68 00 6e 00 61 00 67 00 65 02 10 ce a9 2c 3a e6 39 31 84 41 ac 9f cf 20 91 dd e6 30 0d 06 09 60 h.n.a.g.e....,:.91.A.......0...`
3260 86 48 01 65 03 04 02 01 05 00 a0 5e 30 10 06 0a 2b 06 01 04 01 82 37 02 01 0c 31 02 30 00 30 19 .H.e.......^0...+.....7...1.0.0.
3280 06 09 2a 86 48 86 f7 0d 01 09 03 31 0c 06 0a 2b 06 01 04 01 82 37 02 01 04 30 2f 06 09 2a 86 48 ..*.H......1...+.....7...0/..*.H
32a0 86 f7 0d 01 09 04 31 22 04 20 95 b7 03 d6 47 31 b4 36 69 4c e3 2b e2 44 c1 29 c5 d1 6a 1d fe e2 ......1"......G1.6iL.+.D.)..j...
32c0 9f 14 80 6b e3 21 b8 5a b9 fa 30 0d 06 09 2a 86 48 86 f7 0d 01 01 01 05 00 04 82 01 00 6d fa f4 ...k.!.Z..0...*.H............m..
32e0 40 4d 6d 6f 2f 3e 21 56 22 de 8a 28 2b ad 6f 8b 1e a3 a6 14 ef 51 4c 52 e2 3e 71 7e ea 63 12 3d @Mmo/>!V"..(+.o......QLR.>q~.c.=
3300 e2 e9 91 a7 68 f2 3b f2 0c 39 32 bc 1d b6 98 f1 01 b5 cb 20 94 25 9a 4d 9f 03 4d 60 13 81 4c 39 ....h.;..92..........%.M..M`..L9
3320 a7 1f 46 1a 77 ae 83 69 9b 37 94 31 eb 30 0c 86 1e 91 11 18 4a 5a 01 62 c8 60 b7 c8 21 ba 80 22 ..F.w..i.7.1.0......JZ.b.`..!.."
3340 8c 61 40 b1 27 cf b6 42 09 ac 56 9a d1 b5 f9 48 bf bd 55 c4 6b c9 d3 c6 11 83 77 83 a7 46 3a 79 .a@.'..B..V....H..U.k.....w..F:y
3360 e6 8b 8c 7f 0d 1b 41 81 8b 1b ea ea 11 78 01 92 67 cd c4 c5 58 4a df d4 bb 1c ae 6f cd d6 6f 67 ......A......x..g...XJ.....o..og
3380 75 a9 b9 6b ec a7 d0 cc 10 a7 d5 9e 7d 7e dc 61 7a 5a 9b ce 99 93 5b 8f 12 ee 86 35 7e 17 4e 79 u..k........}~.azZ....[....5~.Ny
33a0 c2 c9 90 38 24 ce 26 ab 1a 57 38 15 ca 67 a9 79 f5 44 9b 24 b5 d0 ff e3 5c a6 4e d2 20 2c 80 87 ...8$.&..W8..g.y.D.$....\.N..,..
33c0 ff 90 a1 d9 2e 39 5f f2 e4 f3 35 e2 2f 31 a0 bb 0a 1e 3a 7b 58 aa da 51 fa 53 26 9a 5c 00 00 00 .....9_...5./1....:{X..Q.S&.\...
Msg, WPARAM wParam, LPARAM lParam);
int DriverAttach ( void );
BOOL CALLBACK CipherTestDialogProc ( HWND hwndDlg , UINT uMsg , WPARAM wParam , LPARAM lParam );
void ResetCipherTest ( HWND hwndDlg , int idTestCipher );
void ResetCurrentDirectory ();
BOOL BrowseFiles (HWND hwndDlg, char *stringId, wchar_t *lpszFileName, BOOL keepHistory, BOOL saveMode, wchar_t *browseFilter);
+BOOL BrowseFile (HWND hwndDlg, char *stringId, wchar_t *initialDir);
BOOL BrowseDirectories (HWND hWnd, char *lpszTitle, wchar_t *dirName);
void handleError ( HWND hwndDlg , int code, const char* srcPos );
BOOL CheckFileStreamWriteErrors (HWND hwndDlg, FILE *file, const wchar_t *fileName);
void LocalizeDialog ( HWND hwnd, char *stringId );
void OpenVolumeExplorerWindow (int driveNo);
static BOOL CALLBACK CloseVolumeExplorerWindowsEnum( HWND hwnd, LPARAM driveNo);
BOOL CloseVolumeExplorerWindows (HWND hwnd, int driveNo);
BOOL UpdateDriveCustomLabel (int driveNo, wchar_t* effectiveLabel, BOOL bSetValue);
BOOL CheckCapsLock (HWND hwnd, BOOL quiet);
BOOL CheckFileExtension (wchar_t *fileName);
diff --git a/src/Common/Language.xml b/src/Common/Language.xml
index e4ceac7a..9ac6ce1b 100644
--- a/src/Common/Language.xml
+++ b/src/Common/Language.xml
@@ -1,18 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<VeraCrypt>
<localization prog-version="1.24-Update8">
<language langid="en" name="English" en-name="English" version="0.0.0" translators="TrueCrypt/VeraCrypt Teams" />
<font lang="en" class="normal" size="11" face="default" />
<font lang="en" class="bold" size="13" face="Arial" />
<font lang="en" class="fixed" size="12" face="Lucida Console" />
<font lang="en" class="title" size="21" face="Times New Roman" />
+
<entry lang="en" key="IDCANCEL">Cancel</entry>
<entry lang="en" key="IDC_ALL_USERS">Install &amp;for all users</entry>
<entry lang="en" key="IDC_BROWSE">Bro&amp;wse...</entry>
<entry lang="en" key="IDC_DESKTOP_ICON">Add VeraCrypt icon to &amp;desktop</entry>
<entry lang="en" key="IDC_DONATE">Donate now...</entry>
<entry lang="en" key="IDC_FILE_TYPE">Associate the .hc file &amp;extension with VeraCrypt</entry>
<entry lang="en" key="IDC_OPEN_CONTAINING_FOLDER">&amp;Open the destination location when finished</entry>
<entry lang="en" key="IDC_PROG_GROUP">Add VeraCrypt to &amp;Start menu</entry>
<entry lang="en" key="IDC_SYSTEM_RESTORE">Create System &amp;Restore point</entry>
<entry lang="en" key="IDC_UNINSTALL">&amp;Uninstall</entry>
@@ -51,33 +52,33 @@
<entry lang="en" key="IDC_MB">&amp;MiB</entry>
<entry lang="en" key="IDC_MORE_INFO_ON_CONTAINERS">More information</entry>
<entry lang="en" key="IDC_MORE_INFO_ON_SYS_ENCRYPTION">More information about system encryption</entry>
<entry lang="en" key="IDC_MORE_INFO_SYS_ENCRYPTION">More information</entry>
<entry lang="en" key="IDC_MULTI_BOOT">Multi-Boot</entry>
<entry lang="en" key="IDC_NONSYS_DEVICE">Encrypt a non-system partition/drive</entry>
<entry lang="en" key="IDC_NO_HISTORY">&amp;Never save history</entry>
<entry lang="en" key="IDC_OPEN_OUTER_VOLUME">Open Outer Volume</entry>
<entry lang="en" key="IDC_PAUSE">&amp;Pause</entry>
<entry lang="en" key="IDC_PIM_ENABLE">Use P&amp;IM</entry>
- <entry lang="en" key="IDC_NEW_PIM_ENABLE">Use PIM</entry>
+ <entry lang="en" key="IDC_NEW_PIM_ENABLE">Modify PIM</entry>
<entry lang="en" key="IDC_QUICKFORMAT">Quick Format</entry>
<entry lang="en" key="IDC_SHOW_PASSWORD">&amp;Display password</entry>
<entry lang="en" key="IDC_SHOW_PASSWORD_SINGLE">&amp;Display password</entry>
<entry lang="en" key="IDC_SHOW_PIM">&amp;Display PIM</entry>
<entry lang="en" key="IDC_SINGLE_BOOT">Single-boot</entry>
<entry lang="en" key="IDC_STD_VOL">Standard VeraCrypt volume</entry>
<entry lang="en" key="IDC_SYSENC_HIDDEN">Hi&amp;dden</entry>
<entry lang="en" key="IDC_SYSENC_NORMAL">Normal</entry>
<entry lang="en" key="IDC_SYS_DEVICE">Encrypt the system partition or entire system drive</entry>
<entry lang="en" key="IDC_SYS_PARTITION">Encrypt the Windows system partition</entry>
<entry lang="en" key="IDC_WHOLE_SYS_DRIVE">Encrypt the whole drive</entry>
- <entry lang="en" key="IDD_VOL_CREATION_WIZARD_DLG">VeraCrypt Volume Creation Wizard</entry>
+ <entry lang="en" key="IDD_VOL_CREATION_WIZARD_DLG">VeraCrypt Wizard</entry>
<entry lang="en" key="IDT_CLUSTER">Cluster </entry>
<entry lang="en" key="IDT_COLLECTING_RANDOM_DATA_NOTE">IMPORTANT: Move your mouse as randomly as possible within this window. The longer you move it, the better. This significantly increases the cryptographic strength of the encryption keys. Then click Next to continue.</entry>
<entry lang="en" key="IDT_CONFIRM">&amp;Confirm:</entry>
<entry lang="en" key="IDT_DONE">Done</entry>
<entry lang="en" key="IDT_DRIVE_LETTER">Drive letter:</entry>
<entry lang="en" key="IDT_ENCRYPTION_ALGO">Encryption Algorithm</entry>
<entry lang="en" key="IDT_FILESYSTEM">Filesystem </entry>
<entry lang="en" key="IDT_FILE_CONTAINER">Creates a virtual encrypted disk within a file. Recommended for inexperienced users.</entry>
<entry lang="en" key="IDT_FORMAT_OPTIONS">Options</entry>
<entry lang="en" key="IDT_HASH_ALGO">Hash Algorithm</entry>
@@ -93,21 +94,21 @@
<entry lang="en" key="IDT_OLD_PIM">Volume PIM:</entry>
<entry lang="en" key="IDT_PROGRESS">Progress:</entry>
<entry lang="en" key="IDT_RANDOM_POOL">Random Pool: </entry>
<entry lang="en" key="IDT_SINGLE_BOOT">Select this option if there is only one operating system installed on this computer (even if it has multiple users).</entry>
<entry lang="en" key="IDT_SPEED">Speed</entry>
<entry lang="en" key="IDT_STATUS">Status</entry>
<entry lang="en" key="IDT_SYSENC_KEYS_GEN_INFO">The keys, salt, and other data have been successfully generated. If you want to generate new keys, click Back and then Next. Otherwise, click Next to continue.</entry>
<entry lang="en" key="IDT_SYS_DEVICE">Encrypts the partition/drive where Windows is installed. Anyone who wants to gain access and use the system, read and write files, etc., will need to enter the correct password each time before Windows boots. Optionally, creates a hidden system.</entry>
<entry lang="en" key="IDT_SYS_PARTITION">Select this option to encrypt the partition where the currently running Windows operating system is installed.</entry>
<entry lang="en" key="IDT_VOLUME_LABEL">Volume Label in Windows:</entry>
- <entry lang="en" key="IDT_WIPE_MODE">Wipe mode:</entry>
+ <entry lang="en" key="IDT_WIPE_MODE">Wipe Mode</entry>
<entry lang="en" key="IDCLOSE">Close</entry>
<entry lang="en" key="IDC_ALLOW_ESC_PBA_BYPASS">Allow pre-boot &amp;authentication to be bypassed by pressing the Esc key (enables boot manager)</entry>
<entry lang="en" key="IDC_AUTORUN_DISABLE">Do nothing</entry>
<entry lang="en" key="IDC_AUTORUN_MOUNT">&amp;Auto-mount VeraCrypt volume (specified below)</entry>
<entry lang="en" key="IDC_AUTORUN_START">&amp;Start VeraCrypt</entry>
<entry lang="en" key="IDC_AUTO_DETECT_PKCS11_MODULE">Auto-&amp;Detect Library</entry>
<entry lang="en" key="IDC_BOOT_LOADER_CACHE_PASSWORD">&amp;Cache pre-boot authentication password in driver memory (for mounting of non-system volumes)</entry>
<entry lang="en" key="IDC_BROWSE_DIRS">Browse...</entry>
<entry lang="en" key="IDC_BROWSE_FILES">Browse...</entry>
<entry lang="en" key="IDC_CACHE">Cache passwords and keyfil&amp;es in memory</entry>
@@ -481,21 +482,21 @@
<entry lang="en" key="FILESYS_PAGE_TITLE">Large Files</entry>
<entry lang="en" key="FILESYS_PAGE_HELP_QUESTION">Do you intend to store files larger than 4 GiB in this VeraCrypt volume?</entry>
<entry lang="en" key="FILESYS_PAGE_HELP_EXPLANATION">Depending on your choice above, VeraCrypt will choose a suitable default file system for the VeraCrypt volume (you will be able to select a file system in the next step).</entry>
<entry lang="en" key="FILESYS_PAGE_HELP_EXPLANATION_HIDVOL">As you are creating an outer volume, you should consider choosing 'No'. If you choose 'Yes', the default filesystem will be NTFS, which is not as suitable for outer volumes as FAT/exFAT (for example, the maximum possible size of the hidden volume will be significantly greater if the outer volume is formatted as FAT/exFAT). Normally, FAT is the default for both hidden and normal volumes (so FAT volumes are not suspicious). However, if the user indicates intent to store files larger than 4 GiB (which the FAT file system does not allow), then FAT is not the default.</entry>
<entry lang="en" key="FILESYS_PAGE_HELP_EXPLANATION_HIDVOL_CONFIRM">Are you sure you want to choose 'Yes'?</entry>
<entry lang="en" key="DEVICE_TRANSFORM_MODE_PAGE_TITLE">Volume Creation Mode</entry>
<entry lang="en" key="DEVICE_TRANSFORM_MODE_PAGE_FORMAT_HELP">This is the fastest way to create a partition-hosted or device-hosted VeraCrypt volume (in-place encryption, which is the other option, is slower because content of each sector has to be first read, encrypted, and then written). Any data currently stored on the selected partition/device will be lost (the data will NOT be encrypted; it will be overwritten with random data). If you want to encrypt existing data on a partition, choose the other option.</entry>
<entry lang="en" key="DEVICE_TRANSFORM_MODE_PAGE_INPLACE_HELP">The entire selected partition and all data stored on it will be encrypted in place. If the partition is empty, you should choose the other option (the volume will be created much faster).</entry>
<entry lang="en" key="NOTE_BEGINNING">Note: </entry>
<entry lang="en" key="RESUME">&amp;Resume</entry>
- <entry lang="en" key="DEFER">&amp;Defer</entry>
+ <entry lang="en" key="DEFER">&amp;Cancel</entry>
<entry lang="en" key="START">&amp;Start</entry>
<entry lang="en" key="CONTINUE">&amp;Continue</entry>
<entry lang="en" key="FORMAT">&amp;Format</entry>
<entry lang="en" key="WIPE">&amp;Wipe</entry>
<entry lang="en" key="FORMAT_ABORT">Abort format?</entry>
<entry lang="en" key="SHOW_MORE_INFORMATION">Show more information</entry>
<entry lang="en" key="DO_NOT_SHOW_THIS_AGAIN">Do not show this again</entry>
<entry lang="en" key="WIPE_FINISHED">The content of the partition/device has been successfully erased.</entry>
<entry lang="en" key="WIPE_FINISHED_DECOY_SYSTEM_PARTITION">The content of the partition where the original system (of which the hidden system is a clone) resided has been successfully erased.</entry>
<entry lang="en" key="DECOY_OS_VERSION_WARNING">Please make sure the version of Windows you are going to install (on the wiped partition) is the same as the version of Windows you are currently running. This is required due to the fact that both systems will share a common boot partition.</entry>
@@ -1099,21 +1100,21 @@
<entry lang="en" key="EXTRA_BOOT_PARTITION_REMOVAL_INSTRUCTIONS">\nThe extra boot partition can be removed before installing Windows. To do so, follow these steps:\n\n1) Boot your Windows installation disc.\n\n2) In the Windows installer screen, click 'Install now' > 'Custom (advanced)'.\n\n3) Click 'Drive Options'.\n\n4) Select the main system partition and delete it by clicking 'Delete' and 'OK'.\n\n5) Select the 'System Reserved' partition, click 'Extend', and increase its size so that the operating system can be installed to it.\n\n6) Click 'Apply' and 'OK'.\n\n7) Install Windows on the 'System Reserved' partition.\n\n\nShould an attacker ask why you removed the extra boot partition, you can answer that you wanted to prevent any possible data leaks to the unencrypted boot partition.\n\nNote: You can print this text by clicking the 'Print' button below. If you save a copy of this text or print it (strongly recommended, unless your printer stores copies of documents it prints on its internal drive), you should destroy any copies of it after removing the extra boot partition (otherwise, if such a copy was found, it might indicate that there is a hidden operating system on this computer).</entry>
<entry lang="en" key="GAP_BETWEEN_SYS_AND_HIDDEN_OS_PARTITION">Warning: There is unallocated space between the system partition and the first partition behind it. After you create the hidden operating system, you must not create any new partitions in that unallocated space. Otherwise, the hidden operating system will be impossible to boot (until you delete such newly created partitions).</entry>
<entry lang="en" key="ALGO_NOT_SUPPORTED_FOR_SYS_ENCRYPTION">This algorithm is currently not supported for system encryption.</entry>
<entry lang="en" key="ALGO_NOT_SUPPORTED_FOR_TRUECRYPT_MODE">This algorithm is not supported for TrueCrypt mode.</entry>
<entry lang="en" key="PIM_NOT_SUPPORTED_FOR_TRUECRYPT_MODE">PIM (Personal Iterations Multiplier) not supported for TrueCrypt mode.</entry>
<entry lang="en" key="PIM_REQUIRE_LONG_PASSWORD">Password must contain 20 or more characters in order to use the specified PIM.\nShorter passwords can only be used if the PIM is 485 or greater.</entry>
<entry lang="en" key="BOOT_PIM_REQUIRE_LONG_PASSWORD">Pre-boot authentication Password must contain 20 or more characters in order to use the specified PIM.\nShorter passwords can only be used if the PIM is 98 or greater.</entry>
<entry lang="en" key="KEYFILES_NOT_SUPPORTED_FOR_SYS_ENCRYPTION">Keyfiles are currently not supported for system encryption.</entry>
<entry lang="en" key="CANNOT_RESTORE_KEYBOARD_LAYOUT">Warning: VeraCrypt could not restore the original keyboard layout. This may cause you to enter a password incorrectly.</entry>
<entry lang="en" key="CANT_CHANGE_KEYB_LAYOUT_FOR_SYS_ENCRYPTION">Error: Cannot set the keyboard layout for VeraCrypt to the standard US keyboard layout.\n\nNote that the password needs to be typed in the pre-boot environment (before Windows starts) where non-US Windows keyboard layouts are not available. Therefore, the password must always be typed using the standard US keyboard layout.</entry>
- <entry lang="en" key="ALT_KEY_CHARS_NOT_FOR_SYS_ENCRYPTION">As VeraCrypt temporarily changed the keyboard layout to the standard US keyboard layout, it is not possible to type characters by pressing keys while the right Alt key is held down. However, you can type most of such characters by pressing appropriate keys while the Shift key is held down.</entry>
+ <entry lang="en" key="ALT_KEY_CHARS_NOT_FOR_SYS_ENCRYPTION">It is not possible to type characters by pressing keys while the right Alt key is held down. However, you can type most of such characters by pressing appropriate keys while the Shift key is held down.</entry>
<entry lang="en" key="KEYB_LAYOUT_CHANGE_PREVENTED">VeraCrypt prevented change of keyboard layout.</entry>
<entry lang="en" key="KEYB_LAYOUT_SYS_ENC_EXPLANATION">Note: The password will need to be typed in the pre-boot environment (before Windows starts) where non-US Windows keyboard layouts are not available. Therefore, the password must always be typed using the standard US keyboard layout. However, it is important to note that you do NOT need a real US keyboard. VeraCrypt automatically ensures that you can safely type the password (right now and in the pre-boot environment) even if you do NOT have a real US keyboard.</entry>
<entry lang="en" key="RESCUE_DISK_INFO">Before you can encrypt the partition/drive, you must create a VeraCrypt Rescue Disk (VRD), which serves the following purposes:\n\n- If the VeraCrypt Boot Loader, master key, or other critical data gets damaged, the VRD allows you to restore it (note, however, that you will still have to enter the correct password then).\n\n- If Windows gets damaged and cannot start, the VRD allows you to permanently decrypt the partition/drive before Windows starts.\n\n- The VRD will contain a backup of the present content of the first drive track (which typically contains a system loader or boot manager) and will allow you to restore it if necessary.\n\nThe VeraCrypt Rescue Disk ISO image will be created in the location specified below.</entry>
<entry lang="en" key="RESCUE_DISK_WIN_ISOBURN_PRELAUNCH_NOTE">After you click OK, Microsoft Windows Disc Image Burner will be launched. Please use it to burn the VeraCrypt Rescue Disk ISO image to a CD or DVD.\n\nAfter you do so, return to the VeraCrypt Volume Creation Wizard and follow its instructions.</entry>
<entry lang="en" key="RESCUE_DISK_BURN_INFO">The Rescue Disk image has been created and stored in this file:\n%s\n\nNow you need to burn it to a CD or DVD.\n\n%lsAfter you burn the Rescue Disk, click Next to verify that it has been correctly burned.</entry>
<entry lang="en" key="RESCUE_DISK_BURN_INFO_NO_CHECK">The Rescue Disk image has been created and stored in this file:\n%s\n\nNow you should either burn the image to a CD/DVD or move it to a safe location for later use.\n\n%lsClick Next to continue.</entry>
<entry lang="en" key="RESCUE_DISK_BURN_INFO_NONWIN_ISO_BURNER">IMPORTANT: Note that the file must be written to the CD/DVD as an ISO disk image (not as an individual file). For information on how to do so, please refer to the documentation of your CD/DVD recording software. If you do not have any CD/DVD recording software that can write the ISO disk image to a CD/DVD, click the link below to download such free software.\n\n</entry>
<entry lang="en" key="LAUNCH_WIN_ISOBURN">Launch Microsoft Windows Disc Image Burner</entry>
<entry lang="en" key="RESCUE_DISK_BURN_NO_CHECK_WARN">WARNING: If you already created a VeraCrypt Rescue Disk in the past, it cannot be reused for this system partition/drive because it was created for a different master key! Every time you encrypt a system partition/drive, you must create a new VeraCrypt Rescue Disk for it even if you use the same password.</entry>
<entry lang="en" key="CANNOT_SAVE_SYS_ENCRYPTION_SETTINGS">Error: Cannot save system encryption settings.</entry>
@@ -1147,52 +1148,52 @@
<entry lang="en" key="WDE_UNSUPPORTED_FOR_MULTIPLE_SYSTEMS_ON_ONE_DRIVE">VeraCrypt currently does not support encrypting a whole drive that contains multiple operating systems.\n\nPossible Solutions:\n\n- You can still encrypt one of the systems if you go back and choose to encrypt only a single system partition (as opposed to choosing to encrypt the entire system drive).\n\n- Alternatively, you will be able to encrypt the entire drive if you move some of the systems to other drives leaving only one system on the drive you want to encrypt.</entry>
<entry lang="en" key="SYSENC_MULTI_BOOT_ADJACENT_SYS_TITLE">Multiple Systems on Single Drive</entry>
<entry lang="en" key="SYSENC_MULTI_BOOT_ADJACENT_SYS_HELP">Are there any other operating systems installed on the drive on which the currently running operating system is installed?\n\nNote: For example, if the currently running operating system is installed on the drive #0, which contains several partitions, and if one of the partitions contains Windows and another partition contains any additional operating system (e.g. Windows, Mac OS X, Linux, etc.), select 'Yes'.</entry>
<entry lang="en" key="SYSENC_MULTI_BOOT_NONWIN_BOOT_LOADER_TITLE">Non-Windows Boot Loader</entry>
<entry lang="en" key="SYSENC_MULTI_BOOT_NONWIN_BOOT_LOADER_HELP">Is a non-Windows boot loader (or boot manager) installed in the master boot record (MBR)?\n\nNote: For example, if the first track of the boot drive contains GRUB, LILO, XOSL, or some other non-Windows boot manager (or boot loader), select 'Yes'.</entry>
<entry lang="en" key="SYSENC_MULTI_BOOT_OUTCOME_TITLE">Multi-Boot</entry>
<entry lang="en" key="CUSTOM_BOOT_MANAGERS_IN_MBR_UNSUPPORTED">VeraCrypt currently does not support multi-boot configurations where a non-Windows boot loader is installed in the Master Boot Record.\n\nPossible Solutions:\n\n- If you use a boot manager to boot Windows and Linux, move the boot manager (typically, GRUB) from the Master Boot Record to a partition. Then start this wizard again and encrypt the system partition/drive. Note that the VeraCrypt Boot Loader will become your primary boot manager and it will allow you to launch the original boot manager (e.g. GRUB) as your secondary boot manager (by pressing Esc in the VeraCrypt Boot Loader screen) and thus you will be able boot Linux.</entry>
<entry lang="en" key="WINDOWS_BOOT_LOADER_HINTS">If the currently running operating system is installed on the boot partition, then, after you encrypt it, you will need to enter the correct password even if you want to start any other unencrypted Windows system(s) (as they will share a single encrypted Windows boot loader/manager).\n\nIn contrast, if the currently running operating system is not installed on the boot partition (or if the Windows boot loader/manager is not used by any other system), then, after you encrypt this system, you will not need to enter the correct password to boot the other unencrypted system(s) -- you will only need to press the Esc key to start the unencrypted system (if there are multiple unencrypted systems, you will also need to choose which system to start in the VeraCrypt Boot Manager menu).\n\nNote: Typically, the earliest installed Windows system is installed on the boot partition.</entry>
<entry lang="en" key="SYSENC_PRE_DRIVE_ANALYSIS_TITLE">Encryption of Host Protected Area</entry>
<entry lang="en" key="SYSENC_PRE_DRIVE_ANALYSIS_HELP">At the end of many drives, there is an area that is normally hidden from the operating system (such areas are usually referred to as Host Protected Areas). However, some programs can read and write data from/to such areas.\n\nWARNING: Some computer manufacturers may use such areas to store tools and data for RAID, system recovery, system setup, diagnostic, or other purposes. If such tools or data must be accessible before booting, the hidden area should NOT be encrypted (choose 'No' above).\n\nDo you want VeraCrypt to detect and encrypt such a hidden area (if any) at the end of the system drive?</entry>
- <entry lang="en" key="SYSENC_TYPE_PAGE_TITLE">Type of System Encryption</entry>
+ <entry lang="en" key="SYSENC_TYPE_PAGE_TITLE">Encrypt Windows Drive (%c:)</entry>
<entry lang="en" key="SYSENC_NORMAL_TYPE_HELP">Select this option if you merely want to encrypt the system partition or the entire system drive.</entry>
<entry lang="en" key="SYSENC_HIDDEN_TYPE_HELP">It may happen that you are forced by somebody to decrypt the operating system. There are many situations where you cannot refuse to do so (for example, due to extortion). If you select this option, you will create a hidden operating system whose existence should be impossible to prove (provided that certain guidelines are followed). Thus, you will not have to decrypt or reveal the password to the hidden operating system. For a detailed explanation, please click the link below.</entry>
<entry lang="en" key="HIDDEN_OS_PREINFO">It may happen that you are forced by somebody to decrypt the operating system. There are many situations where you cannot refuse to do so (for example, due to extortion).\n\nUsing this wizard, you can create a hidden operating system whose existence should be impossible to prove (provided that certain guidelines are followed). Thus, you will not have to decrypt or reveal the password for the hidden operating system.</entry>
<entry lang="en" key="SYSENC_HIDDEN_OS_REQ_CHECK_PAGE_TITLE">Hidden Operating System</entry>
<entry lang="en" key="SYSENC_HIDDEN_OS_REQ_CHECK_PAGE_HELP">In the following steps, you will create two VeraCrypt volumes (outer and hidden) within the first partition behind the system partition. The hidden volume will contain the hidden operating system (OS). VeraCrypt will create the hidden OS by copying the content of the system partition (where the currently running OS is installed) to the hidden volume. To the outer volume, you will copy some sensitive looking files that you actually do NOT want to hide. They will be there for anyone forcing you to disclose the password for the hidden OS partition. You can reveal the password for the outer volume within the hidden OS partition (the existence of the hidden OS remains secret).\n\nFinally, on the system partition of the currently running OS, you will install a new OS, so-called decoy OS, and encrypt it. It must not contain sensitive data and will be there for anyone forcing you to reveal your pre-boot authentication password. In total, there will be three passwords. Two of them can be disclosed (for the decoy OS and outer volume). If you use the third one, the hidden OS will start.</entry>
<entry lang="en" key="SYSENC_DRIVE_ANALYSIS_TITLE">Detecting Hidden Sectors</entry>
<entry lang="en" key="SYSENC_DRIVE_ANALYSIS_INFO">Please wait while VeraCrypt is detecting possible hidden sectors at the end of the system drive. Note that it may take a long time to complete.\n\nNote: In very rare cases, on some computers, the system may become unresponsive during this detection process. If it happens, restart the computer, start VeraCrypt, repeat the previous steps but skip this detection process. Note that this issue is not caused by a bug in VeraCrypt.</entry>
<entry lang="en" key="SYS_ENCRYPTION_SPAN_TITLE">Area to Encrypt</entry>
<entry lang="en" key="SYS_ENCRYPTION_SPAN_WHOLE_SYS_DRIVE_HELP">Select this option if you want to encrypt the entire drive on which the currently running Windows system is installed. The whole drive, including all its partitions, will be encrypted except the first track where the VeraCrypt Boot Loader will reside. Anyone who wants to access a system installed on the drive, or files stored on the drive, will need to enter the correct password each time before the system starts. This option cannot be used to encrypt a secondary or external drive if Windows is not installed on it and does not boot from it.</entry>
<entry lang="en" key="COLLECTING_RANDOM_DATA_TITLE">Collecting Random Data</entry>
<entry lang="en" key="KEYS_GEN_TITLE">Keys Generated</entry>
<entry lang="en" key="CD_BURNER_NOT_PRESENT">VeraCrypt has found no CD/DVD burner connected to your computer. VeraCrypt needs a CD/DVD burner to burn a bootable VeraCrypt Rescue Disk containing a backup of the encryption keys, VeraCrypt boot loader, original system loader, etc.\n\nWe strongly recommend that you burn the VeraCrypt Rescue Disk.</entry>
<entry lang="en" key="CD_BURNER_NOT_PRESENT_WILL_STORE_ISO">I have no CD/DVD burner but I will store the Rescue Disk ISO image on a removable drive (e.g. USB flash drive).</entry>
<entry lang="en" key="CD_BURNER_NOT_PRESENT_WILL_CONNECT_LATER">I will connect a CD/DVD burner to my computer later. Terminate the process now.</entry>
<entry lang="en" key="CD_BURNER_NOT_PRESENT_CONNECTED_NOW">A CD/DVD burner is connected to my computer now. Continue and write the Rescue Disk.</entry>
<entry lang="en" key="CD_BURNER_NOT_PRESENT_WILL_STORE_ISO_INFO">Please follow these steps:\n\n1) Connect a removable drive, such as a USB flash drive, to your computer now.\n\n2) Copy the VeraCrypt Rescue Disk image file (%s) to the removable drive.\n\nIn case you need to use the VeraCrypt Rescue Disk in the future, you will be able to connect your removable drive (containing the VeraCrypt Rescue Disk image) to a computer with a CD/DVD burner and create a bootable VeraCrypt Rescue Disk by burning the image to a CD or DVD. IMPORTANT: Note that the VeraCrypt Rescue Disk image file must be written to the CD/DVD as an ISO disk image (not as an individual file).</entry>
<entry lang="en" key="RESCUE_DISK_RECORDING_TITLE">Rescue Disk Recording</entry>
<entry lang="en" key="RESCUE_DISK_CREATED_TITLE">Rescue Disk Created</entry>
- <entry lang="en" key="SYS_ENCRYPTION_PRETEST_TITLE">System Encryption Pretest</entry>
+ <entry lang="en" key="SYS_ENCRYPTION_PRETEST_TITLE">System Encryption Test</entry>
<entry lang="en" key="RESCUE_DISK_DISK_VERIFIED_TITLE">Rescue Disk Verified</entry>
<entry lang="en" key="RESCUE_DISK_VERIFIED_INFO">\nThe VeraCrypt Rescue Disk has been successfully verified. Please remove it from the drive now and store it in a safe place.\n\nClick Next to continue.</entry>
<entry lang="en" key="REMOVE_RESCUE_DISK_FROM_DRIVE">WARNING: During the next steps, the VeraCrypt Rescue Disk must not be in the drive. Otherwise, it will not be possible to complete the steps correctly.\n\nPlease remove it from the drive now and store it in a safe place. Then click OK.</entry>
<entry lang="en" key="PREBOOT_NOT_LOCALIZED">Warning: Due to technical limitations of the pre-boot environment, texts displayed by VeraCrypt in the pre-boot environment (i.e. before Windows starts) cannot be localized. The VeraCrypt Boot Loader user interface is completely in English.\n\nContinue?</entry>
<entry lang="en" key="SYS_ENCRYPTION_PRETEST_INFO">Before encrypting your system partition or drive, VeraCrypt needs to verify that everything works correctly.\n\nAfter you click Test, all the necessary components (for example, the pre-boot authentication component, i.e. the VeraCrypt Boot Loader) will be installed and your computer will be restarted. Then you will have to enter your password in the VeraCrypt Boot Loader screen that will appear before Windows starts. After Windows starts, you will be automatically informed about the result of this pretest.\n\nThe following device will be modified: Drive #%d\n\n\nIf you click Cancel now, nothing will be installed and the pretest will not be performed.</entry>
<entry lang="en" key="SYS_ENCRYPTION_PRETEST_INFO2_PORTION_1">IMPORTANT NOTES -- PLEASE READ OR PRINT (click 'Print'):\n\nNote that none of your files will be encrypted before you successfully restart your computer and start Windows. Thus, if anything fails, your data will NOT be lost. However, if something does go wrong, you might encounter difficulties in starting Windows. Therefore, please read (and, if possible, print) the following guidelines on what to do if Windows cannot start after you restart the computer.\n\n</entry>
<entry lang="en" key="SYS_ENCRYPTION_PRETEST_INFO2_PORTION_2">What to Do If Windows Cannot Start\n------------------------------------------------\n\nNote: These instructions are valid only if you have not started encrypting.\n\n- If Windows does not start after you enter the correct password (or if you repeatedly enter the correct password but VeraCrypt says that the password is incorrect), do not panic. Restart (power off and on) the computer, and in the VeraCrypt Boot Loader screen, press the Esc key on your keyboard (and if you have multiple systems, choose which to start). Then Windows should start (provided that it is not encrypted) and VeraCrypt will automatically ask whether you want to uninstall the pre-boot authentication component. Note that the previous steps do NOT work if the system partition/drive is encrypted (nobody can start Windows or access encrypted data on the drive without the correct password even if he or she follows the previous steps).\n\n</entry>
<entry lang="en" key="SYS_ENCRYPTION_PRETEST_INFO2_PORTION_3">- If the previous steps do not help or if the VeraCrypt Boot Loader screen does not appear (before Windows starts), insert the VeraCrypt Rescue Disk into your CD/DVD drive and restart your computer. If the VeraCrypt Rescue Disk screen does not appear (or if you do not see the 'Repair Options' item in the 'Keyboard Controls' section of the VeraCrypt Rescue Disk screen), it is possible that your BIOS is configured to attempt to boot from hard drives before CD/DVD drives. If that is the case, restart your computer, press F2 or Delete (as soon as you see a BIOS start-up screen), and wait until a BIOS configuration screen appears. If no BIOS configuration screen appears, restart (reset) the computer again and start pressing F2 or Delete repeatedly as soon as you restart (reset) the computer. When a BIOS configuration screen appears, configure your BIOS to boot from the CD/DVD drive first (for information on how to do so, please refer to the documentation for your BIOS/motherboard or contact your computer vendor's technical support team for assistance). Then restart your computer. The VeraCrypt Rescue Disk screen should appear now. In the VeraCrypt Rescue Disk screen, select 'Repair Options' by pressing F8 on your keyboard. From the 'Repair Options' menu, select 'Restore original system loader'. Then remove the Rescue Disk from your CD/DVD drive and restart your computer. Windows should start normally (provided that it is not encrypted).\n\n</entry>
<entry lang="en" key="SYS_ENCRYPTION_PRETEST_INFO2_PORTION_4">Note that the previous steps do NOT work if the system partition/drive is encrypted (nobody can start Windows or access encrypted data on the drive without the correct password even if he or she follows the previous steps).\n\n\nNote that even if you lose your VeraCrypt Rescue Disk and an attacker finds it, he or she will NOT be able to decrypt the system partition or drive without the correct password.</entry>
- <entry lang="en" key="SYS_ENCRYPTION_PRETEST_RESULT_TITLE">Pretest Completed</entry>
- <entry lang="en" key="SYS_ENCRYPTION_PRETEST_RESULT_INFO">The pretest has been successfully completed.\n\nWARNING: Please note that if power supply is suddenly interrupted while encrypting existing data in place, or when the operating system crashes due to a software error or hardware malfunction while VeraCrypt is encrypting existing data in place, portions of the data will be corrupted or lost. Therefore, before you start encrypting, please make sure that you have backup copies of the files you want to encrypt. If you do not, please back up the files now (you can click Defer, back up the files, then run VeraCrypt again anytime, and select 'System' &gt; 'Resume Interrupted Process' to start encrypting).\n\nWhen ready, click Encrypt to start encrypting.</entry>
- <entry lang="en" key="SYSENC_ENCRYPTION_PAGE_INFO">You can click Pause or Defer anytime to interrupt the process of encryption or decryption, exit this wizard, restart or shut down your computer, and then resume the process, which will continue from the point it was stopped. To prevent slowdown when the system or applications write or read data from the system drive, VeraCrypt automatically waits until the data is written or read (see Status above) and then automatically continues encrypting or decrypting.</entry>
+ <entry lang="en" key="SYS_ENCRYPTION_PRETEST_RESULT_TITLE">Pretest Successfully Completed</entry>
+ <entry lang="en" key="SYS_ENCRYPTION_PRETEST_RESULT_INFO">If the encryption is interrupted you can resume it restarting VeraCrypt and selecting 'System' > 'Resume Interrupted Process'\n\nPlease make sure, that your device does not run out of power during the encryption process.</entry>
+ <entry lang="en" key="SYSENC_ENCRYPTION_PAGE_INFO">Make sure that your device does not run out of power.\nIf the encryption is interrupted you can resume it restarting VeraCrypt and selecting 'System' > 'Resume Interrupted Process'.</entry>
<entry lang="en" key="NONSYS_INPLACE_ENC_ENCRYPTION_PAGE_INFO">\n\nYou can click Pause or Defer anytime to interrupt the process of encryption, exit this wizard, restart or shut down your computer, and then resume the process, which will continue from the point it was stopped. Note that the volume cannot be mounted until it has been fully encrypted.</entry>
<entry lang="en" key="NONSYS_INPLACE_DEC_DECRYPTION_PAGE_INFO">\n\nYou can click Pause or Defer anytime to interrupt the process of decryption, exit this wizard, restart or shut down the computer, and then resume the process, which will continue from the point where it was stopped. Note that the volume cannot be mounted until it has been fully decrypted.</entry>
<entry lang="en" key="SYSENC_HIDDEN_OS_INITIAL_INFO_TITLE">Hidden System Started</entry>
<entry lang="en" key="SYSENC_HIDDEN_OS_WIPE_INFO_TITLE">Original System</entry>
<entry lang="en" key="SYSENC_HIDDEN_OS_WIPE_INFO">Windows creates (typically, without your knowledge or consent) various log files, temporary files, etc., on the system partition. It also saves the content of RAM to hibernation and paging files located on the system partition. Therefore, if an adversary analyzed files stored on the partition where the original system (of which the hidden system is a clone) resides, he might find out, for example, that you used the VeraCrypt wizard in the hidden-system-creation mode (which might indicate the existence of a hidden operating system on your computer).\n\nTo prevent such issues, VeraCrypt will, in the next steps, securely erase the entire content of the partition where the original system resides. Afterwards, in order to achieve plausible deniability, you will need to install a new system on the partition and encrypt it. Thus you will create the decoy system and the whole process of creation of the hidden operating system will be completed.</entry>
<entry lang="en" key="OS_WIPING_NOT_FINISHED_ASK">The hidden operating system has been successfully created. However, before you can start using it (and achieve plausible deniability), you need to securely erase (using VeraCrypt) the entire content of the partition where the currently running operating system is installed. Before you can do that, you need to restart the computer and, in the VeraCrypt Boot Loader screen (which appears before Windows starts), enter the pre-boot authentication password for the hidden operating system. Then, after the hidden system starts, the VeraCrypt wizard will be launched automatically.\n\nNote: If you choose to terminate the process of creation of the hidden operating system now, you will NOT be able to resume the process and the hidden system will NOT be accessible (because the VeraCrypt Boot Loader will be removed).</entry>
<entry lang="en" key="HIDDEN_OS_CREATION_NOT_FINISHED_ASK">You have scheduled the process of creation of a hidden operating system. The process has not been completed yet. To complete it, you need to restart the computer and, in the VeraCrypt Boot Loader screen (which appears before Windows starts), enter the password for the hidden operating system.\n\nNote: If you choose to terminate the process of creation of the hidden operating system now, you will NOT be able to resume the process.</entry>
<entry lang="en" key="HIDDEN_OS_CREATION_NOT_FINISHED_CHOICE_RETRY">Restart the computer and proceed</entry>
<entry lang="en" key="HIDDEN_OS_CREATION_NOT_FINISHED_CHOICE_TERMINATE">Permanently terminate the process of creation of the hidden operating system</entry>
<entry lang="en" key="HIDDEN_OS_CREATION_NOT_FINISHED_CHOICE_ASK_LATER">Do nothing now and ask again later</entry>
@@ -1300,21 +1301,21 @@
<entry lang="en" key="MOUNTED_DEVICE_FORCED_READ_ONLY_WRITE_PROTECTION">Volume '%s' has been mounted as read-only because the operating system reported the host device to be write-protected.\n\nPlease note that some custom chipset drivers have been reported to cause writable media to falsely appear write-protected. This problem is not caused by VeraCrypt. It may be solved by updating or uninstalling any custom (non-Microsoft) chipset drivers that are currently installed on this system.</entry>
<entry lang="en" key="LIMIT_ENC_THREAD_POOL_NOTE">Note that the Hyper-Threading technology provides multiple logical cores per a single physical core. When Hyper Threading is enabled, the number selected above represents the number of logical processors/cores.</entry>
<entry lang="en" key="NUMBER_OF_THREADS">%d threads</entry>
<entry lang="en" key="DISABLED_HW_AES_AFFECTS_PERFORMANCE">Note that hardware-accelerated AES is disabled, which will affect benchmark results (worse performance).\n\nTo enable hardware acceleration, select 'Settings' > 'Performance' and enable the corresponding option.</entry>
<entry lang="en" key="LIMITED_THREAD_COUNT_AFFECTS_PERFORMANCE">Note that the number of threads is currently limited, which will affect benchmark results (worse performance).\n\nTo utilize the full potential of the processor(s), select 'Settings' > 'Performance' and disable the corresponding option.</entry>
<entry lang="en" key="ASK_REMOVE_DEVICE_WRITE_PROTECTION">Do you want VeraCrypt to attempt to disable write protection of the partition/drive?</entry>
<entry lang="en" key="CONFIRM_SETTING_DEGRADES_PERFORMANCE">WARNING: This setting may degrade performance.\n\nAre you sure you want to use this setting?</entry>
<entry lang="en" key="HOST_DEVICE_REMOVAL_DISMOUNT_WARN_TITLE">Warning: VeraCrypt volume auto-dismounted</entry>
<entry lang="en" key="HOST_DEVICE_REMOVAL_DISMOUNT_WARN">Before you physically remove or turn off a device containing a mounted volume, you should always dismount the volume in VeraCrypt first.\n\nUnexpected spontaneous dismount is usually caused by an intermittently failing cable, drive (enclosure), etc.</entry>
<entry lang="en" key="UNSUPPORTED_TRUECRYPT_FORMAT">This volume was created with TrueCrypt %x.%x but VeraCrypt supports only TrueCrypt volumes created with TrueCrypt 6.x/7.x series</entry>
- <entry lang="en" key="TEST">Test</entry>
+ <entry lang="en" key="TEST">Start pretest</entry>
<entry lang="en" key="KEYFILE">Keyfile</entry>
<entry lang="en" key="VKEY_08">Backspace</entry>
<entry lang="en" key="VKEY_09">Tab</entry>
<entry lang="en" key="VKEY_0C">Clear</entry>
<entry lang="en" key="VKEY_0D">Enter</entry>
<entry lang="en" key="VKEY_13">Pause</entry>
<entry lang="en" key="VKEY_14">Caps Lock</entry>
<entry lang="en" key="VKEY_20">Spacebar</entry>
<entry lang="en" key="VKEY_21">Page Up</entry>
<entry lang="en" key="VKEY_22">Page Down</entry>
@@ -1393,23 +1394,23 @@
<entry lang="en" key="DISABLE_BOOT_LOADER_PIM_PROMPT">WARNING: Please keep in mind that if you enable this option, the PIM value will be stored unencrypted on the disk.\n\nAre you sure you want to enable this option?</entry>
<entry lang="en" key="PIM_TOO_BIG">Personal Iterations Multiplier (PIM) maximum value is 2147468.</entry>
<entry lang="en" key="IDC_SKIP_RESCUE_VERIFICATION">Skip Rescue Disk verification</entry>
<entry lang="en" key="IDC_HIDE_WAITING_DIALOG">Don't show wait message dialog when performing operations</entry>
<entry lang="en" key="IDC_DISABLE_BOOT_LOADER_HASH_PROMPT">Do not request Hash algorithm in the pre-boot authentication screen</entry>
<entry lang="en" key="KUZNYECHIK_HELP">Kuznyechik is a block cipher first published in 2015 and defined in the National Standard of the Russian Federation GOST R 34.12-2015 and also in RFC 7801. 256-bit key, 128-bit block. Mode of operation is XTS.</entry>
<entry lang="en" key="CAMELLIA_HELP">Jointly developed by Mitsubishi Electric and NTT of Japan. First published on 2000. 256-bit key, 128-bit block. Mode of operation is XTS. It has been approved for use by the ISO/IEC, the European Union's NESSIE project and the Japanese CRYPTREC project.</entry>
<entry lang="en" key="TIME">Time</entry>
<entry lang="en" key="ITERATIONS">Iterations</entry>
<entry lang="en" key="PRE-BOOT">Pre-Boot</entry>
- <entry lang="en" key="RESCUE_DISK_EFI_INFO">Before you can encrypt the partition, you must create a VeraCrypt Rescue Disk (VRD), which serves the following purposes:\n\n- If the VeraCrypt Boot Loader, master key, or other critical data gets damaged, the VRD allows you to restore it (note, however, that you will still have to enter the correct password then).\n\n- If Windows gets damaged and cannot start, the VRD allows you to permanently decrypt the partition before Windows starts.\n\n- The VRD will contain a backup of the present EFI boot loader and will allow you to restore it if necessary.\n\nThe VeraCrypt Rescue Disk ZIP image will be created in the location specified below.</entry>
+ <entry lang="en" key="RESCUE_DISK_EFI_INFO">\n\nIf Windows gets damaged and cannot start, the VeraCrypt Rescue Disk allows you to permanently decrypt the partition. Note, however, that you will still have to enter the correct password then!\n\n\nWARNING: If you have already created a VeraCrypt Rescue Disk in the past, it cannot be reused for this encryption! Every time you use this encryption tool, you must create and securely store a new VeraCrypt Rescue Disk for it even if you use the same password.</entry>
<entry lang="en" key="RESCUE_DISK_EFI_EXTRACT_INFO">The Rescue Disk ZIP image has been created and stored in this file:\n%s\n\nNow you need to extract it to a USB stick that is formatted as FAT/FAT32.\n\n%lsAfter you create the Rescue Disk, click Next to verify that it has been correctly created.</entry>
- <entry lang="en" key="RESCUE_DISK_EFI_EXTRACT_INFO_NO_CHECK">The Rescue Disk ZIP image has been created and stored in this file:\n%s\n\nNow you should either extract the image to a USB stick that is formatted as FAT/FAT32 or move it to a safe location for later use.\n\n%lsClick Next to continue.</entry>
+ <entry lang="en" key="RESCUE_DISK_EFI_EXTRACT_INFO_NO_CHECK">The Rescue Disk ZIP image has been created and stored in this file:\n%s\n\nNow you should either extract the image to a USB stick that is formatted as FAT/FAT32 or move it to a safe location for later use.\n\n\n\n%lsClick Next to continue.</entry>
<entry lang="en" key="RESCUE_DISK_EFI_EXTRACT_INFO_NOTE">IMPORTANT: Note that the zip file must be extracted directly to the root of the USB stick. For example, if the drive letter of the USB stick is E: then extracting the zip file should create a folder E:\\EFI on the USB stick.\n\n</entry>
<entry lang="en" key="RESCUE_DISK_EFI_CHECK_FAILED">Cannot verify that the Rescue Disk has been correctly extracted.\n\nIf you have extracted the Rescue Disk, please eject and reinsert the USB stick; then click Next to try again. If this does not help, please try another USB stick and/or another ZIP software.\n\nIf you have not extracted the Rescue Disk yet, please do so, and then click Next.\n\nIf you attempted to verify a VeraCrypt Rescue Disk created before you started this wizard, please note that such Rescue Disk cannot be used, because it was created for a different master key. You need to extract the newly generated Rescue Disk ZIP image.</entry>
<entry lang="en" key="RESCUE_DISK_EFI_NON_WIZARD_CHECK_FAILED">Cannot verify that the Rescue Disk has been correctly extracted.\n\nIf you have extracted the Rescue Disk image to a USB stick, please eject it and reinsert it; then try again. If this does not help, please try other ZIP software and/or medium.\n\nIf you attempted to verify a VeraCrypt Rescue Disk created for a different master key, password, salt, etc., please note that such Rescue Disk will always fail this verification. To create a new Rescue Disk fully compatible with your current configuration, select 'System' > 'Create Rescue Disk'.</entry>
<entry lang="en" key="RESCUE_DISK_EFI_NON_WIZARD_CREATION">The Rescue Disk image has been created and stored in this file:\n%s\n\nNow you need to extract the Rescue Disk image to a USB stick that is formatted as FAT/FAT32.\n\nIMPORTANT: Note that the zip file must be extracted directly to the root of the USB stick. For example, if the drive letter of the USB stick is E: then extracting the zip file should create a folder E:\\EFI on the USB stick.\n\nAfter you create the Rescue Disk, select 'System' > 'Verify Rescue Disk' to verify that it has been correctly created.</entry>
<entry lang="en" key="IDC_SECURE_DESKTOP_PASSWORD_ENTRY">Use Secure Desktop for password entry</entry>
<entry lang="en" key="ERR_REFS_INVALID_VOLUME_SIZE">The volume file size specified in the command line is incompatible with selected ReFS filesystem.</entry>
<entry lang="en" key="IDC_EDIT_DCSPROP">Edit Boot Loader Configuration</entry>
<entry lang="en" key="IDC_SHOW_PLATFORMINFO">Display EFI Platform Information</entry>
<entry lang="en" key="BOOT_LOADER_CONFIGURATION_FILE">Boot Loader Configuration File</entry>
<entry lang="en" key="EFI_PLATFORM_INFORMATION">EFI Platform Information</entry>
@@ -1418,21 +1419,21 @@
<entry lang="en" key="IDT_ADVANCED_OPTIONS">Advanced Options</entry>
<entry lang="en" key="AFTER_UPGRADE_RESCUE_DISK">It is strongly recommended that you create a new VeraCrypt Rescue Disk (which will contain the new version of the VeraCrypt Boot Loader) by selecting 'System' > 'Create Rescue Disk'.\nDo you want to do it now?</entry>
<entry lang="en" key="IDC_ALLOW_TRIM_NONSYS_SSD">Allow TRIM command for non-system SSD partition/drive</entry>
<entry lang="en" key="IDC_BLOCK_SYSENC_TRIM">Block TRIM command on system partition/drive</entry>
<entry lang="en" key="WINDOWS_EFI_BOOT_LOADER_MISSING">ERROR: Windows EFI system loader could not be located on the disk. Operation will be aborted.</entry>
<entry lang="en" key="SYSENC_EFI_UNSUPPORTED_SECUREBOOT">It is currently not possible to encrypt a system if SecureBoot is enabled and if VeraCrypt custom keys are not loaded into the machine firmware. SecureBoot needs to be disabled in the BIOS configuration in order to allow system encryption to proceed.</entry>
<entry lang="en" key="PASSWORD_PASTED_TRUNCATED">Pasted text truncated because the password maximum length is %d characters</entry>
<entry lang="en" key="PASSWORD_MAXLENGTH_REACHED">Password already reached its maximum length of %d characters.\nNo additional character is allowed.</entry>
<entry lang="en" key="IDC_SELECT_LANGUAGE_LABEL">Select the language to use during the installation:</entry>
<entry lang="en" key="VOLUME_TOO_LARGE_FOR_HOST">ERROR: The size of the file container is larger than the available free space on disk.</entry>
- <entry lang="en" key="IDC_ALLOW_WINDOWS_DEFRAG">Allow Windows Disk Defragmenter to defragment non-system partition/drive</entry>
+ <entry lang="en" key="IDC_ALLOW_WINDOWS_DEFRAG">Allow Windows Disk Defragmenter to defragment non-system partition/drive</entry>
<entry lang="en" key="CONFIRM_ALLOW_WINDOWS_DEFRAG">WARNING: Defragmenting non-system partitions/drives may leak metadata about their content or cause issues with hidden volumes they may contain.\n\nContinue?</entry>
<entry lang="en" key="VIRTUAL_DEVICE">Virtual Device</entry>
<entry lang="en" key="MOUNTED_VOLUME_NOT_ASSOCIATED">The selected mounted volume is not associated with its drive letter in Windows and so it can not be opened in Windows Explorer.</entry>
<entry lang="en" key="IDC_CLEAR_KEYS_ON_NEW_DEVICE_INSERTION">Clear encryption keys from memory if a new device is inserted</entry>
<entry lang="en" key="CLEAR_KEYS_ON_DEVICE_INSERTION_WARNING">IMPORTANT NOTES:\n - Please keep in mind that this option will not persist after a shutdown/reboot so you will need to select it again next time the machine is started.\n\n - With this option enabled and after a new device is connected, the machine will freeze and it will eventually crash with a BSOD since Windows can not access the encrypted disk after its keys are cleared from memory.\n</entry>
<entry lang="en" key="STARTING">Starting</entry>
<entry lang="en" key="IDC_ENABLE_CPU_RNG">Use CPU hardware random generator as an additional source of entropy</entry>
<entry lang="en" key="IDC_USE_LEGACY_MAX_PASSWORD_LENGTH">Use legacy maximum password length (64 characters)</entry>
<entry lang="en" key="IDC_ENABLE_RAM_ENCRYPTION">Activate encryption of keys and passwords stored in RAM</entry>
<entry lang="en" key="IDT_BENCHMARK">Benchmark:</entry>
@@ -1561,20 +1562,67 @@
<entry lang="en" key="PARAMETER_INCORRECT">Parameter incorrect</entry>
<entry lang="en" key="SELECT_KEYFILES">Select Keyfiles</entry>
<entry lang="en" key="START_TC">Start VeraCrypt</entry>
<entry lang="en" key="VOLUME_ALREADY_MOUNTED">The volume {0} is already mounted.</entry>
<entry lang="en" key="UNKNOWN_OPTION">Unknown option</entry>
<entry lang="en" key="VOLUME_LOCATION">Volume Location</entry>
<entry lang="en" key="VOLUME_HOST_IN_USE">WARNING: The host file/device {0} is already in use!\n\nIgnoring this can cause undesired results including system instability. All applications that might be using the host file/device should be closed before mounting the volume.\n\nContinue mounting?</entry>
<entry lang="en" key="CANT_INSTALL_WITH_EXE_OVER_MSI">VeraCrypt was previously installed using an MSI package and so it can't be updated using the standard installer.\n\nPlease use the MSI package to update your VeraCrypt installation.</entry>
<entry lang="en" key="IDC_USE_ALL_FREE_SPACE">Use all available free space</entry>
<entry lang="en" key="SYS_ENCRYPTION_UPGRADE_UNSUPPORTED_ALGORITHM">VeraCrypt cannot be upgraded because the system partition/drive was encrypted using an algorithm that is not supported anymore.\nPlease decrypt your system before upgrading VeraCrypt and then encrypt it again.</entry>
+ <entry lang="en" key="RESCUE_DISK_BACK_BUTTON">The Rescue Disk was already created depending on the selected options. In order to prevent incompatibility, you have to click 'cancel' and restart the system encryption process, if you want to modify any configuration.</entry>
+ <entry lang="en" key="AES_BOX_HELP">AES is secure according to NIST</entry>
+ <entry lang="en" key="BACKUP_RESCUE_DISK_TITLE">Backup Rescue Disk</entry>
+ <entry lang="en" key="RESCUE_DISK_CHECKLIST_A">Store your password in a safe location. You can not recover your data without your password.\nThat is why VeraCrypt is considered to be secure.</entry>
+ <entry lang="en" key="RESCUE_DISK_CHECKLIST_B">Make sure that the rescue file is stored on an external medium. This could be a flash drive, an external hard drive or even a cloud storage.\nYour rescue file is located here:</entry>
+ <entry lang="en" key="RESCUE_DISK_CHECKLIST_C">Before you start encrypting your system, it is always a good idea to backup your personal data on an external drive for the unlikely case that the encryption process fails.</entry>
+ <entry lang="en" key="RESCUE_DISK_INFO_2">The VeraCrypt Rescue Disk ZIP image will be created by clicking the Next button in location specified below.</entry>
+ <entry lang="en" key="REMEMBER_PASSWORD"> I remember my Password</entry>
+ <entry lang="en" key="STORE_RESCUE_DISK"> I stored my rescue file</entry>
+ <entry lang="en" key="BACKUP_DATA"> I considered doing a backup of my personal Data</entry>
+ <entry lang="en" key="CHECKLIST_TITLE">Checklist - Before clicking 'Next'</entry>
+ <entry lang="en" key="SYS_ENCRYPTION_PRETEST_INFO">Some tests have to be done now to verify that everything works correctly.\n\nFor this test, your computer has to be restarted. Then you will have to enter your password in the VeraCrypt Boot Loader screen that will appear before Windows starts. After Windows starts, VeraCrypt is started automatically and you will be informed about the result of this pretest.\n\n\nThe following device will be modified: Drive %c:</entry>
+ <entry lang="en" key="SYSENC_DECRYPTION_PAGE_INFO">Make sure that your device does not run out of power.\nIf the decryption is interrupted you can resume it restarting VeraCrypt and selecting 'System' > 'Resume Interrupted Process'.</entry>
+ <entry lang="en" key="ADVANCED_FEATURES">Advanced features</entry>
+ <entry lang="en" key="VERY_WEAK_PASSWORD">very weak</entry>
+ <entry lang="en" key="WEAK_PASSWORD">weak</entry>
+ <entry lang="en" key="MEDIUM_PASSWORD">medium</entry>
+ <entry lang="en" key="STRONG_PASSWORD">strong</entry>
+ <entry lang="en" key="VERY_STRONG_PASSWORD">very strong</entry>
+ <entry lang="en" key="IDT_PASSWORD_STRENGTH">Password strength:</entry>
+ <entry lang="en" key="PASSWORD_HELP_SYSENC">You might consider to write the password down somewhere safe. Please note, that the field to repeat your password is greyed out until your password has the minimum required strength.</entry>
+ <entry lang="en" key="AES_HELP_NEW">AES is secure accoring to the National Institute of Standards and Technology (NIST) and the privacy and security research community.</entry>
+ <entry lang="en" key="SHA512_HELP">SHA-512 is secure accoring to the National Institute of Standards and Technology (NIST) and the privacy and security research community.</entry>
+ <entry lang="en" key="CHOOSE_PASSWORD_TITLE">Choose Password</entry>
+ <entry lang="en" key="TRANSLATED_PWD_NOT_WRITTEN">Warning: Error occured while writing translated password! Please try again. If this error happens again, change keyboard layout to US keyboard layout manually.</entry>
+ <entry lang="en" key="ERROR_TRANSLATE_PWD">Warning: Error occured while translating password!\nPlease type password again and try. If this error happens again, switch keyboard layout to US keyboard layout manually.</entry>
+ <entry lang="en" key="ERROR_KEYB_LAYOUT_NOT_LOADED">Your system does not support the standard US-Keyboard layout. Please make sure the layout is available. For further help, please visit: https://support.microsoft.com/en-us/windows/manage-the-input-and-display-language-settings-in-windows-10-12a10cb4-8626-9b77-0ccb-5013e0c7c7a2 </entry>
+ <entry lang="en" key="ERROR_PASTE_ACTION">Pasting text is disabled. Please type your password.</entry>
+ <entry lang="en" key="WARNING_PASSWORD_NOT_IDENTICAL">Passwords are not identical! Please type identic passwords in both fields!</entry>
+ <entry lang="en" key="SYSENC_INFO">This assistant will help you encrypt your drive (%c:)</entry>
+ <entry lang="en" key="SYSENC_INFO_2">A windows password can easily be circumvented by bad actors with physical access to your device. Drive encryption helps to secure your data from beeing accessed by bad actors. VeraCrypt Drive Encryption will keep them out by protecting your data with an additional password. </entry>
+ <entry lang="en" key="ADV_FEATURES_INTRO_TOOLTIP">Activate hidden OS here.</entry>
+ <entry lang="en" key="ADV_FEATURES_NOTE">Most experts agree that the following preselected options are secure. Only change them if you know what you are doing. </entry>
+ <entry lang="en" key="PIM_INFO">A Personal Iterations Multiplier (PIM) allows you to set the number of password hash iterations. This provides more flexibility for adjusting the desired security level while also controling the performance of the mount/boot operation.</entry>
+ <entry lang="en" key="WIPE_INFO">Overrides your data before the encryption. This prevents possible data recovery. Wipe is not needed under normal circumstances.</entry>
+ <entry lang="en" key="PRETEST_INFO">Before encrypting VeraCrypt will verify that everything is working correctly.\n\nVeraCrypt will run some tests, restart your computer and you have to enter you password before windows starts.</entry>
+ <entry lang="en" key="PRETEST_CANCEL">If you click cancel now, no changes will be made your system.</entry>
+ <entry lang="en" key="ERROR_GETTING_PATH">Error occured while getting path to executable file.</entry>
+ <entry lang="en" key="ERROR_GETTING_PWD">Error occured while getting the password. Please try again.</entry>
+ <entry lang="en" key="ERROR_GETTING_KEYB_STATE">Error occured while getting the keyboard state.</entry>
+ <entry lang="en" key="ERR_NO_TRANSLATION">There is no translation for that key you just pressed!</entry>
+ <entry lang="en" key="DEAD_KEY_SUPPORT">Dead keys will not reproduce dead char in this case because your password need to be translated to US keyboard layout so you can type your password in pre-boot environment.</entry>
+ <entry lang="en" key="PRETEST_CHECKBOX"> I made sure that my device will not run out of power during the encryption process.</entry>
+ <entry lang="en" key="OPEN_PATH_CHECKLIST_PAGE">Open path</entry>
+ <entry lang="en" key="RESCUE_DISK_PATH">Rescue Disk Path</entry>
+ <entry lang="en" key="PRETEST_BACK_BUTTON">If you want to cancel the encryption wizard, please click on cancel. In this case no changes will be made to your computer.</entry>
+ <entry lang="en" key="WIPE_WARNING">Wiping can take a long time (Up to hours). Wiping is not recommended if you have an SSD Drive.</entry>
</localization>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="VeraCrypt">
<xs:complexType>
<xs:sequence>
<xs:element name="localization">
<xs:complexType>
<xs:sequence>
<xs:element name="language">
<xs:complexType>
diff --git a/src/Common/Password.c b/src/Common/Password.c
index 4caf3a21..3c9faa82 100644
--- a/src/Common/Password.c
+++ b/src/Common/Password.c
@@ -32,33 +32,39 @@
void VerifyPasswordAndUpdate (HWND hwndDlg, HWND hButton, HWND hPassword,
HWND hVerify, unsigned char *szPassword,
char *szVerify,
BOOL keyFilesEnabled)
{
wchar_t szTmp1[MAX_PASSWORD + 1];
wchar_t szTmp2[MAX_PASSWORD + 1];
char szTmp1Utf8[MAX_PASSWORD + 1];
char szTmp2Utf8[MAX_PASSWORD + 1];
int k = GetWindowTextLength (hPassword);
+ int j = GetWindowTextLength (hVerify);
BOOL bEnable = FALSE;
int utf8Len1, utf8Len2;
UNREFERENCED_PARAMETER (hwndDlg); /* Remove warning */
GetWindowText (hPassword, szTmp1, ARRAYSIZE (szTmp1));
GetWindowText (hVerify, szTmp2, ARRAYSIZE (szTmp2));
utf8Len1 = WideCharToMultiByte (CP_UTF8, 0, szTmp1, -1, szTmp1Utf8, MAX_PASSWORD + 1, NULL, NULL);
utf8Len2 = WideCharToMultiByte (CP_UTF8, 0, szTmp2, -1, szTmp2Utf8, MAX_PASSWORD + 1, NULL, NULL);
if (wcscmp (szTmp1, szTmp2) != 0)
+ {
bEnable = FALSE;
+ if(k > 0 && j == k)
+ Warning ("WARNING_PASSWORD_NOT_IDENTICAL", hwndDlg);
+
+ }
else if (utf8Len1 <= 0)
bEnable = FALSE;
else
{
if (k >= MIN_PASSWORD || keyFilesEnabled)
bEnable = TRUE;
else
bEnable = FALSE;
}
@@ -138,25 +144,20 @@ BOOL CheckPasswordLength (HWND hwndDlg, unsigned __int32 passwordLength, int pim
{
BOOL bootPimCondition = (bForBoot && (bootPRF != SHA512 && bootPRF != WHIRLPOOL))? TRUE : FALSE;
BOOL bCustomPimSmall = ((pim != 0) && (pim < (bootPimCondition? 98 : 485)))? TRUE : FALSE;
if (passwordLength < PASSWORD_LEN_WARNING)
{
if (bCustomPimSmall)
{
Error (bootPimCondition? "BOOT_PIM_REQUIRE_LONG_PASSWORD": "PIM_REQUIRE_LONG_PASSWORD", hwndDlg);
return FALSE;
}
-
-#ifndef _DEBUG
- if (!bSkipPasswordWarning && (MessageBoxW (hwndDlg, GetString ("PASSWORD_LENGTH_WARNING"), lpszTitle, MB_YESNO|MB_ICONWARNING|MB_DEFBUTTON2) != IDYES))
- return FALSE;
-#endif
}
#ifndef _DEBUG
else if (bCustomPimSmall)
{
if (!bSkipPimWarning && AskWarnNoYes ("PIM_SMALL_WARNING", hwndDlg) != IDYES)
return FALSE;
}
#endif
if ((pim != 0) && (pim > (bootPimCondition? 98 : 485)))
@@ -556,11 +557,10 @@ error:
&& bDevice
&& !UacElevated
&& IsUacSupported ())
return nStatus;
if (nStatus != 0)
handleError (hwndDlg, nStatus, SRC_POS);
return nStatus;
}
-
diff --git a/src/Format/Format.rc b/src/Format/Format.rc
index d4a9a5f5..8a14f413 100644
--- a/src/Format/Format.rc
+++ b/src/Format/Format.rc
@@ -78,27 +78,27 @@ IDR_FORMAT_TLB TYPELIB "Format.tlb"
//
// Dialog
//
IDD_VOL_CREATION_WIZARD_DLG DIALOGEX 0, 0, 450, 250
STYLE DS_SETFONT | DS_SETFOREGROUND | DS_FIXEDSYS | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "VeraCrypt Volume Creation Wizard"
CLASS "VeraCryptCustomDlg"
FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
- PUSHBUTTON "&Help",IDHELP,166,234,60,14
- PUSHBUTTON "",IDC_PREV,238,234,60,14
- DEFPUSHBUTTON "",IDC_NEXT,310,234,60,14
+ PUSHBUTTON "&Documentation",IDHELP,166,234,60,14
+ PUSHBUTTON "",IDC_PREV,243,234,60,14
+ DEFPUSHBUTTON "",IDC_NEXT,305,234,60,14
PUSHBUTTON "Cancel",IDCANCEL,382,234,60,14
- LTEXT "",IDC_BOX_TITLE,160,8,283,17
- GROUPBOX "",IDC_STATIC,4,0,439,230
- CONTROL 116,IDC_BITMAP_WIZARD,"Static",SS_BITMAP | SS_SUNKEN,10,9,137,193
+ LTEXT "",IDC_BOX_TITLE,160,10,283,17
+ GROUPBOX "",IDC_STATIC,4,0,440,230
+ CONTROL 116,IDC_BITMAP_WIZARD,"Static",SS_BITMAP | SS_SUNKEN,10,18,137,200
LTEXT "",IDC_POS_BOX,160,24,281,193
END
IDD_CIPHER_PAGE_DLG DIALOGEX 0, 0, 276, 193
STYLE DS_SETFONT | DS_FIXEDSYS | DS_CONTROL | WS_CHILD
FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
COMBOBOX IDC_COMBO_BOX,7,23,172,126,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
PUSHBUTTON "&Test",IDC_CIPHER_TEST,191,22,81,14
PUSHBUTTON "&Benchmark",IDC_BENCHMARK,191,122,81,14
@@ -107,29 +107,35 @@ BEGIN
GROUPBOX "Encryption Algorithm",IDT_ENCRYPTION_ALGO,0,10,273,131
GROUPBOX "Hash Algorithm",IDT_HASH_ALGO,0,156,273,35
LTEXT "More information",IDC_LINK_MORE_INFO_ABOUT_CIPHER,7,124,176,10,SS_NOTIFY
LTEXT "Information on hash algorithms",IDC_LINK_HASH_INFO,121,171,148,8,SS_NOTIFY
END
IDD_PASSWORD_PAGE_DLG DIALOGEX 0, 0, 276, 193
STYLE DS_SETFONT | DS_FIXEDSYS | DS_CONTROL | WS_CHILD
FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
- EDITTEXT IDC_PASSWORD,71,3,202,14,ES_PASSWORD | ES_AUTOHSCROLL
- EDITTEXT IDC_VERIFY,71,19,202,14,ES_PASSWORD | ES_AUTOHSCROLL
- CONTROL "U&se keyfiles",IDC_KEYFILES_ENABLE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,71,35,103,10
- PUSHBUTTON "&Keyfiles...",IDC_KEY_FILES,182,36,91,14,WS_DISABLED
- CONTROL "&Display password",IDC_SHOW_PASSWORD,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,71,45,108,11,WS_EX_TRANSPARENT
- CONTROL "Use P&IM",IDC_PIM_ENABLE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,71,56,114,10
- RTEXT "Password:",IDT_PASSWORD,1,6,68,8
- RTEXT "&Confirm:",IDT_CONFIRM,1,23,68,8
- LTEXT "",IDC_BOX_HELP,0,71,273,121
+ EDITTEXT IDC_PASSWORD,69,3,202,14,ES_PASSWORD | ES_AUTOHSCROLL
+ EDITTEXT IDC_VERIFY,69,20,202,14,ES_PASSWORD | ES_AUTOHSCROLL
+ LTEXT "Password strength: ", IDT_PASSWORD_STRENGTH, 71, 54, 70, 10
+ LTEXT "", PASSWORD_METER, 140, 55, 50, 20
+ CONTROL "&Display password",IDC_SHOW_PASSWORD,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,71,41,108,11,WS_EX_TRANSPARENT
+ RTEXT "Password:", IDT_PASSWORD, 1, 6, 40, 8
+ RTEXT "&Confirm:", IDT_CONFIRM, 1, 23, 40, 8
+ LTEXT "", IDC_BOX_HELP, 1, 95, 270, 120
+ PUSHBUTTON "Advanced features", IDC_ADVANCE, 203, 156, 68, 14, NOT WS_VISIBLE
+ CONTROL "",IDC_SYS_POOL_CONTENTS,"Static",SS_LEFTNOWORDWRAP | WS_GROUP | NOT WS_VISIBLE,33,17,209,63,WS_EX_TRANSPARENT
+ CONTROL "", IDC_ENTROPY_BAR, "msctls_progress32", WS_BORDER | NOT WS_VISIBLE, 11, 140, 202, 6
+ CONTROL "U&se keyfiles",IDC_KEYFILES_ENABLE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,71,64,103,10
+ PUSHBUTTON "&Keyfiles...",IDC_KEY_FILES,192,65,71,14,WS_DISABLED
+ CONTROL "Use P&IM",IDC_PIM_ENABLE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,71,76,114,10
+
END
IDD_SIZE_PAGE_DLG DIALOGEX 0, 0, 276, 193
STYLE DS_SETFONT | DS_FIXEDSYS | DS_CONTROL | WS_CHILD
FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
EDITTEXT IDC_SIZEBOX,0,22,96,14,ES_AUTOHSCROLL | ES_NUMBER
CONTROL "&KB",IDC_KB,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,105,25,27,10
CONTROL "&MB",IDC_MB,"Button",BS_AUTORADIOBUTTON,140,25,27,10
CONTROL "&GB",IDC_GB,"Button",BS_AUTORADIOBUTTON,175,25,27,10
@@ -195,21 +201,22 @@ BEGIN
LTEXT "More information about system encryption",IDC_MORE_INFO_ON_SYS_ENCRYPTION,16,177,253,10,SS_NOTIFY
LTEXT "Creates a virtual encrypted disk within a file. Recommended for inexperienced users.",IDT_FILE_CONTAINER,16,20,253,16
LTEXT "Encrypts a non-system partition on any internal or external drive (e.g. a flash drive). Optionally, creates a hidden volume.",IDT_NON_SYS_DEVICE,16,68,253,26
LTEXT "Encrypts the partition/drive where Windows is installed. Anyone who wants to gain access and use the system, read and write files, etc., will need to enter the correct password each time before Windows boots. Optionally, creates a hidden system.",IDT_SYS_DEVICE,16,112,253,59
END
IDD_INFO_PAGE_DLG DIALOGEX 0, 0, 276, 193
STYLE DS_SETFONT | DS_FIXEDSYS | DS_CONTROL | WS_CHILD
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
- LTEXT "",IDC_BOX_HELP,0,31,269,155
+ LTEXT "",IDC_BOX_HELP,0,15,267,155
+ CONTROL "", IDC_CHECKBOX_PRETEST, "Button", BS_AUTOCHECKBOX | BS_MULTILINE | NOT WS_VISIBLE, 0, 150, 267, 50
END
IDD_HIDVOL_HOST_FILL_PAGE_DLG DIALOGEX 0, 0, 276, 193
STYLE DS_SETFONT | DS_FIXEDSYS | DS_CONTROL | WS_CHILD
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
LTEXT "",IDC_BOX_HELP,0,6,269,167
PUSHBUTTON "Open Outer Volume",IDC_OPEN_OUTER_VOLUME,0,176,85,14
END
@@ -260,25 +267,26 @@ BEGIN
"Button",BS_AUTORADIOBUTTON,0,7,269,10
CONTROL "Encrypt the whole drive",IDC_WHOLE_SYS_DRIVE,"Button",BS_AUTORADIOBUTTON,0,67,269,10
LTEXT "Select this option to encrypt the partition where the currently running Windows operating system is installed.",IDT_SYS_PARTITION,16,20,253,42
LTEXT "",IDT_WHOLE_SYS_DRIVE,16,82,253,104
END
IDD_SYSENC_RESCUE_DISK_CREATION_DLG DIALOGEX 0, 0, 276, 193
STYLE DS_SETFONT | DS_FIXEDSYS | DS_CONTROL | WS_CHILD
FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
- EDITTEXT IDC_RESCUE_DISK_ISO_PATH,0,180,201,13,ES_AUTOHSCROLL
- PUSHBUTTON "Bro&wse...",IDC_BROWSE,204,179,70,14
- LTEXT "",IDT_RESCUE_DISK_INFO,0,1,273,137
+ EDITTEXT IDC_RESCUE_DISK_ISO_PATH, 0, 159, 180, 13, ES_AUTOHSCROLL
+ PUSHBUTTON "Bro&wse...",IDC_BROWSE,185,159,70,14
+ LTEXT "",IDT_RESCUE_DISK_INFO,0,1,266,137
+ LTEXT "",IDT_RESCUE_DISK_INFO_2,0,135,266,20
CONTROL "Skip Rescue Disk verification",IDC_SKIP_RESCUE_VERIFICATION,
- "Button",BS_AUTOCHECKBOX | WS_TABSTOP,0,166,273,10
+ "Button",BS_AUTOCHECKBOX | WS_TABSTOP,0,178,273,10
END
IDD_SYSENC_COLLECTING_RANDOM_DATA_DLG DIALOGEX 0, 0, 276, 193
STYLE DS_SETFONT | DS_FIXEDSYS | DS_CONTROL | WS_CHILD
FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
CONTROL "Display pool content",IDC_DISPLAY_POOL_CONTENTS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,93,266,10
CONTROL "",IDC_SYS_POOL_CONTENTS,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,33,17,209,63,WS_EX_TRANSPARENT
LTEXT "IMPORTANT: Move your mouse as randomly as possible within this window. The longer you move it, the better. This significantly increases the cryptographic strength of the encryption keys. Then click Next to continue.",IDT_COLLECTING_RANDOM_DATA_NOTE,10,107,265,63
GROUPBOX "Current pool content (partial)",IDT_PARTIAL_POOL_CONTENTS,0,5,276,83
@@ -293,51 +301,60 @@ BEGIN
CONTROL "Single-boot",IDC_SINGLE_BOOT,"Button",BS_AUTORADIOBUTTON,0,7,269,10
CONTROL "Multi-boot",IDC_MULTI_BOOT,"Button",BS_AUTORADIOBUTTON,0,75,217,10
LTEXT "Select this option if there is only one operating system installed on this computer (even if it has multiple users).",IDT_SINGLE_BOOT,16,20,253,48
LTEXT "Select this option if there are two or more operating systems installed on this computer.\n\nFor example:\n- Windows XP and Windows XP\n- Windows XP and Windows Vista\n- Windows and Mac OS X\n- Windows and Linux\n- Windows, Linux and Mac OS X",IDT_MULTI_BOOT,16,89,253,90
END
IDD_SYSENC_RESCUE_DISK_BURN_PAGE_DLG DIALOGEX 0, 0, 276, 193
STYLE DS_SETFONT | DS_FIXEDSYS | DS_CONTROL | WS_CHILD
FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
- LTEXT "Download CD/DVD recording software",IDC_DOWNLOAD_CD_BURN_SOFTWARE,0,159,273,10,SS_NOTIFY
- LTEXT "",IDT_RESCUE_DISK_BURN_INFO,0,4,273,148
+ LTEXT "",IDT_RESCUE_DISK_BURN_INFO,0,15,275,170
END
IDD_SYSENC_WIPE_MODE_PAGE_DLG DIALOGEX 0, 0, 276, 193
STYLE DS_SETFONT | DS_FIXEDSYS | DS_CONTROL | WS_CHILD
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
- COMBOBOX IDC_WIPE_MODE,88,0,138,90,CBS_DROPDOWNLIST | WS_TABSTOP
- RTEXT "Wipe mode:",IDT_WIPE_MODE,0,2,83,8,0,WS_EX_RIGHT
- LTEXT "",IDT_WIPE_MODE_INFO,0,19,269,167
+ CONTROL "A", IDC_CHECKLIST_A, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 0, 13, 10, 10
+ CONTROL "B", IDC_CHECKLIST_B, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 0, 60, 10, 10
+ CONTROL "C", IDC_CHECKLIST_C, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 0, 135, 10, 10
+ LTEXT " I remember my Password", IDC_REMEMBER_PASSWORD, 11, 13, 212, 10
+ LTEXT " I securely stored the Rescue Disk", IDC_STORE_RESCUE_DISK, 11, 60, 217, 10
+ LTEXT " I considered doing a backup of my personal Data", IDC_BACKUP_DATA, 11, 135, 226, 10
+ LTEXT "", IDT_REMEMBER_PASSWORD, 16, 26, 205, 32
+ LTEXT "", IDT_STORE_RESCUE_DISK, 16, 73, 205, 60
+ PUSHBUTTON "",IDC_BROWSE,16,109,60,14
+ LTEXT "", IDT_BACKUP_DATA, 16, 146, 205, 72
+ COMBOBOX IDC_WIPE_MODE,88,0,138,90,CBS_DROPDOWNLIST | WS_TABSTOP
+ RTEXT "Wipe mode:", IDT_WIPE_MODE,0,2,83,8,0,WS_EX_RIGHT
+ LTEXT "", IDT_WIPE_MODE_INFO,0,19,269,167
END
IDD_INPLACE_ENCRYPTION_PAGE_DLG DIALOGEX 0, 0, 276, 193
STYLE DS_SETFONT | DS_FIXEDSYS | DS_CONTROL | WS_CHILD
FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
- COMBOBOX IDC_WIPE_MODE,96,13,125,90,CBS_DROPDOWNLIST | WS_TABSTOP
- PUSHBUTTON "&Pause",IDC_PAUSE,204,40,63,14
- LTEXT "More information",IDC_MORE_INFO_SYS_ENCRYPTION,1,176,266,10,SS_NOTIFY
- LTEXT "",IDC_BYTESWRITTEN,29,58,39,11,SS_CENTERIMAGE,WS_EX_TRANSPARENT | WS_EX_RIGHT | WS_EX_STATICEDGE
- RTEXT "",IDC_WRITESPEED,110,58,56,11,SS_CENTERIMAGE,WS_EX_TRANSPARENT | WS_EX_RIGHT | WS_EX_STATICEDGE
- RTEXT "",IDC_TIMEREMAIN,212,58,54,11,SS_CENTERIMAGE,WS_EX_TRANSPARENT | WS_EX_RIGHT | WS_EX_STATICEDGE
- RTEXT "Wipe mode:",IDT_WIPE_MODE,6,15,85,8,0,WS_EX_RIGHT
- CONTROL "",IDC_PROGRESS_BAR,"msctls_progress32",PBS_SMOOTH | WS_BORDER,6,41,192,12
- RTEXT "Done",IDT_DONE,5,59,22,8
- RTEXT "Status",IDT_STATUS,73,59,33,8
- RTEXT "Left",IDT_LEFT,172,59,35,8
- LTEXT "",IDC_BOX_HELP,1,77,266,95
- GROUPBOX "Options",IDT_FORMAT_OPTIONS,0,3,267,29
- GROUPBOX "",IDC_STATIC,0,32,267,41
+ COMBOBOX IDC_WIPE_MODE,96,60,125,90,CBS_DROPDOWNLIST | WS_TABSTOP
+ PUSHBUTTON "&Pause",IDC_PAUSE,204,8,63,14
+ LTEXT "More information",IDC_MORE_INFO_SYS_ENCRYPTION,1,176,266,10,SS_NOTIFY | NOT WS_VISIBLE
+ LTEXT "",IDC_BYTESWRITTEN,29,26,39,11,SS_CENTERIMAGE,WS_EX_TRANSPARENT | WS_EX_RIGHT | WS_EX_STATICEDGE
+ RTEXT "",IDC_WRITESPEED,110,26,56,11,SS_CENTERIMAGE,WS_EX_TRANSPARENT | WS_EX_RIGHT | WS_EX_STATICEDGE
+ RTEXT "",IDC_TIMEREMAIN,212,26,54,11,SS_CENTERIMAGE,WS_EX_TRANSPARENT | WS_EX_RIGHT | WS_EX_STATICEDGE
+ RTEXT "Wipe mode:",IDT_WIPE_MODE,6,62,85,8,0,WS_EX_RIGHT
+ CONTROL "",IDC_PROGRESS_BAR,"msctls_progress32",PBS_SMOOTH | WS_BORDER,6,9,192,12
+ RTEXT "Done",IDT_DONE,5,27,22,8
+ RTEXT "Status",IDT_STATUS,73,27,33,8
+ RTEXT "Left",IDT_LEFT,172,27,35,8
+ LTEXT "",IDC_BOX_HELP,1,100,266,90
+ GROUPBOX "",IDC_STATIC,0,3,268,41
+ GROUPBOX "Options",IDT_FORMAT_OPTIONS,0,50,268,29
END
IDD_SYSENC_KEYS_GEN_PAGE_DLG DIALOGEX 0, 0, 276, 193
STYLE DS_SETFONT | DS_FIXEDSYS | DS_CONTROL | WS_CHILD
FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
CONTROL "Display generated keys (their portions)",IDC_DISPLAY_KEYS,
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,51,110,216,10
CONTROL "",IDC_HEADER_KEY,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,100,87,163,8,WS_EX_TRANSPARENT
LTEXT "",IDC_DISK_KEY,100,95,163,8,0,WS_EX_TRANSPARENT
@@ -362,27 +379,43 @@ FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
LTEXT "",IDT_SYSENC_DRIVE_ANALYSIS_INFO,0,10,267,109
CONTROL "",IDC_PROGRESS_BAR,"msctls_progress32",PBS_SMOOTH | WS_BORDER,0,135,267,12
LTEXT "Progress:",IDT_PROGRESS,2,124,172,8
END
IDD_SYSENC_TYPE_PAGE_DLG DIALOGEX 0, 0, 276, 193
STYLE DS_SETFONT | DS_FIXEDSYS | DS_CONTROL | WS_CHILD
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
- CONTROL "Normal",IDC_SYSENC_NORMAL,"Button",BS_AUTORADIOBUTTON,0,7,269,10
- CONTROL "Hi&dden",IDC_SYSENC_HIDDEN,"Button",BS_AUTORADIOBUTTON,0,64,269,10
- LTEXT "More information",IDC_HIDDEN_SYSENC_INFO_LINK,16,173,253,10,SS_NOTIFY
- LTEXT "",IDC_BOX_HELP_SYSENC_NORMAL,16,20,253,41
- LTEXT "",IDC_BOX_HELP,16,78,253,90
+ LTEXT "", IDC_BOX_HELP, 5, 20, 250, 16
+ LTEXT "", IDT_SYSENC_INFO_2, 5, 50, 250, 60
+ PUSHBUTTON "Advanced features", IDC_ADVANCE_INTRO, 190, 160, 68, 14
+ CONTROL "", IDC_INFORMATION_TIP, "Static", SS_ICON | SS_NOTIFY, 262,163,10,5
+END
+
+IDD_ADVANCE_MBR DIALOGEX 102, -10, 245, 233
+STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Advanced Options"
+FONT 8, "MS Shell Dlg", 0, 0, 0x1
+BEGIN
+ CONTROL " Normal",IDC_SYSENC_NORMAL,"Button", BS_AUTOCHECKBOX, 10,40,200,10
+ CONTROL " Hi&dden",IDC_SYSENC_HIDDEN,"Button", BS_AUTOCHECKBOX, 10,99,200,10
+ LTEXT "Select this option if you merely want to encrypt the system partition or the entire system drive.",-1,26,57,200,30
+ LTEXT "If you select this option, you will create a hidden operating system whose existence should be impossible to prove (provided that certain guidelines are followed). Thus, you will not have to decrypt or reveal the password to the hidden operating system.",-1,26,116,200,50
+ LTEXT "For a detailed explanation, please click the Help button. ",-1,26,180,200,10
+ LTEXT "IMPORTANT: Only advanced users should make modifications on this page.", -1, 10, 12, 217, 19,
+
+ GROUPBOX "", -1, 6, 30, 232, 178
+ DEFPUSHBUTTON "OK", IDOK, 129, 213, 50, 14
+ PUSHBUTTON "Cancel", IDCANCEL, 180, 213, 50, 14
+ PUSHBUTTON "&Help",IDHELP,15,213,50,14
END
-
IDD_SYSENC_HIDDEN_OS_REQ_CHECK_PAGE_DLG DIALOGEX 0, 0, 276, 193
STYLE DS_SETFONT | DS_FIXEDSYS | DS_CONTROL | WS_CHILD
FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
LTEXT "More information",IDC_HIDDEN_SYSENC_INFO_LINK,0,172,273,10,SS_NOTIFY
LTEXT "",IDC_BOX_HELP,0,2,273,166
END
IDD_DEVICE_WIPE_PAGE_DLG DIALOGEX 0, 0, 276, 193
STYLE DS_SETFONT | DS_FIXEDSYS | DS_CONTROL | WS_CHILD
@@ -446,20 +479,44 @@ STYLE DS_SETFONT | DS_FIXEDSYS | DS_CONTROL | WS_CHILD
FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
EDITTEXT IDC_PIM,74,0,42,14,ES_RIGHT | ES_PASSWORD | ES_AUTOHSCROLL | ES_NUMBER
LTEXT "",IDC_BOX_HELP,0,32,273,142
RTEXT "Volume PIM:",IDT_PIM,1,3,69,8
LTEXT "(Empty or 0 for default iterations)",IDC_PIM_HELP,120,3,153,8
LTEXT "Information on PIM",IDC_LINK_PIM_INFO,0,179,273,8,SS_NOTIFY
CONTROL "Display PIM",IDC_SHOW_PIM,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,74,17,196,10
END
+IDD_ADVANCE DIALOGEX 75, -62, 245, 362
+STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Advanced Algorithm Options"
+FONT 8, "MS Shell Dlg", 400, 0, 0x1
+BEGIN
+ DEFPUSHBUTTON "OK", IDOK, 129, 345, 50, 14
+ PUSHBUTTON "Cancel", IDCANCEL, 180, 345, 50, 14
+ COMBOBOX IDC_COMBO_BOX_HASH_ALGO, 21, 47, 137, 130, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
+ LTEXT "", IDC_SHA512_HELP, 21, 65, 205, 40
+ COMBOBOX IDC_COMBO_BOX, 21, 113, 137, 126, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
+ LTEXT "", IDC_BOX_HELP, 21, 131, 205, 40
+ PUSHBUTTON "&Verify", IDC_CIPHER_TEST, 40, 181, 59, 14
+ PUSHBUTTON "&Benchmark", IDC_BENCHMARK, 140, 181, 59, 14, BS_PUSHBUTTON | WS_TABSTOP | WS_VISIBLE
+ GROUPBOX "Encryption Algorithm", IDT_ENCRYPTION_ALGO, 14, 100, 217, 60
+ GROUPBOX "Hash Algorithm", IDT_HASH_ALGO, 14, 35, 217, 60
+ GROUPBOX "Test Algorithms", IDT_TEST_ALGO, 14, 168, 217, 35
+ GROUPBOX "PIM", -1, 14, 206, 217, 59
+ CONTROL "Modify P&IM", IDC_PIM_ENABLE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 19, 217, 97, 10
+ LTEXT "", IDT_PIM_INFO, 21, 231, 203, 25
+ GROUPBOX "Wipe Mode", IDT_WIPE_MODE, 14, 270, 217, 71
+ COMBOBOX IDC_WIPE_MODE, 21, 284, 127, 90, CBS_DROPDOWNLIST | WS_TABSTOP
+ LTEXT "", IDT_WIPE_INFO, 21, 303, 200, 32
+ LTEXT "", IDT_IMPORTANT_NOTE, 18, 10, 217, 19
+END
#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//
1 TEXTINCLUDE
BEGIN
"resource.h\0"
@@ -616,20 +673,36 @@ BEGIN
END
IDD_INPLACE_ENCRYPTION_PAGE_DLG, DIALOG
BEGIN
RIGHTMARGIN, 267
BOTTOMMARGIN, 187
HORZGUIDE, 80
HORZGUIDE, 96
END
+ IDD_ADVANCE, DIALOG
+ BEGIN
+ LEFTMARGIN, 7
+ RIGHTMARGIN, 238
+ TOPMARGIN, 7
+ BOTTOMMARGIN, 242
+ END
+
+ IDD_ADVANCE_MBR, DIALOG
+ BEGIN
+ LEFTMARGIN, 7
+ RIGHTMARGIN, 238
+ TOPMARGIN, 7
+ BOTTOMMARGIN, 242
+ END
+
IDD_SYSENC_KEYS_GEN_PAGE_DLG, DIALOG
BEGIN
RIGHTMARGIN, 267
BOTTOMMARGIN, 174
HORZGUIDE, 80
HORZGUIDE, 96
END
IDD_UNIVERSAL_DUAL_CHOICE_PAGE_DLG, DIALOG
BEGIN
@@ -734,11 +807,10 @@ END
#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//
#include "..\\common\\common.rc"
/////////////////////////////////////////////////////////////////////////////
#endif // not APSTUDIO_INVOKED
-
diff --git a/src/Format/Resource.h b/src/Format/Resource.h
index c37a6f4a..d031a7dd 100644
--- a/src/Format/Resource.h
+++ b/src/Format/Resource.h
@@ -111,21 +111,20 @@
#define IDC_MORE_INFO 1072
#define IDC_MORE_INFO_ON_SYS_ENCRYPTION 1073
#define IDT_COLLECTING_RANDOM_DATA_NOTE 1074
#define IDC_MORE_INFO_ON_CONTAINERS 1075
#define IDC_SINGLE_BOOT 1076
#define IDC_MULTI_BOOT 1077
#define IDT_MULTI_BOOT 1078
#define IDT_SINGLE_BOOT 1079
#define IDC_SYS_POOL_CONTENTS 1080
#define IDT_PARTIAL_POOL_CONTENTS 1081
-#define IDC_DOWNLOAD_CD_BURN_SOFTWARE 1082
#define IDT_RESCUE_DISK_BURN_INFO 1083
#define IDT_WIPE_MODE_INFO 1084
#define IDC_WIPE_MODE 1085
#define IDC_SELECT 1086
#define IDT_SYSENC_KEYS_GEN_INFO 1087
#define IDC_DISPLAY_KEYS 1088
#define IDC_PAUSE 1089
#define IDT_WIPE_MODE 1090
#define IDC_MORE_INFO_SYS_ENCRYPTION 1091
#define IDC_BOX_HELP_NORMAL_VOL 1092
@@ -139,20 +138,44 @@
#define IDT_PASS 1100
#define IDC_DEVICE_TRANSFORM_MODE_FORMAT 1101
#define IDC_DEVICE_TRANSFORM_MODE_INPLACE 1102
#define IDC_DRIVE_LETTER_LIST 1103
#define IDT_DRIVE_LETTER 1104
#define IDC_LINK_PIM_INFO 1105
#define IDC_SHOW_PIM 1106
#define IDC_TB 1107
#define IDC_SKIP_RESCUE_VERIFICATION 1108
#define SPARSE_FILE 1109
+#define IDC_ADVANCE_INTRO 1110
+#define IDD_ADVANCE 1111
+#define IDC_ADVANCE 1112
+#define PASSWORD_METER 1113
+#define IDC_REMEMBER_PASSWORD 1114
+#define IDC_STORE_RESCUE_DISK 1115
+#define IDC_BACKUP_DATA 1116
+#define IDT_REMEMBER_PASSWORD 1117
+#define IDT_STORE_RESCUE_DISK 1118
+#define IDT_BACKUP_DATA 1119
+#define IDC_CHECKLIST_A 1120
+#define IDC_CHECKLIST_B 1121
+#define IDC_CHECKLIST_C 1122
+#define IDD_ADVANCE_MBR 1123
+#define IDC_INFORMATION_TIP 1124
+#define IDC_SHA512_HELP 1125
+#define IDT_PASSWORD_STRENGTH 1126
+#define IDT_RESCUE_DISK_INFO_2 1127
+#define IDT_SYSENC_INFO_2 1128
+#define IDT_IMPORTANT_NOTE 1129
+#define IDT_PIM_INFO 1130
+#define IDT_WIPE_INFO 1131
+#define IDT_TEST_ALGO 1132
+#define IDC_CHECKBOX_PRETEST 1133
// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NO_MFC 1
#define _APS_NEXT_RESOURCE_VALUE 134
#define _APS_NEXT_COMMAND_VALUE 40001
#define _APS_NEXT_CONTROL_VALUE 1110
#define _APS_NEXT_SYMED_VALUE 101
diff --git a/src/Format/Tcformat.c b/src/Format/Tcformat.c
index efd95caf..db0a8209 100644
--- a/src/Format/Tcformat.c
+++ b/src/Format/Tcformat.c
@@ -6,27 +6,32 @@
Encryption for the Masses 2.02a, which is Copyright (c) 1998-2000 Paul Le Roux
and which is governed by the 'License Agreement for Encryption for the Masses'
Modifications and additions to the original source code (contained in this file)
and all other portions of this file are Copyright (c) 2013-2017 IDRIX
and are governed by the Apache License 2.0 the full text of which is
contained in the file License.txt included in VeraCrypt binary and source
code distribution packages. */
#include "Tcdefs.h"
+#include <iostream>
+#include <fstream>
+#include <set>
+#include <iterator>
#include <stdlib.h>
#include <limits.h>
#include <time.h>
#include <errno.h>
#include <io.h>
#include <sys/stat.h>
#include <shlobj.h>
+#include <commctrl.h>
#include "Crypto.h"
#include "cpu.h"
#include "Apidrvr.h"
#include "Dlgcode.h"
#include "Language.h"
#include "Combo.h"
#include "Registry.h"
#include "Boot/Windows/BootDefs.h"
#include "Common/Common.h"
@@ -121,20 +126,29 @@ enum sys_encryption_cmd_line_switches
{
SYSENC_COMMAND_NONE = 0,
SYSENC_COMMAND_RESUME,
SYSENC_COMMAND_STARTUP_SEQ_RESUME,
SYSENC_COMMAND_ENCRYPT,
SYSENC_COMMAND_DECRYPT,
SYSENC_COMMAND_CREATE_HIDDEN_OS,
SYSENC_COMMAND_CREATE_HIDDEN_OS_ELEV
};
+enum password_status
+{
+ very_weak = 0,
+ weak,
+ medium,
+ strong,
+ very_strong
+};
+
typedef struct
{
int NumberOfSysDrives; // Number of drives that contain an operating system. -1: unknown, 1: one, 2: two or more
int MultipleSystemsOnDrive; // Multiple systems are installed on the drive where the currently running system resides. -1: unknown, 0: no, 1: yes
int BootLoaderLocation; // Boot loader (boot manager) installed in: 1: MBR/1st cylinder, 0: partition/bootsector: -1: unknown
int BootLoaderBrand; // -1: unknown, 0: Microsoft Windows, 1: any non-Windows boot manager/loader
int SystemOnBootDrive; // If the currently running operating system is installed on the boot drive. -1: unknown, 0: no, 1: yes
} SYSENC_MULTIBOOT_CFG;
#define SYSENC_PAUSE_RETRY_INTERVAL 100
@@ -153,21 +167,28 @@ volatile int WizardMode = DEFAULT_VOL_CREATION_WIZARD_MODE; /* IMPORTANT: Never
volatile BOOL bHiddenOS = FALSE; /* If TRUE, we are performing or (or supposed to perform) actions relating to an operating system installed in a hidden volume (i.e., encrypting a decoy OS partition or creating the outer/hidden volume for the hidden OS). To determine or set the phase of the process, call ChangeHiddenOSCreationPhase() and DetermineHiddenOSCreationPhase()) */
BOOL bDirectSysEncMode = FALSE;
BOOL bDirectSysEncModeCommand = SYSENC_COMMAND_NONE;
BOOL DirectDeviceEncMode = FALSE;
BOOL DirectNonSysInplaceDecStartMode = FALSE;
BOOL DirectNonSysInplaceEncResumeMode = FALSE;
BOOL DirectNonSysInplaceDecResumeMode = FALSE;
BOOL DirectPromptNonSysInplaceEncResumeMode = FALSE;
BOOL DirectCreationMode = FALSE;
-volatile BOOL bInPlaceEncNonSys = FALSE; /* If TRUE, existing data on a non-system partition/volume are to be encrypted (or decrypted if bInPlaceDecNonSys is TRUE) in place (for system encryption, this flag is ignored) */
+int iIconX=0;
+int iIconY=0;
+HWND hDlgItemTooltip = NULL;
+HANDLE hIconTooltip = NULL;
+char tempPassword[MAX_PASSWORD + 1];
+int iPasswordStrength;
+
+volatile BOOL bInPlaceEncNonSys = TRUE; /* If TRUE, existing data on a non-system partition/volume are to be encrypted (or decrypted if bInPlaceDecNonSys is TRUE) in place (for system encryption, this flag is ignored) */
volatile BOOL bInPlaceDecNonSys = FALSE; /* If TRUE, existing data on a non-system partition/volume are to be decrypted in place (for system encryption, this flag is ignored) */
volatile BOOL bInPlaceEncNonSysResumed = FALSE; /* If TRUE, the wizard is supposed to resume (or has resumed) process of non-system in-place encryption/decryption. */
volatile BOOL bFirstNonSysInPlaceEncResumeDone = FALSE;
__int64 NonSysInplaceEncBytesDone = 0;
__int64 NonSysInplaceEncTotalSize = 0;
BOOL bDeviceTransformModeChoiceMade = FALSE; /* TRUE if the user has at least once manually selected the 'in-place' or 'format' option (on the 'device transform mode' page). */
int nNeedToStoreFilesOver4GB = 0; /* Whether the user wants to be able to store files larger than 4GB on the volume: -1 = Undecided or error, 0 = No, 1 = Yes */
int nVolumeEA = 1; /* Default encryption algorithm */
BOOL bSystemEncryptionInProgress = FALSE; /* TRUE when encrypting/decrypting the system partition/drive (FALSE when paused). */
BOOL bWholeSysDrive = FALSE; /* Whether to encrypt the entire system drive or just the system partition. */
@@ -229,20 +250,21 @@ BOOL bKeybLayoutAltKeyWarningShown = FALSE; /* TRUE if the user has been informe
#else
BOOL bWarnDeviceFormatAdvanced = FALSE;
#endif
BOOL bWarnOuterVolSuitableFileSys = TRUE;
Password volumePassword; /* User password */
Password outerVolumePassword; /* Outer volume user password */
char szVerify[MAX_PASSWORD + 1]; /* Tmp password buffer */
char szRawPassword[MAX_PASSWORD + 1]; /* Password before keyfile was applied to it */
+BOOL bNextButtonClicked = FALSE;
int volumePim = 0;
int outerVolumePim = 0;
BOOL bHistoryCmdLine = FALSE; /* History control is always disabled */
BOOL ComServerMode = FALSE;
Password CmdVolumePassword = {0}; /* Password passed from command line */
int CmdVolumeEA = 0;
@@ -294,20 +316,25 @@ volatile int clusterSize = 0;
SYSENC_MULTIBOOT_CFG SysEncMultiBootCfg;
wchar_t SysEncMultiBootCfgOutcome [4096] = {L'N',L'/',L'A',0};
volatile int NonSysInplaceEncStatus = NONSYS_INPLACE_ENC_STATUS_NONE;
LONGLONG nAvailableFreeSpace = -1;
BOOL bIsSparseFilesSupportedByHost = FALSE;
vector <HostDevice> DeferredNonSysInPlaceEncDevices;
+BOOL bChecklistA;
+BOOL bChecklistB;
+BOOL bChecklistC;
+BOOL bCheckboxPretest;
+
int iMaxPasswordLength = MAX_PASSWORD;
// specific definitions and implementation for support of resume operation
// in wait dialog mechanism
void CALLBACK ResumeInPlaceEncWaitThreadProc(void* pArg, HWND hwndDlg)
{
wchar_t szDevicePath[MAX_PATH] = {0};
RawDevicesDlgParam param;
param.devices = GetAvailableHostDevices (false, true, false);
@@ -1412,103 +1439,25 @@ void ComboSelChangeEA (HWND hwndDlg)
{
int nIndex = (int) SendMessage (GetDlgItem (hwndDlg, IDC_COMBO_BOX), CB_GETCURSEL, 0, 0);
if (nIndex == CB_ERR)
{
SetWindowText (GetDlgItem (hwndDlg, IDC_BOX_HELP), L"");
}
else
{
wchar_t name[100];
- wchar_t auxLine[4096];
- wchar_t hyperLink[256] = { 0 };
- int cipherIDs[5];
- int i, cnt = 0;
nIndex = (int) SendMessage (GetDlgItem (hwndDlg, IDC_COMBO_BOX), CB_GETITEMDATA, nIndex, 0);
EAGetName (name, ARRAYSIZE(name),nIndex, 0);
- if (wcscmp (name, L"AES") == 0)
- {
- StringCbPrintfW (hyperLink, sizeof(hyperLink) / 2, GetString ("MORE_INFO_ABOUT"), name);
-
- SetWindowTextW (GetDlgItem (hwndDlg, IDC_BOX_HELP), GetString ("AES_HELP"));
- }
- else if (wcscmp (name, L"Serpent") == 0)
- {
- StringCbPrintfW (hyperLink, sizeof(hyperLink) / 2, GetString ("MORE_INFO_ABOUT"), name);
-
- SetWindowTextW (GetDlgItem (hwndDlg, IDC_BOX_HELP), GetString ("SERPENT_HELP"));
- }
- else if (wcscmp (name, L"Twofish") == 0)
- {
- StringCbPrintfW (hyperLink, sizeof(hyperLink) / 2, GetString ("MORE_INFO_ABOUT"), name);
-
- SetWindowTextW (GetDlgItem (hwndDlg, IDC_BOX_HELP), GetString ("TWOFISH_HELP"));
- }
- else if (wcscmp (name, L"Kuznyechik") == 0)
- {
- StringCbPrintfW (hyperLink, sizeof(hyperLink) / 2, GetString ("MORE_INFO_ABOUT"), name);
-
- SetWindowTextW (GetDlgItem (hwndDlg, IDC_BOX_HELP), GetString ("KUZNYECHIK_HELP"));
- }
- else if (wcscmp (name, L"Camellia") == 0)
- {
- StringCbPrintfW (hyperLink, sizeof(hyperLink) / 2, GetString ("MORE_INFO_ABOUT"), name);
-
- SetWindowTextW (GetDlgItem (hwndDlg, IDC_BOX_HELP), GetString ("CAMELLIA_HELP"));
- }
- else if (EAGetCipherCount (nIndex) > 1)
- {
- // Cascade
- cipherIDs[cnt++] = i = EAGetLastCipher(nIndex);
- while (i = EAGetPreviousCipher(nIndex, i))
- {
- cipherIDs[cnt] = i;
- cnt++;
- }
-
- switch (cnt) // Number of ciphers in the cascade
- {
- case 2:
- StringCbPrintfW (auxLine, sizeof(auxLine), GetString ("TWO_LAYER_CASCADE_HELP"),
- CipherGetName (cipherIDs[1]),
- CipherGetKeySize (cipherIDs[1])*8,
- CipherGetName (cipherIDs[0]),
- CipherGetKeySize (cipherIDs[0])*8);
- break;
-
- case 3:
- StringCbPrintfW (auxLine, sizeof(auxLine), GetString ("THREE_LAYER_CASCADE_HELP"),
- CipherGetName (cipherIDs[2]),
- CipherGetKeySize (cipherIDs[2])*8,
- CipherGetName (cipherIDs[1]),
- CipherGetKeySize (cipherIDs[1])*8,
- CipherGetName (cipherIDs[0]),
- CipherGetKeySize (cipherIDs[0])*8);
- break;
- }
-
- StringCbCopyW (hyperLink, sizeof(hyperLink), GetString ("IDC_LINK_MORE_INFO_ABOUT_CIPHER"));
-
- SetWindowTextW (GetDlgItem (hwndDlg, IDC_BOX_HELP), auxLine);
- }
- else
- {
- // No info available for this encryption algorithm
- SetWindowTextW (GetDlgItem (hwndDlg, IDC_BOX_HELP), L"");
- }
-
-
- // Update hyperlink
- SetWindowTextW (GetDlgItem (hwndDlg, IDC_LINK_MORE_INFO_ABOUT_CIPHER), hyperLink);
- AccommodateTextField (hwndDlg, IDC_LINK_MORE_INFO_ABOUT_CIPHER, FALSE, hUserUnderlineFont);
+ SetWindowTextW (GetDlgItem (hwndDlg, IDC_BOX_HELP), GetString ("AES_HELP_NEW"));
}
}
static void VerifySizeAndUpdate (HWND hwndDlg, BOOL bUpdate)
{
BOOL bEnable = TRUE;
wchar_t szTmp[50];
__int64 lTmp;
__int64 i;
static unsigned __int64 nLastVolumeSize = 0;
@@ -3769,45 +3718,94 @@ BOOL CALLBACK PageDialogProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa
SetWindowTextW (GetDlgItem (GetParent (hwndDlg), IDC_NEXT), GetString ("NEXT"));
SetWindowTextW (GetDlgItem (GetParent (hwndDlg), IDC_PREV), GetString ("PREV"));
SetWindowTextW (GetDlgItem (GetParent (hwndDlg), IDCANCEL), GetString ("CANCEL"));
EnableWindow (GetDlgItem (GetParent (hwndDlg), IDC_NEXT), TRUE);
EnableWindow (GetDlgItem (GetParent (hwndDlg), IDC_PREV), FALSE);
UpdateWizardModeControls (hwndDlg, WizardMode);
break;
case SYSENC_TYPE_PAGE:
+ {
bHiddenVolHost = bHiddenVol = bHiddenOS;
- SetWindowTextW (GetDlgItem (GetParent (hwndDlg), IDC_BOX_TITLE), GetString ("SYSENC_TYPE_PAGE_TITLE"));
-
- SendMessage (GetDlgItem (hwndDlg, IDC_SYSENC_HIDDEN), WM_SETFONT, (WPARAM) hUserBoldFont, (LPARAM) TRUE);
- SendMessage (GetDlgItem (hwndDlg, IDC_SYSENC_NORMAL), WM_SETFONT, (WPARAM) hUserBoldFont, (LPARAM) TRUE);
+ wchar_t finalMsg[8024] = {0};
- DisableIfGpt(GetDlgItem(hwndDlg, IDC_SYSENC_HIDDEN));
+ try
+ {
+ StringCbPrintfW (finalMsg, sizeof(finalMsg),
+ GetString ("SYSENC_TYPE_PAGE_TITLE"),
+ GetSystemDriveLetter ());
+ }
+ catch (Exception &e)
+ {
+ e.Show (hwndDlg);
+ EndMainDlg (MainDlg);
+ return 0;
+ }
- CheckButton (GetDlgItem (hwndDlg, bHiddenOS ? IDC_SYSENC_HIDDEN : IDC_SYSENC_NORMAL));
+ SetWindowTextW (GetDlgItem (GetParent (hwndDlg), IDC_BOX_TITLE), finalMsg);
- SetWindowTextW (GetDlgItem (hwndDlg, IDC_BOX_HELP), GetString ("SYSENC_HIDDEN_TYPE_HELP"));
- SetWindowTextW (GetDlgItem (hwndDlg, IDC_BOX_HELP_SYSENC_NORMAL), GetString ("SYSENC_NORMAL_TYPE_HELP"));
+ memset (finalMsg, 0, sizeof (finalMsg));
+ try
+ {
+ StringCbPrintfW (finalMsg, sizeof(finalMsg),
+ GetString ("SYSENC_INFO"),
+ GetSystemDriveLetter ());
+ }
+ catch (Exception &e)
+ {
+ e.Show (hwndDlg);
+ EndMainDlg (MainDlg);
+ return 0;
+ }
- ToHyperlink (hwndDlg, IDC_HIDDEN_SYSENC_INFO_LINK);
+ SetWindowTextW (GetDlgItem (hwndDlg, IDC_BOX_HELP), finalMsg);
+ SetWindowTextW (GetDlgItem (hwndDlg, IDT_SYSENC_INFO_2), GetString ("SYSENC_INFO_2"));
+
+ if (bSystemIsGPT)
+ {
+ ShowWindow (GetDlgItem(hwndDlg, IDC_ADVANCE_INTRO), SW_HIDE);
+ ShowWindow (GetDlgItem(hwndDlg, IDC_INFORMATION_TIP), SW_HIDE);
+ }
+ else
+ {
+ EnableWindow (GetDlgItem(hwndDlg, IDC_ADVANCE_INTRO), TRUE);
+ iIconX = GetSystemMetrics (SM_CXSMICON);
+ iIconY = GetSystemMetrics (SM_CYSMICON);
+ hIconTooltip = LoadImage (NULL, MAKEINTRESOURCE (104), IMAGE_ICON, iIconX, iIconY, LR_DEFAULTCOLOR);
+ SendDlgItemMessage (hwndDlg, IDC_INFORMATION_TIP, STM_SETICON, (WPARAM) hIconTooltip, 0);
+
+ hDlgItemTooltip = GetDlgItem (hwndDlg, IDC_INFORMATION_TIP);
+ if (hDlgItemTooltip)
+ {
+ CreateToolTip (hwndDlg, hDlgItemTooltip, GetString ("ADV_FEATURES_INTRO_TOOLTIP"));
+ }
+ else
+ {
+ MessageBox (0, TEXT("Cannot find dialog item"), 0, 0);
+ }
+ }
+
EnableWindow (GetDlgItem (GetParent (hwndDlg), IDC_NEXT), TRUE);
EnableWindow (GetDlgItem (GetParent (hwndDlg), IDC_PREV), !bDirectSysEncMode);
SetWindowTextW (GetDlgItem (MainDlg, IDC_NEXT), GetString ("NEXT"));
SetWindowTextW (GetDlgItem (MainDlg, IDC_PREV), GetString ("PREV"));
SetWindowTextW (GetDlgItem (MainDlg, IDCANCEL), GetString ("CANCEL"));
+
+ // Start loading the password dictonary into memory ("need" is just a random word for initializing the process)
+ CheckWord("need");
break;
-
+ }
case SYSENC_HIDDEN_OS_REQ_CHECK_PAGE:
SetWindowTextW (GetDlgItem (GetParent (hwndDlg), IDC_BOX_TITLE), GetString ("SYSENC_HIDDEN_OS_REQ_CHECK_PAGE_TITLE"));
SetWindowTextW (GetDlgItem (hwndDlg, IDC_BOX_HELP), GetString ("SYSENC_HIDDEN_OS_REQ_CHECK_PAGE_HELP"));
SetWindowTextW (GetDlgItem (MainDlg, IDC_NEXT), GetString ("NEXT"));
SetWindowTextW (GetDlgItem (MainDlg, IDC_PREV), GetString ("PREV"));
SetWindowTextW (GetDlgItem (MainDlg, IDCANCEL), GetString ("CANCEL"));
EnableWindow (GetDlgItem (MainDlg, IDC_NEXT), TRUE);
EnableWindow (GetDlgItem (MainDlg, IDC_PREV), bDirectSysEncModeCommand != SYSENC_COMMAND_CREATE_HIDDEN_OS && bDirectSysEncModeCommand != SYSENC_COMMAND_CREATE_HIDDEN_OS_ELEV);
@@ -3828,21 +3826,20 @@ BOOL CALLBACK PageDialogProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa
DisableIfGpt(GetDlgItem(hwndDlg, IDC_WHOLE_SYS_DRIVE));
SetWindowTextW (GetDlgItem (GetParent (hwndDlg), IDC_NEXT), GetString ("NEXT"));
SetWindowTextW (GetDlgItem (GetParent (hwndDlg), IDC_PREV), GetString ("PREV"));
SetWindowTextW (GetDlgItem (GetParent (hwndDlg), IDCANCEL), GetString ("CANCEL"));
EnableWindow (GetDlgItem (GetParent (hwndDlg), IDC_NEXT), TRUE);
EnableWindow (GetDlgItem (GetParent (hwndDlg), IDC_PREV), TRUE);
break;
-
case SYSENC_PRE_DRIVE_ANALYSIS_PAGE:
Init2RadButtonPageYesNo (SysEncDetectHiddenSectors);
SetWindowTextW (GetDlgItem (GetParent (hwndDlg), IDC_BOX_TITLE), GetString ("SYSENC_PRE_DRIVE_ANALYSIS_TITLE"));
SetWindowTextW (GetDlgItem (hwndDlg, IDC_BOX_HELP), GetString ("SYSENC_PRE_DRIVE_ANALYSIS_HELP"));
break;
case SYSENC_DRIVE_ANALYSIS_PAGE:
@@ -4356,105 +4353,147 @@ BOOL CALLBACK PageDialogProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa
EnableWindow (GetDlgItem (GetParent (hwndDlg), IDC_PREV), !bInPlaceEncNonSys);
EnableWindow (GetDlgItem (GetParent (hwndDlg), IDC_NEXT), TRUE);
}
break;
case PASSWORD_PAGE:
{
wchar_t str[1000];
+ EnableWindow(GetDlgItem(hwndDlg, IDC_VERIFY), FALSE);
+
hPasswordInputField = GetDlgItem (hwndDlg, IDC_PASSWORD);
hVerifyPasswordInputField = GetDlgItem (hwndDlg, IDC_VERIFY);
ToNormalPwdField (hwndDlg, IDC_PASSWORD);
ToNormalPwdField (hwndDlg, IDC_VERIFY);
if (SysEncInEffect ())
{
ToBootPwdField (hwndDlg, IDC_PASSWORD);
ToBootPwdField (hwndDlg, IDC_VERIFY);
- StringCbPrintfW (OrigKeyboardLayout, sizeof(OrigKeyboardLayout), L"%08X", (DWORD) GetKeyboardLayout (NULL) & 0xFFFF);
+ StringCbPrintfW(OrigKeyboardLayout, sizeof(OrigKeyboardLayout), L"%08X", (DWORD)GetKeyboardLayout(NULL) & 0xFFFF);
- if ((DWORD) GetKeyboardLayout (NULL) != 0x00000409 && (DWORD) GetKeyboardLayout (NULL) != 0x04090409)
+ if ((DWORD)GetKeyboardLayout(NULL) != 0x00000409 && (DWORD)GetKeyboardLayout(NULL) != 0x04090409)
{
- DWORD keybLayout = (DWORD) LoadKeyboardLayout (L"00000409", KLF_ACTIVATE);
+ DWORD keybLayout = (DWORD)LoadKeyboardLayout(L"00000409", KLF_ACTIVATE);
if (keybLayout != 0x00000409 && keybLayout != 0x04090409)
{
- Error ("CANT_CHANGE_KEYB_LAYOUT_FOR_SYS_ENCRYPTION", MainDlg);
- EndMainDlg (MainDlg);
+ Error("CANT_CHANGE_KEYB_LAYOUT_FOR_SYS_ENCRYPTION", MainDlg);
+ EndMainDlg(MainDlg);
return 1;
}
bKeyboardLayoutChanged = TRUE;
}
-
if (SetTimer (MainDlg, TIMER_ID_KEYB_LAYOUT_GUARD, TIMER_INTERVAL_KEYB_LAYOUT_GUARD, NULL) == 0)
{
Error ("CANNOT_SET_TIMER", MainDlg);
EndMainDlg (MainDlg);
return 1;
}
+
+ ShowWindow(GetDlgItem(hwndDlg, IDC_KEYFILES_ENABLE), SW_HIDE);
+ ShowWindow(GetDlgItem(hwndDlg, IDC_KEY_FILES), SW_HIDE);
+ ShowWindow(GetDlgItem(hwndDlg, IDC_PIM_ENABLE), SW_HIDE);
+
+ ShowWindow(GetDlgItem(hwndDlg, IDC_ADVANCE), SW_SHOW);
+ }
+ else
+ {
+ SetCheckBox (hwndDlg, IDC_PIM_ENABLE, PimEnable);
+
+ SetCheckBox (hwndDlg, IDC_KEYFILES_ENABLE, KeyFilesEnable && !SysEncInEffect());
+ EnableWindow (GetDlgItem (hwndDlg, IDC_KEY_FILES), KeyFilesEnable && !SysEncInEffect());
+ EnableWindow (GetDlgItem (hwndDlg, IDC_KEYFILES_ENABLE), !SysEncInEffect());
}
if (bHiddenVolHost)
{
StringCbCopyW (str, sizeof(str), GetString (bHiddenOS ? "PASSWORD_SYSENC_OUTERVOL_HELP" : "PASSWORD_HIDDENVOL_HOST_HELP"));
}
else if (bHiddenVol)
{
StringCbPrintfW (str, sizeof str, L"%s%s",
GetString (bHiddenOS ? "PASSWORD_HIDDEN_OS_HELP" : "PASSWORD_HIDDENVOL_HELP"),
GetString ("PASSWORD_HELP"));
}
else
{
- StringCbCopyW (str, sizeof(str), GetString ("PASSWORD_HELP"));
+ StringCbCopyW (str, sizeof(str), GetString ("PASSWORD_HELP_SYSENC"));
}
- SetPassword (hwndDlg, IDC_PASSWORD, szRawPassword);
- SetPassword (hwndDlg, IDC_VERIFY, szVerify);
+ SetPassword(hwndDlg, IDC_PASSWORD, szRawPassword);
+ SetPassword(hwndDlg, IDC_VERIFY, szVerify);
SetFocus (GetDlgItem (hwndDlg, IDC_PASSWORD));
- SetCheckBox (hwndDlg, IDC_PIM_ENABLE, PimEnable);
-
- SetCheckBox (hwndDlg, IDC_KEYFILES_ENABLE, KeyFilesEnable && !SysEncInEffect());
- EnableWindow (GetDlgItem (hwndDlg, IDC_KEY_FILES), KeyFilesEnable && !SysEncInEffect());
- EnableWindow (GetDlgItem (hwndDlg, IDC_KEYFILES_ENABLE), !SysEncInEffect());
-
SetWindowTextW (GetDlgItem (hwndDlg, IDC_BOX_HELP), str);
if (CreatingHiddenSysVol())
SetWindowTextW (GetDlgItem (GetParent (hwndDlg), IDC_BOX_TITLE), GetString ("PASSWORD_HIDDEN_OS_TITLE"));
else if (bHiddenVol)
SetWindowTextW (GetDlgItem (GetParent (hwndDlg), IDC_BOX_TITLE), GetString (bHiddenVolHost ? "PASSWORD_HIDVOL_HOST_TITLE" : "PASSWORD_HIDVOL_TITLE"));
else if (WizardMode == WIZARD_MODE_SYS_DEVICE)
- SetWindowTextW (GetDlgItem (GetParent (hwndDlg), IDC_BOX_TITLE), GetString ("PASSWORD"));
+ SetWindowTextW (GetDlgItem (GetParent (hwndDlg), IDC_BOX_TITLE), GetString ("CHOOSE_PASSWORD_TITLE"));
else
SetWindowTextW (GetDlgItem (GetParent (hwndDlg), IDC_BOX_TITLE), GetString ("PASSWORD_TITLE"));
SetWindowTextW (GetDlgItem (GetParent (hwndDlg), IDC_NEXT), GetString ("NEXT"));
SetWindowTextW (GetDlgItem (GetParent (hwndDlg), IDC_PREV), GetString ("PREV"));
EnableWindow (GetDlgItem (GetParent (hwndDlg), IDC_PREV), TRUE);
VerifyPasswordAndUpdate (hwndDlg, GetDlgItem (GetParent (hwndDlg), IDC_NEXT),
GetDlgItem (hwndDlg, IDC_PASSWORD),
GetDlgItem (hwndDlg, IDC_VERIFY),
NULL,
NULL,
KeyFilesEnable && FirstKeyFile!=NULL && !SysEncInEffect());
volumePassword.Length = (unsigned __int32) strlen ((char *) volumePassword.Text);
+
+ if(SysEncInEffect ())
+ {
+ /* Random pool parameter is here because random page is removed */
+
+ mouseEntropyGathered = 0xFFFFFFFF;
+ mouseEventsInitialCount = 0;
+ bUseMask = FALSE;
+
+ {
+ HCRYPTPROV hRngProv;
+ if (CryptAcquireContext (&hRngProv, NULL, MS_ENHANCED_PROV, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT | CRYPT_SILENT))
+ {
+ if (CryptGenRandom (hRngProv, sizeof (maskRandPool), maskRandPool))
+ bUseMask = TRUE;
+ CryptReleaseContext (hRngProv, 0);
+ }
+ }
+
+ SetTimer(GetParent(hwndDlg), TIMER_ID_RANDVIEW, TIMER_INTERVAL_RANDVIEW, NULL);
+ hRandPoolSys = GetDlgItem(hwndDlg, IDC_SYS_POOL_CONTENTS);
+ hEntropyBar = GetDlgItem(hwndDlg, IDC_ENTROPY_BAR);
+ SendMessage(hEntropyBar, PBM_SETRANGE32, 0, maxEntropyLevel);
+ SendMessage(hEntropyBar, PBM_SETSTEP, 1, 0);
+ SendMessage(GetDlgItem(hwndDlg, IDC_SYS_POOL_CONTENTS), WM_SETFONT, (WPARAM)hFixedDigitFont, (LPARAM)TRUE);
+
+ /* set default values */
+
+ hash_algo = bSystemIsGPT ? SHA512 : DEFAULT_HASH_ALGORITHM_BOOT;
+ RandSetHashFunction(hash_algo);
+
+ nWipeMode = TC_WIPE_NONE;
+ }
}
break;
case PIM_PAGE:
{
SendMessage (GetDlgItem (hwndDlg, IDC_PIM), EM_LIMITTEXT, SysEncInEffect()? MAX_BOOT_PIM: MAX_PIM, 0);
if (volumePim > 0)
{
SetPim (hwndDlg, IDC_PIM, volumePim);
@@ -4570,20 +4609,22 @@ BOOL CALLBACK PageDialogProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa
DisplayPortionsOfKeys (hHeaderKey, hMasterKey, HeaderKeyGUIView, MasterKeyGUIView, !showKeys);
break;
case SYSENC_RESCUE_DISK_CREATION_PAGE:
SetWindowTextW (GetDlgItem (GetParent (hwndDlg), IDC_BOX_TITLE), GetString ("RESCUE_DISK"));
SetWindowTextW (GetDlgItem (GetParent (hwndDlg), IDC_NEXT), GetString ("NEXT"));
SetWindowTextW (GetDlgItem (GetParent (hwndDlg), IDC_PREV), GetString ("PREV"));
SetWindowTextW (GetDlgItem (hwndDlg, IDT_RESCUE_DISK_INFO), bSystemIsGPT? GetString ("RESCUE_DISK_EFI_INFO"): GetString ("RESCUE_DISK_INFO"));
+ SetWindowTextW(GetDlgItem(hwndDlg, IDT_RESCUE_DISK_INFO_2), GetString("RESCUE_DISK_INFO_2"));
+
SetCheckBox (hwndDlg, IDC_SKIP_RESCUE_VERIFICATION, bDontVerifyRescueDisk);
SetDlgItemText (hwndDlg, IDC_RESCUE_DISK_ISO_PATH, szRescueDiskISO);
EnableWindow (GetDlgItem (GetParent (hwndDlg), IDC_NEXT), (GetWindowTextLength (GetDlgItem (hwndDlg, IDC_RESCUE_DISK_ISO_PATH)) > 1));
EnableWindow (GetDlgItem (GetParent (hwndDlg), IDC_PREV), TRUE);
break;
case SYSENC_RESCUE_DISK_BURN_PAGE:
{
wchar_t szTmp[8192];
@@ -4601,39 +4642,23 @@ BOOL CALLBACK PageDialogProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa
else
{
StringCbPrintfW (szTmp, sizeof szTmp,
GetString (bDontVerifyRescueDisk ? "RESCUE_DISK_BURN_INFO_NO_CHECK" : "RESCUE_DISK_BURN_INFO"),
szRescueDiskISO, IsWindowsIsoBurnerAvailable() ? L"" : GetString ("RESCUE_DISK_BURN_INFO_NONWIN_ISO_BURNER"));
}
SetWindowTextW (GetDlgItem (hwndDlg, IDT_RESCUE_DISK_BURN_INFO), szTmp);
EnableWindow (GetDlgItem (GetParent (hwndDlg), IDC_NEXT), TRUE);
- /* The 'Back' button must be disabled now because the user could burn a Rescue Disk, then go back, and
- generate a different master key, which would cause the Rescue Disk verification to fail (the result
- would be confusion and bug reports). */
- EnableWindow (GetDlgItem (GetParent (hwndDlg), IDC_PREV), FALSE);
-
- if (bSystemIsGPT)
- {
- ShowWindow (GetDlgItem (hwndDlg, IDC_DOWNLOAD_CD_BURN_SOFTWARE), SW_HIDE);
- }
- else
- {
- if (IsWindowsIsoBurnerAvailable())
- SetWindowTextW (GetDlgItem (hwndDlg, IDC_DOWNLOAD_CD_BURN_SOFTWARE), GetString ("LAUNCH_WIN_ISOBURN"));
-
- ToHyperlink (hwndDlg, IDC_DOWNLOAD_CD_BURN_SOFTWARE);
-
- if (IsWindowsIsoBurnerAvailable() && !bDontVerifyRescueDisk)
- LaunchWindowsIsoBurner (hwndDlg, szRescueDiskISO);
- }
+ /* The 'Back' button is enabled but user can't go back, instead warning is provided */
+ EnableWindow(GetDlgItem(GetParent(hwndDlg), IDC_PREV), TRUE);
+
}
break;
case SYSENC_RESCUE_DISK_VERIFIED_PAGE:
SetWindowTextW (GetDlgItem (GetParent (hwndDlg), IDC_BOX_TITLE), GetString ("RESCUE_DISK_DISK_VERIFIED_TITLE"));
SetWindowTextW (GetDlgItem (hwndDlg, IDC_BOX_HELP), GetString ("RESCUE_DISK_VERIFIED_INFO"));
SetWindowTextW (GetDlgItem (GetParent (hwndDlg), IDC_NEXT), GetString ("NEXT"));
SetWindowTextW (GetDlgItem (GetParent (hwndDlg), IDC_PREV), GetString ("PREV"));
@@ -4644,38 +4669,90 @@ BOOL CALLBACK PageDialogProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa
EnableWindow (GetDlgItem (GetParent (hwndDlg), IDC_PREV), FALSE);
// Prevent losing the burned rescue disk by inadvertent exit
bConfirmQuit = TRUE;
break;
case SYSENC_WIPE_MODE_PAGE:
case NONSYS_INPLACE_ENC_WIPE_MODE_PAGE:
{
- if (nWipeMode == TC_WIPE_1_RAND)
- nWipeMode = TC_WIPE_NONE;
-
- SetWindowTextW (GetDlgItem (GetParent (hwndDlg), IDC_BOX_TITLE), GetString ("WIPE_MODE_TITLE"));
- SetWindowTextW (GetDlgItem (hwndDlg, IDT_WIPE_MODE_INFO), GetString ("INPLACE_ENC_WIPE_MODE_INFO"));
-
- PopulateWipeModeCombo (GetDlgItem (hwndDlg, IDC_WIPE_MODE),
- SystemEncryptionStatus == SYSENC_STATUS_DECRYPTING && !bInPlaceEncNonSys,
- TRUE,
- FALSE);
+ if (SysEncInEffect ())
+ {
+ /* Wipe mode page is now checklist page */
+ ShowWindow (GetDlgItem (hwndDlg, IDC_WIPE_MODE), SW_HIDE);
+ ShowWindow (GetDlgItem (hwndDlg, IDT_WIPE_MODE), SW_HIDE);
+ ShowWindow (GetDlgItem (hwndDlg, IDT_WIPE_MODE_INFO), SW_HIDE);
+
+ SetWindowTextW (GetDlgItem (hwndDlg, IDC_REMEMBER_PASSWORD), GetString ("REMEMBER_PASSWORD"));
+ SetWindowTextW (GetDlgItem (hwndDlg, IDC_STORE_RESCUE_DISK), GetString ("STORE_RESCUE_DISK"));
+ SetWindowTextW (GetDlgItem (hwndDlg, IDC_BACKUP_DATA), GetString ("BACKUP_DATA"));
+
+ SendMessage(GetDlgItem(hwndDlg, IDC_REMEMBER_PASSWORD), WM_SETFONT, (WPARAM)hUserBoldFont, (LPARAM)TRUE);
+ SendMessage(GetDlgItem(hwndDlg, IDC_STORE_RESCUE_DISK), WM_SETFONT, (WPARAM)hUserBoldFont, (LPARAM)TRUE);
+ SendMessage(GetDlgItem(hwndDlg, IDC_BACKUP_DATA), WM_SETFONT, (WPARAM)hUserBoldFont, (LPARAM)TRUE);
+
+ bChecklistA = FALSE;
+ bChecklistB = FALSE;
+ bChecklistC = FALSE;
+
+ SetWindowTextW(GetDlgItem(GetParent(hwndDlg), IDC_BOX_TITLE), GetString("CHECKLIST_TITLE"));
+
+ SetDlgItemText(hwndDlg, IDC_BROWSE, GetString ("OPEN_PATH_CHECKLIST_PAGE"));
+ SetWindowTextW (GetDlgItem (hwndDlg, IDT_STORE_RESCUE_DISK), GetString ("RESCUE_DISK_CHECKLIST_B"));
+ SetWindowTextW (GetDlgItem (hwndDlg, IDT_REMEMBER_PASSWORD), GetString ("RESCUE_DISK_CHECKLIST_A"));
+ SetWindowTextW (GetDlgItem (hwndDlg, IDT_BACKUP_DATA), GetString ("RESCUE_DISK_CHECKLIST_C"));
+
+ EnableWindow(GetDlgItem(hwndDlg, IDC_REMEMBER_PASSWORD), TRUE);
+ EnableWindow(GetDlgItem(hwndDlg, IDC_STORE_RESCUE_DISK), TRUE);
+ EnableWindow(GetDlgItem(hwndDlg, IDC_BACKUP_DATA), TRUE);
+
+ SetWindowTextW (GetDlgItem (GetParent (hwndDlg), IDC_NEXT), GetString ("NEXT"));
+
+ SetWindowTextW (GetDlgItem (GetParent (hwndDlg), IDC_PREV), GetString ("PREV"));
+ EnableWindow (GetDlgItem (GetParent (hwndDlg), IDC_PREV), TRUE);
+ EnableWindow (GetDlgItem (GetParent (hwndDlg), IDC_NEXT), FALSE);
+ }
+ else
+ {
+ /* Hide elements from Checklist page and show Wipe mode page */
+ ShowWindow (GetDlgItem (hwndDlg, IDC_CHECKLIST_A), SW_HIDE);
+ ShowWindow (GetDlgItem (hwndDlg, IDC_CHECKLIST_B), SW_HIDE);
+ ShowWindow (GetDlgItem (hwndDlg, IDC_CHECKLIST_C), SW_HIDE);
+ ShowWindow (GetDlgItem (hwndDlg, IDC_STORE_RESCUE_DISK), SW_HIDE);
+ ShowWindow (GetDlgItem (hwndDlg, IDC_REMEMBER_PASSWORD), SW_HIDE);
+ ShowWindow (GetDlgItem (hwndDlg, IDC_BACKUP_DATA), SW_HIDE);
+ ShowWindow (GetDlgItem (hwndDlg, IDT_REMEMBER_PASSWORD), SW_HIDE);
+ ShowWindow (GetDlgItem (hwndDlg, IDT_STORE_RESCUE_DISK), SW_HIDE);
+ ShowWindow (GetDlgItem (hwndDlg, IDT_BACKUP_DATA), SW_HIDE);
+ ShowWindow (GetDlgItem (hwndDlg, IDC_BROWSE), SW_HIDE);
+ ShowWindow (GetDlgItem (hwndDlg, IDC_RESCUE_DISK_ISO_PATH), SW_HIDE);
+
+ if (nWipeMode == TC_WIPE_1_RAND)
+ nWipeMode = TC_WIPE_NONE;
+
+ SetWindowTextW (GetDlgItem (GetParent (hwndDlg), IDC_BOX_TITLE), GetString ("WIPE_MODE_TITLE"));
+ SetWindowTextW (GetDlgItem (hwndDlg, IDT_WIPE_MODE_INFO), GetString ("INPLACE_ENC_WIPE_MODE_INFO"));
+
+ PopulateWipeModeCombo (GetDlgItem (hwndDlg, IDC_WIPE_MODE),
+ SystemEncryptionStatus == SYSENC_STATUS_DECRYPTING && !bInPlaceEncNonSys,
+ TRUE,
+ FALSE);
- SelectAlgo (GetDlgItem (hwndDlg, IDC_WIPE_MODE), (int *) &nWipeMode);
+ SelectAlgo (GetDlgItem (hwndDlg, IDC_WIPE_MODE), (int *) &nWipeMode);
- SetWindowTextW (GetDlgItem (GetParent (hwndDlg), IDC_NEXT), GetString ("NEXT"));
+ SetWindowTextW (GetDlgItem (GetParent (hwndDlg), IDC_NEXT), GetString ("NEXT"));
- SetWindowTextW (GetDlgItem (GetParent (hwndDlg), IDC_PREV), GetString ("PREV"));
- EnableWindow (GetDlgItem (GetParent (hwndDlg), IDC_PREV), TRUE);
- EnableWindow (GetDlgItem (GetParent (hwndDlg), IDC_NEXT), TRUE);
+ SetWindowTextW (GetDlgItem (GetParent (hwndDlg), IDC_PREV), GetString ("PREV"));
+ EnableWindow (GetDlgItem (GetParent (hwndDlg), IDC_PREV), TRUE);
+ EnableWindow (GetDlgItem (GetParent (hwndDlg), IDC_NEXT), TRUE);
+ }
}
break;
case SYSENC_PRETEST_INFO_PAGE:
if (bHiddenOS)
{
SetWindowTextW (GetDlgItem (GetParent (hwndDlg), IDC_BOX_TITLE), GetString ("HIDDEN_OS_CREATION_PREINFO_TITLE"));
SetWindowTextW (GetDlgItem (hwndDlg, IDC_BOX_HELP), GetString ("HIDDEN_OS_CREATION_PREINFO_HELP"));
SetWindowTextW (GetDlgItem (GetParent (hwndDlg), IDC_NEXT), GetString ("START"));
@@ -4684,21 +4761,21 @@ BOOL CALLBACK PageDialogProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa
else
{
wchar_t finalMsg[8024] = {0};
SetWindowTextW (GetDlgItem (GetParent (hwndDlg), IDC_BOX_TITLE), GetString ("SYS_ENCRYPTION_PRETEST_TITLE"));
try
{
StringCbPrintfW (finalMsg, sizeof(finalMsg),
GetString ("SYS_ENCRYPTION_PRETEST_INFO"),
- BootEncObj->GetSystemDriveConfiguration().DriveNumber);
+ GetSystemDriveLetter ());
}
catch (Exception &e)
{
e.Show (hwndDlg);
EndMainDlg (MainDlg);
return 0;
}
SetWindowTextW (GetDlgItem (hwndDlg, IDC_BOX_HELP), finalMsg);
SetWindowTextW (GetDlgItem (GetParent (hwndDlg), IDC_NEXT), GetString ("TEST"));
@@ -4708,28 +4785,44 @@ BOOL CALLBACK PageDialogProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa
SetWindowTextW (GetDlgItem (GetParent (hwndDlg), IDC_PREV), GetString ("PREV"));
EnableWindow (GetDlgItem (GetParent (hwndDlg), IDC_NEXT), TRUE);
break;
case SYSENC_PRETEST_RESULT_PAGE:
SetWindowTextW (GetDlgItem (GetParent (hwndDlg), IDC_BOX_TITLE), GetString ("SYS_ENCRYPTION_PRETEST_RESULT_TITLE"));
SetWindowTextW (GetDlgItem (hwndDlg, IDC_BOX_HELP), GetString ("SYS_ENCRYPTION_PRETEST_RESULT_INFO"));
+ ShowWindow (GetDlgItem (hwndDlg, IDC_CHECKBOX_PRETEST), SW_SHOW);
+ SetWindowTextW (GetDlgItem (hwndDlg, IDC_CHECKBOX_PRETEST), GetString ("PRETEST_CHECKBOX"));
+
+ bCheckboxPretest = FALSE;
+
SetWindowTextW (GetDlgItem (GetParent (hwndDlg), IDC_NEXT), GetString ("ENCRYPT"));
SetWindowTextW (GetDlgItem (GetParent (hwndDlg), IDC_PREV), GetString ("PREV"));
SetWindowTextW (GetDlgItem (GetParent (hwndDlg), IDCANCEL), GetString ("DEFER"));
- EnableWindow (GetDlgItem (GetParent (hwndDlg), IDC_NEXT), TRUE);
- EnableWindow (GetDlgItem (GetParent (hwndDlg), IDC_PREV), FALSE);
+ EnableWindow (GetDlgItem (GetParent (hwndDlg), IDC_NEXT), FALSE);
+ EnableWindow (GetDlgItem (GetParent (hwndDlg), IDC_PREV), TRUE);
EnableWindow (GetDlgItem (GetParent (hwndDlg), IDCANCEL), TRUE);
+ HWND hTooltip;
+ hTooltip = GetDlgItem (GetParent (hwndDlg), IDC_PREV);
+ if (hTooltip)
+ {
+ CreateToolTip (hwndDlg, hTooltip, GetString ("PRETEST_BACK_BUTTON"));
+ }
+ else
+ {
+ MessageBox (0, TEXT ("Cannot find dialog item for tooltip!"), 0, 0);
+ }
+
break;
case SYSENC_ENCRYPTION_PAGE:
if (CreateSysEncMutex ())
{
try
{
BootEncStatus = BootEncObj->GetStatus();
bSystemEncryptionInProgress = BootEncStatus.SetupInProgress;
@@ -4737,56 +4830,62 @@ BOOL CALLBACK PageDialogProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa
catch (Exception &e)
{
e.Show (hwndDlg);
Error ("ERR_GETTING_SYSTEM_ENCRYPTION_STATUS", MainDlg);
EndMainDlg (MainDlg);
return 0;
}
SetWindowTextW (GetDlgItem (GetParent (hwndDlg), IDC_BOX_TITLE),
GetString (SystemEncryptionStatus != SYSENC_STATUS_DECRYPTING ? "ENCRYPTION" : "DECRYPTION"));
-
- SetWindowTextW (GetDlgItem (hwndDlg, IDC_BOX_HELP), GetString ("SYSENC_ENCRYPTION_PAGE_INFO"));
+
+ SetWindowTextW (GetDlgItem (hwndDlg, IDC_BOX_HELP),
+ GetString (SystemEncryptionStatus != SYSENC_STATUS_DECRYPTING ? "SYSENC_ENCRYPTION_PAGE_INFO" : "SYSENC_DECRYPTION_PAGE_INFO"));
SetWindowTextW (GetDlgItem (GetParent (hwndDlg), IDCANCEL), GetString ("DEFER"));
SetWindowTextW (GetDlgItem (GetParent (hwndDlg), IDC_PREV), GetString ("PREV"));
SetWindowTextW (GetDlgItem (GetParent (hwndDlg), IDC_NEXT),
GetString (SystemEncryptionStatus != SYSENC_STATUS_DECRYPTING ? "ENCRYPT" : "DECRYPT"));
SetWindowTextW (GetDlgItem (hwndDlg, IDC_PAUSE),
GetString (bSystemEncryptionInProgress ? "IDC_PAUSE" : "RESUME"));
EnableWindow (GetDlgItem (hwndDlg, IDC_PAUSE), BootEncStatus.DriveEncrypted);
EnableWindow (GetDlgItem (GetParent (hwndDlg), IDC_PREV), FALSE);
EnableWindow (GetDlgItem (GetParent (hwndDlg), IDC_NEXT), !BootEncStatus.SetupInProgress);
EnableWindow (GetDlgItem (GetParent (hwndDlg), IDCANCEL), TRUE);
EnableWindow (GetDlgItem (GetParent (hwndDlg), IDHELP), TRUE);
- ToHyperlink (hwndDlg, IDC_MORE_INFO_SYS_ENCRYPTION);
-
if (SystemEncryptionStatus == SYSENC_STATUS_DECRYPTING)
{
nWipeMode = TC_WIPE_NONE;
EnableWindow (GetDlgItem (hwndDlg, IDC_WIPE_MODE), FALSE);
EnableWindow (GetDlgItem (hwndDlg, IDT_WIPE_MODE), FALSE);
PopulateWipeModeCombo (GetDlgItem (hwndDlg, IDC_WIPE_MODE), TRUE, TRUE, FALSE);
SelectAlgo (GetDlgItem (hwndDlg, IDC_WIPE_MODE), (int *) &nWipeMode);
}
else
{
EnableWindow (GetDlgItem (hwndDlg, IDC_WIPE_MODE), !bSystemEncryptionInProgress);
PopulateWipeModeCombo (GetDlgItem (hwndDlg, IDC_WIPE_MODE), FALSE, TRUE, FALSE);
SelectAlgo (GetDlgItem (hwndDlg, IDC_WIPE_MODE), (int *) &nWipeMode);
}
+ if (nWipeMode == TC_WIPE_NONE)
+ {
+ ShowWindow (GetDlgItem(hwndDlg, IDC_WIPE_MODE), SW_HIDE);
+ ShowWindow (GetDlgItem(hwndDlg, IDT_FORMAT_OPTIONS), SW_HIDE);
+ ShowWindow (GetDlgItem(hwndDlg, IDT_WIPE_MODE), SW_HIDE);
+ }
+
PostMessage (hwndDlg, TC_APPMSG_PERFORM_POST_SYSENC_WMINIT_TASKS, 0, 0);
}
else
{
Error ("SYSTEM_ENCRYPTION_IN_PROGRESS_ELSEWHERE", MainDlg);
EndMainDlg (MainDlg);
return 0;
}
return 0;
@@ -5262,20 +5361,52 @@ BOOL CALLBACK PageDialogProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa
case WM_HELP:
OpenPageHelp (GetParent (hwndDlg), nCurPageNo);
return 1;
case TC_APPMSG_PERFORM_POST_SYSENC_WMINIT_TASKS:
AfterSysEncProgressWMInitTasks (hwndDlg);
return 1;
case WM_CTLCOLORSTATIC:
{
+ if ((HWND)lParam == GetDlgItem (hwndDlg, PASSWORD_METER) && iPasswordStrength == 1)
+ {
+ // we're about to draw the static
+ // set the text colour in (HDC)lParam
+ SetBkMode ((HDC)wParam, TRANSPARENT);
+ SetTextColor ((HDC)wParam, RGB(255, 0, 0)); // password weak red
+ return (BOOL)GetSysColorBrush(COLOR_MENU);
+ }
+
+ if ((HWND)lParam == GetDlgItem (hwndDlg, PASSWORD_METER) && iPasswordStrength == 2)
+ {
+ // we're about to draw the static
+ // set the text colour in (HDC)lParam
+ SetBkMode ((HDC)wParam, TRANSPARENT);
+ SetTextColor ((HDC)wParam, RGB (255, 165, 0)); // password medium orange
+ return (BOOL) GetSysColorBrush (COLOR_MENU);
+ }
+
+ if ((HWND)lParam == GetDlgItem (hwndDlg, PASSWORD_METER) && iPasswordStrength == 3)
+ {
+ SetBkMode ((HDC)wParam, TRANSPARENT);
+ SetTextColor ((HDC)wParam, RGB (218, 218, 0)); // password strong yellow
+ return (BOOL) GetSysColorBrush (COLOR_MENU);
+ }
+
+ if ((HWND)lParam == GetDlgItem (hwndDlg, PASSWORD_METER) && iPasswordStrength == 4)
+ {
+ SetBkMode((HDC)wParam, TRANSPARENT);
+ SetTextColor((HDC)wParam, RGB(50, 205, 50)); // password very strong green
+ return (BOOL) GetSysColorBrush (COLOR_MENU);
+ }
+
if (PimValueChangedWarning && ((HWND)lParam == GetDlgItem(hwndDlg, IDC_PIM_HELP)) )
{
// we're about to draw the static
// set the text colour in (HDC)lParam
SetBkMode((HDC)wParam,TRANSPARENT);
SetTextColor((HDC)wParam, RGB(255,0,0));
// NOTE: per documentation as pointed out by selbie, GetSolidBrush would leak a GDI handle.
return (BOOL)GetSysColorBrush(COLOR_MENU);
}
}
@@ -5324,20 +5455,36 @@ BOOL CALLBACK PageDialogProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa
bHiddenVol = FALSE;
bHiddenVolHost = FALSE;
return 1;
case IDC_HIDDEN_SYSENC_INFO_LINK:
Applink ("hiddensysenc");
return 1;
}
}
+ if (lw == IDC_ADVANCE_INTRO && nCurPageNo == SYSENC_TYPE_PAGE)
+ {
+ DialogBoxParamW(hInst,
+ MAKEINTRESOURCEW(IDD_ADVANCE_MBR), hwndDlg,
+ (DLGPROC)AdvanceDlgProcIntro, NULL);
+ return 1;
+ }
+
+ if (lw == IDC_ADVANCE && nCurPageNo == PASSWORD_PAGE)
+ {
+ DialogBoxParamW(hInst,
+ MAKEINTRESOURCEW(IDD_ADVANCE), hwndDlg,
+ (DLGPROC)AdvanceDlgProc, NULL);
+ return 1;
+ }
+
if (nCurPageNo == SYSENC_HIDDEN_OS_REQ_CHECK_PAGE && lw == IDC_HIDDEN_SYSENC_INFO_LINK)
{
Applink ("hiddensysenc");
return 1;
}
if (nCurPageNo == SYSENC_SPAN_PAGE)
{
switch (lw)
{
@@ -5672,28 +5819,70 @@ BOOL CALLBACK PageDialogProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa
}
if (hw == EN_CHANGE && nCurPageNo == SIZE_PAGE)
{
VerifySizeAndUpdate (hwndDlg, FALSE);
return 1;
}
if (hw == EN_CHANGE && nCurPageNo == PASSWORD_PAGE)
{
- VerifyPasswordAndUpdate (hwndDlg, GetDlgItem (GetParent (hwndDlg), IDC_NEXT),
- GetDlgItem (hwndDlg, IDC_PASSWORD),
- GetDlgItem (hwndDlg, IDC_VERIFY),
- NULL,
- NULL,
- KeyFilesEnable && FirstKeyFile!=NULL && !SysEncInEffect());
+ // If 'Next' button was clicked (and keyboard layout is not US), don't verify
+ if (!bNextButtonClicked)
+ {
+ VerifyPasswordAndUpdate (hwndDlg, GetDlgItem (GetParent (hwndDlg), IDC_NEXT),
+ GetDlgItem(hCurPage, IDC_PASSWORD),
+ GetDlgItem(hCurPage, IDC_VERIFY),
+ NULL,
+ NULL,
+ KeyFilesEnable && FirstKeyFile != NULL && !SysEncInEffect());
+
+ bNextButtonClicked = FALSE;
+ }
+
volumePassword.Length = (unsigned __int32) strlen ((char *) volumePassword.Text);
+
+ SendMessage (GetDlgItem (hwndDlg, PASSWORD_METER), WM_SETFONT, (WPARAM)hUserBoldFont, (LPARAM)TRUE);
+
+ memset (&tempPassword[0], 0, sizeof (tempPassword));
+
+ if (GetPassword (hCurPage, IDC_PASSWORD, tempPassword, iMaxPasswordLength + 1, FALSE, TRUE))
+ iPasswordStrength = PrintStrongness (tempPassword, strlen (tempPassword));
+ else
+ Error ("ERROR_GETTING_PWD", hwndDlg);
+
+ burn (tempPassword, sizeof (tempPassword));
+ if (iPasswordStrength == very_strong)
+ {
+ SetWindowTextW (GetDlgItem (hwndDlg, PASSWORD_METER), GetString ("VERY_STRONG_PASSWORD"));
+ EnableWindow (GetDlgItem (hwndDlg, IDC_VERIFY), TRUE);
+ }
+ else if (iPasswordStrength == strong)
+ {
+ SetWindowTextW (GetDlgItem (hwndDlg, PASSWORD_METER), GetString ("STRONG_PASSWORD"));
+ EnableWindow (GetDlgItem (hwndDlg, IDC_VERIFY), TRUE);
+ }
+ else if (iPasswordStrength == medium)
+ {
+ EnableWindow (GetDlgItem (hwndDlg, IDC_VERIFY), TRUE);
+ SetWindowTextW (GetDlgItem (hwndDlg, PASSWORD_METER), GetString ("MEDIUM_PASSWORD"));
+ }
+ else if (iPasswordStrength == weak)
+ {
+ EnableWindow (GetDlgItem (hwndDlg, IDC_VERIFY), FALSE);
+ SetWindowTextW (GetDlgItem (hwndDlg, PASSWORD_METER), GetString ("WEAK_PASSWORD"));
+ }
+ else
+ {
+ SetWindowTextW (GetDlgItem (hwndDlg, PASSWORD_METER), GetString ("VERY_WEAK_PASSWORD"));
+ }
return 1;
}
if (hw == EN_CHANGE && nCurPageNo == PIM_PAGE)
{
if (lw == IDC_PIM)
{
if(GetPim (hwndDlg, IDC_PIM, 0) != 0)
{
PimValueChangedWarning = TRUE;
@@ -5714,20 +5903,46 @@ BOOL CALLBACK PageDialogProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa
HandleShowPasswordFieldAction (hwndDlg, IDC_SHOW_PASSWORD, IDC_PASSWORD, IDC_VERIFY);
return 1;
}
if (lw == IDC_SHOW_PIM && nCurPageNo == PIM_PAGE)
{
HandleShowPasswordFieldAction (hwndDlg, IDC_SHOW_PIM, IDC_PIM, 0);
return 1;
}
+ if (lw == IDC_CHECKLIST_A)
+ {
+ bChecklistA = GetCheckBox (hwndDlg, IDC_CHECKLIST_A);
+ bChecklistB = GetCheckBox (hwndDlg, IDC_CHECKLIST_B);
+ bChecklistC = GetCheckBox (hwndDlg, IDC_CHECKLIST_C);
+ }
+
+ if (lw == IDC_CHECKLIST_B)
+ {
+ bChecklistA = GetCheckBox (hwndDlg, IDC_CHECKLIST_A);
+ bChecklistB = GetCheckBox (hwndDlg, IDC_CHECKLIST_B);
+ bChecklistC = GetCheckBox (hwndDlg, IDC_CHECKLIST_C);
+ }
+
+ if (lw == IDC_CHECKLIST_C)
+ {
+ bChecklistA = GetCheckBox (hwndDlg, IDC_CHECKLIST_A);
+ bChecklistB = GetCheckBox (hwndDlg, IDC_CHECKLIST_B);
+ bChecklistC = GetCheckBox (hwndDlg, IDC_CHECKLIST_C);
+ }
+
+ if (lw == IDC_CHECKBOX_PRETEST)
+ {
+ bCheckboxPretest = GetCheckBox (hwndDlg, IDC_CHECKBOX_PRETEST);
+ }
+
if (lw == IDC_PIM_ENABLE)
{
PimEnable = GetCheckBox (hwndDlg, IDC_PIM_ENABLE);
if (!PimEnable)
volumePim = 0;
if (nCurPageNo == HIDDEN_VOL_HOST_PASSWORD_PAGE
|| nCurPageNo == NONSYS_INPLACE_ENC_RESUME_PASSWORD_PAGE
)
{
ShowWindow (GetDlgItem( hwndDlg, IDC_PIM_ENABLE), PimEnable? SW_HIDE : SW_SHOW);
@@ -6043,28 +6258,61 @@ BOOL CALLBACK PageDialogProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa
}
if ( hw == EN_CHANGE )
{
GetDlgItemText (hwndDlg, IDC_RESCUE_DISK_ISO_PATH, szRescueDiskISO, sizeof(szRescueDiskISO));
EnableWindow (GetDlgItem (MainDlg, IDC_NEXT), (GetWindowTextLength (GetDlgItem (hwndDlg, IDC_RESCUE_DISK_ISO_PATH)) > 1));
return 1;
}
}
- if (nCurPageNo == SYSENC_RESCUE_DISK_BURN_PAGE && lw == IDC_DOWNLOAD_CD_BURN_SOFTWARE)
+ /* The password and rescue checkbox have to be clicked in order to enable the next button */
+ if ((nCurPageNo == SYSENC_WIPE_MODE_PAGE || nCurPageNo == NONSYS_INPLACE_ENC_WIPE_MODE_PAGE) &&
+ (lw == IDC_CHECKLIST_A || lw == IDC_CHECKLIST_B || lw == IDC_CHECKLIST_C))
{
- if (IsWindowsIsoBurnerAvailable())
- LaunchWindowsIsoBurner (hwndDlg, szRescueDiskISO);
- else
- Applink ("isoburning");
+ if (SysEncInEffect ())
+ {
+ if (bChecklistA && bChecklistB && bChecklistC)
+ EnableWindow (GetDlgItem (GetParent (hwndDlg), IDC_NEXT), TRUE);
+ else
+ EnableWindow (GetDlgItem (GetParent (hwndDlg), IDC_NEXT), FALSE);
+ }
+ }
- return 1;
+ if (lw == IDC_BROWSE && (nCurPageNo == SYSENC_WIPE_MODE_PAGE || nCurPageNo == NONSYS_INPLACE_ENC_WIPE_MODE_PAGE))
+ {
+ wchar_t tmpszRescueDiskISO [TC_MAX_PATH+1];
+
+ StringCbCopyW (tmpszRescueDiskISO, sizeof(tmpszRescueDiskISO), szRescueDiskISO);
+
+ //detects the last '\' in order to remove the name of the zip file and save file name
+ for (int i = wcslen(tmpszRescueDiskISO); i > 1; i--)
+ {
+ if (tmpszRescueDiskISO[i] == '\\')
+ {
+ for (int j = i + 1; i < wcslen(tmpszRescueDiskISO); i++)
+ tmpszRescueDiskISO[j] = '\0';
+ break;
+ }
+ }
+
+ if(!BrowseFile (hwndDlg, "RESCUE_DISK_PATH", tmpszRescueDiskISO))
+ return 1;
+
+ return 0;
+ }
+ if (nCurPageNo == SYSENC_PRETEST_RESULT_PAGE && lw == IDC_CHECKBOX_PRETEST)
+ {
+ if (bCheckboxPretest)
+ EnableWindow (GetDlgItem (GetParent (hwndDlg), IDC_NEXT), TRUE);
+ else
+ EnableWindow (GetDlgItem (GetParent (hwndDlg), IDC_NEXT), FALSE);
}
if ((nCurPageNo == SYSENC_WIPE_MODE_PAGE
|| nCurPageNo == NONSYS_INPLACE_ENC_WIPE_MODE_PAGE
|| nCurPageNo == DEVICE_WIPE_MODE_PAGE)
&& hw == CBN_SELCHANGE)
{
nWipeMode = (WipeAlgorithmId) SendMessage (GetDlgItem (hCurPage, IDC_WIPE_MODE),
CB_GETITEMDATA,
SendMessage (GetDlgItem (hCurPage, IDC_WIPE_MODE), CB_GETCURSEL, 0, 0),
@@ -6364,25 +6612,23 @@ BOOL CALLBACK MainDialogProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa
{
exit (1);
}
volTransformThreadFunction (hwndDlg);
exit (bOperationSuccess? 0 : 1);
}
SHGetFolderPath (NULL, CSIDL_MYDOCUMENTS, NULL, 0, szRescueDiskISO);
- if (bSystemIsGPT)
- StringCbCatW (szRescueDiskISO, sizeof(szRescueDiskISO), L"\\VeraCrypt Rescue Disk.zip");
- else
- StringCbCatW (szRescueDiskISO, sizeof(szRescueDiskISO), L"\\VeraCrypt Rescue Disk.iso");
+ StringCbCatW (szRescueDiskISO, sizeof(szRescueDiskISO), L"\\VeraCrypt Rescue Disk.zip");
+
if (IsOSAtLeast (WIN_VISTA))
{
// Availability of in-place encryption (which is pre-selected by default whenever
// possible) makes partition-hosted volume creation safer.
bWarnDeviceFormatAdvanced = FALSE;
}
#ifdef _DEBUG
// For faster testing
StringCchCopyA (szVerify, ARRAYSIZE(szVerify), "q");
@@ -6652,55 +6898,53 @@ BOOL CALLBACK MainDialogProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa
{
// Keyboard layout is not standard US
WipePasswordsAndKeyfiles (true);
SetPassword (hCurPage, IDC_PASSWORD, szRawPassword);
SetPassword (hCurPage, IDC_VERIFY, szVerify);
keybLayout = (DWORD) LoadKeyboardLayout (L"00000409", KLF_ACTIVATE);
+ // East Asian languages are not translated to US keyboard layout so we need to change keyboard layout
if (keybLayout != 0x00000409 && keybLayout != 0x04090409)
{
KillTimer (hwndDlg, TIMER_ID_KEYB_LAYOUT_GUARD);
Error ("CANT_CHANGE_KEYB_LAYOUT_FOR_SYS_ENCRYPTION", MainDlg);
EndMainDlg (MainDlg);
return 1;
}
-
+
bKeyboardLayoutChanged = TRUE;
-
wchar_t szTmp [4096];
StringCbCopyW (szTmp, sizeof(szTmp), GetString ("KEYB_LAYOUT_CHANGE_PREVENTED"));
StringCbCatW (szTmp, sizeof(szTmp), L"\n\n");
StringCbCatW (szTmp, sizeof(szTmp), GetString ("KEYB_LAYOUT_SYS_ENC_EXPLANATION"));
MessageBoxW (MainDlg, szTmp, lpszTitle, MB_ICONWARNING | MB_SETFOREGROUND | MB_TOPMOST);
- }
-
- /* Watch the right Alt key (which is used to enter various characters on non-US keyboards) */
- if (bKeyboardLayoutChanged && !bKeybLayoutAltKeyWarningShown)
- {
- if (GetAsyncKeyState (VK_RMENU) < 0)
+ if (bKeyboardLayoutChanged && !bKeybLayoutAltKeyWarningShown)
{
- bKeybLayoutAltKeyWarningShown = TRUE;
+ if (GetAsyncKeyState (VK_RMENU) < 0)
+ {
+ bKeybLayoutAltKeyWarningShown = TRUE;
- wchar_t szTmp [4096];
- StringCbCopyW (szTmp, sizeof(szTmp), GetString ("ALT_KEY_CHARS_NOT_FOR_SYS_ENCRYPTION"));
- StringCbCatW (szTmp, sizeof(szTmp), L"\n\n");
- StringCbCatW (szTmp, sizeof(szTmp), GetString ("KEYB_LAYOUT_SYS_ENC_EXPLANATION"));
- MessageBoxW (MainDlg, szTmp, lpszTitle, MB_ICONINFORMATION | MB_SETFOREGROUND | MB_TOPMOST);
+
+ wchar_t szTmp [4096];
+ StringCbCopyW (szTmp, sizeof(szTmp), GetString ("ALT_KEY_CHARS_NOT_FOR_SYS_ENCRYPTION"));
+ StringCbCatW (szTmp, sizeof(szTmp), L"\n\n");
+ StringCbCatW (szTmp, sizeof(szTmp), GetString ("KEYB_LAYOUT_SYS_ENC_EXPLANATION"));
+ MessageBoxW (MainDlg, szTmp, lpszTitle, MB_ICONINFORMATION | MB_SETFOREGROUND | MB_TOPMOST);
+ }
}
}
}
return 1;
-
case TIMER_ID_SYSENC_DRIVE_ANALYSIS_PROGRESS:
if (bSysEncDriveAnalysisInProgress)
{
UpdateProgressBarProc (GetTickCount() - SysEncDriveAnalysisStart);
if (GetTickCount() - SysEncDriveAnalysisStart > SYSENC_DRIVE_ANALYSIS_ETA)
{
// It's taking longer than expected -- reinit the progress bar
SysEncDriveAnalysisStart = GetTickCount ();
@@ -7007,21 +7251,34 @@ BOOL CALLBACK MainDialogProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa
}
EndMainDlg (hwndDlg);
return 1;
case WM_COMMAND:
if (lw == IDHELP)
{
- OpenPageHelp (hwndDlg, nCurPageNo);
+ if (nCurPageNo == SYSENC_RESCUE_DISK_CREATION_PAGE ||
+ nCurPageNo == SYSENC_RESCUE_DISK_BURN_PAGE ||
+ nCurPageNo == SYSENC_RESCUE_DISK_VERIFIED_PAGE)
+ {
+ Applink("rescue");
+ }
+ else if (nCurPageNo == PASSWORD_PAGE)
+ {
+ Applink("passwords");
+ }
+ else
+ {
+ OpenPageHelp(hwndDlg, nCurPageNo);
+ }
return 1;
}
else if (lw == IDCANCEL)
{
PostMessage (hwndDlg, TC_APPMSG_FORMAT_USER_QUIT, 0, 0);
return 1;
}
else if (lw == IDC_NEXT)
{
if (nCurPageNo == INTRO_PAGE)
@@ -7076,21 +7333,21 @@ BOOL CALLBACK MainDialogProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa
}
else if (nCurPageNo == SYSENC_TYPE_PAGE)
{
if (bHiddenOS)
{
bWholeSysDrive = FALSE;
bHiddenVolDirect = FALSE;
}
if (!bHiddenOS)
- nNewPageNo = SYSENC_SPAN_PAGE - 1; // Skip irrelevant pages
+ nNewPageNo = PASSWORD_PAGE - 1; // Skip irrelevant pages
}
else if (nCurPageNo == SYSENC_HIDDEN_OS_REQ_CHECK_PAGE)
{
WaitCursor ();
try
{
BootEncObj->CheckRequirementsHiddenOS ();
if (CheckGapBetweenSysAndHiddenOS ())
Warning ("GAP_BETWEEN_SYS_AND_HIDDEN_OS_PARTITION", MainDlg);
@@ -7620,38 +7877,43 @@ BOOL CALLBACK MainDialogProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa
return 1;
}
}
if (!(bHiddenVolDirect && bHiddenVolHost))
nNewPageNo = PASSWORD_PAGE - 1;
}
else if (nCurPageNo == PASSWORD_PAGE)
{
+ if (SysEncInEffect ())
+ {
+ wchar_t tmpPwd[MAX_PASSWORD + 1];
+ GetWindowText (GetDlgItem (hCurPage, IDC_PASSWORD), tmpPwd, iMaxPasswordLength + 1);
+ }
VerifyPasswordAndUpdate (hwndDlg, GetDlgItem (MainDlg, IDC_NEXT),
GetDlgItem (hCurPage, IDC_PASSWORD),
GetDlgItem (hCurPage, IDC_VERIFY),
volumePassword.Text,
szVerify,
KeyFilesEnable && FirstKeyFile!=NULL && !SysEncInEffect());
volumePassword.Length = (unsigned __int32) strlen ((char *) volumePassword.Text);
if (volumePassword.Length > 0)
{
// Password character encoding
if (SysEncInEffect () && !CheckPasswordCharEncoding (GetDlgItem (hCurPage, IDC_PASSWORD), NULL))
{
Error ("UNSUPPORTED_CHARS_IN_PWD", hwndDlg);
return 1;
}
- // Check password length (check also done for outer volume which is not the case in TrueCrypt).
+ // Check password length (check also done for outer volume which is not the case in TrueCrypt).
else if (!CheckPasswordLength (hwndDlg, volumePassword.Length, 0, SysEncInEffect(), SysEncInEffect()? hash_algo : 0, FALSE, FALSE))
{
return 1;
}
}
// Store the password in case we need to restore it after keyfile is applied to it
if (!GetPassword (hCurPage, IDC_PASSWORD, szRawPassword, iMaxPasswordLength + 1, FALSE, TRUE))
return 1;
@@ -7676,58 +7938,87 @@ BOOL CALLBACK MainDialogProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa
KillTimer (hwndDlg, TIMER_ID_KEYB_LAYOUT_GUARD);
if (bKeyboardLayoutChanged)
{
// Restore the original keyboard layout
if (LoadKeyboardLayout (OrigKeyboardLayout, KLF_ACTIVATE | KLF_SUBSTITUTE_OK) == NULL)
Warning ("CANNOT_RESTORE_KEYBOARD_LAYOUT", hwndDlg);
else
bKeyboardLayoutChanged = FALSE;
}
-
}
if (!PimEnable)
{
// PIM not activated. Skip PIM page
nNewPageNo = PIM_PAGE;
volumePim = 0;
if (!CreatingHiddenSysVol() && bHiddenVol && !bHiddenVolHost)
{
if ( (volumePim == outerVolumePim)
&& (volumePassword.Length == outerVolumePassword.Length)
&& (0 == memcmp (volumePassword.Text, outerVolumePassword.Text, volumePassword.Length))
)
{
Warning ("HIDDEN_CREDS_SAME_AS_OUTER", hwndDlg);
return 1;
}
}
- if (SysEncInEffect ())
- {
- nNewPageNo = SYSENC_COLLECTING_RANDOM_DATA_PAGE - 1; // Skip irrelevant pages
- }
-
if (bInPlaceEncNonSys)
{
nNewPageNo = NONSYS_INPLACE_ENC_RAND_DATA_PAGE - 1; // Skip irrelevant pages
}
else if (WizardMode != WIZARD_MODE_SYS_DEVICE
&& !FileSize4GBLimitQuestionNeeded ()
|| CreatingHiddenSysVol()) // If we're creating a hidden volume for a hidden OS, we don't need to format it with any filesystem (the entire OS will be copied to the hidden volume sector by sector).
{
nNewPageNo = FORMAT_PAGE - 1; // Skip irrelevant pages
}
}
+
+
+ if (SysEncInEffect ())
+ {
+ if (PimEnable)
+ nNewPageNo = PIM_PAGE - 1;
+ else
+ {
+ nNewPageNo = SYSENC_RESCUE_DISK_CREATION_PAGE - 1; // Skip irrelevant pages
+
+ wchar_t tmp[RANDPOOL_DISPLAY_SIZE + 1];
+ if (!bInPlaceEncNonSys)
+ {
+ /* Generate master key and other related data (except the rescue disk) for system encryption. */
+ try
+ {
+ WaitCursor();
+ BootEncObj->PrepareInstallation(!bWholeSysDrive, volumePassword, nVolumeEA, FIRST_MODE_OF_OPERATION_ID, hash_algo, volumePim, L"");
+ }
+ catch (Exception &e)
+ {
+ e.Show(hwndDlg);
+ NormalCursor();
+ return 1;
+ }
+ }
+ KillTimer(hwndDlg, TIMER_ID_RANDVIEW);
+ // Attempt to wipe the GUI field showing portions of randpool
+ wmemset(tmp, L'X', ARRAYSIZE(tmp));
+ tmp[ARRAYSIZE(tmp) - 1] = 0;
+ SetWindowText(hRandPoolSys, tmp);
+ NormalCursor();
+ }
+
+ }
}
else if (nCurPageNo == PIM_PAGE)
{
volumePim = GetPim (hCurPage, IDC_PIM, 0);
if (!SysEncInEffect() && (volumePim > MAX_PIM_VALUE))
{
SetFocus (GetDlgItem(hCurPage, IDC_PIM));
Error ("PIM_TOO_BIG", hwndDlg);
@@ -7749,42 +8040,64 @@ BOOL CALLBACK MainDialogProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa
if (volumePassword.Length > 0)
{
// Password character encoding
if (SysEncInEffect() && (volumePim > MAX_BOOT_PIM_VALUE))
{
SetFocus (GetDlgItem(hCurPage, IDC_PIM));
Error ("PIM_SYSENC_TOO_BIG", hwndDlg);
return 1;
}
// Check password length (check also done for outer volume which is not the case in TrueCrypt).
- else if (!CheckPasswordLength (hwndDlg, volumePassword.Length, volumePim, SysEncInEffect(), SysEncInEffect()? hash_algo : 0, TRUE, FALSE))
+ else if (!CheckPasswordLength (hwndDlg, volumePassword.Length, volumePim, SysEncInEffect(), SysEncInEffect()? hash_algo : 0, FALSE, FALSE))
{
return 1;
}
}
- if (SysEncInEffect ())
- {
-
- nNewPageNo = SYSENC_COLLECTING_RANDOM_DATA_PAGE - 1; // Skip irrelevant pages
- }
-
if (bInPlaceEncNonSys)
{
nNewPageNo = NONSYS_INPLACE_ENC_RAND_DATA_PAGE - 1; // Skip irrelevant pages
}
else if (WizardMode != WIZARD_MODE_SYS_DEVICE
&& !FileSize4GBLimitQuestionNeeded ()
|| CreatingHiddenSysVol()) // If we're creating a hidden volume for a hidden OS, we don't need to format it with any filesystem (the entire OS will be copied to the hidden volume sector by sector).
{
nNewPageNo = FORMAT_PAGE - 1; // Skip irrelevant pages
}
+
+ if (SysEncInEffect ())
+ {
+ nNewPageNo = SYSENC_RESCUE_DISK_CREATION_PAGE - 1; // Skip irrelevant pages
+
+ wchar_t tmp[RANDPOOL_DISPLAY_SIZE + 1];
+ if (!bInPlaceEncNonSys)
+ {
+ /* Generate master key and other related data (except the rescue disk) for system encryption. */
+ try
+ {
+ WaitCursor();
+ BootEncObj->PrepareInstallation(!bWholeSysDrive, volumePassword, nVolumeEA, FIRST_MODE_OF_OPERATION_ID, hash_algo, volumePim, L"");
+ }
+ catch (Exception &e)
+ {
+ e.Show(hwndDlg);
+ NormalCursor();
+ return 1;
+ }
+ }
+ KillTimer(hwndDlg, TIMER_ID_RANDVIEW);
+ // Attempt to wipe the GUI field showing portions of randpool
+ wmemset(tmp, L'X', ARRAYSIZE(tmp));
+ tmp[ARRAYSIZE(tmp) - 1] = 0;
+ SetWindowText(hRandPoolSys, tmp);
+ NormalCursor();
+ }
}
else if (nCurPageNo == HIDDEN_VOL_HOST_PASSWORD_PAGE
|| nCurPageNo == NONSYS_INPLACE_ENC_RESUME_PASSWORD_PAGE)
{
WaitCursor ();
if (!GetPassword (hCurPage, IDC_PASSWORD_DIRECT, (char*) volumePassword.Text, iMaxPasswordLength + 1, FALSE, TRUE))
{
NormalCursor ();
@@ -8796,20 +9109,40 @@ ovf_end:
return 1;
}
else if (lw == IDC_PREV)
{
if (nCurPageNo == SYSENC_SPAN_PAGE)
{
// Skip irrelevant pages when going back
if (!bHiddenOS)
nNewPageNo = SYSENC_TYPE_PAGE + 1;
}
+
+ if (nCurPageNo == SYSENC_RESCUE_DISK_CREATION_PAGE)
+ {
+ if (SysEncInEffect ())
+ {
+ nNewPageNo = (PimEnable? PIM_PAGE : PASSWORD_PAGE) + 1;
+ }
+ }
+
+ if (nCurPageNo == SYSENC_RESCUE_DISK_BURN_PAGE)
+ {
+ nNewPageNo = SYSENC_RESCUE_DISK_BURN_PAGE + 1; // Stay on the same page
+ Warning("RESCUE_DISK_BACK_BUTTON", hwndDlg);
+ }
+
+ if (nCurPageNo == SYSENC_PRETEST_RESULT_PAGE)
+ {
+ nNewPageNo = SYSENC_PRETEST_RESULT_PAGE + 1; // Stay on the same page
+ }
+
if (nCurPageNo == SYSENC_MULTI_BOOT_MODE_PAGE)
{
// Skip the drive analysis page(s) or other irrelevant pages when going back
if (bHiddenOS)
nNewPageNo = SYSENC_HIDDEN_OS_REQ_CHECK_PAGE + 1;
else if (bWholeSysDrive)
nNewPageNo = SYSENC_PRE_DRIVE_ANALYSIS_PAGE + 1;
else
nNewPageNo = SYSENC_SPAN_PAGE + 1;
}
@@ -8921,21 +9254,24 @@ ovf_end:
szVerify,
KeyFilesEnable && FirstKeyFile!=NULL && !SysEncInEffect ());
volumePassword.Length = (unsigned __int32) strlen ((char *) volumePassword.Text);
nNewPageNo = SIZE_PAGE + 1; // Skip the hidden volume host password page
if (SysEncInEffect ())
{
- nNewPageNo = CIPHER_PAGE + 1; // Skip irrelevant pages
+ if (!bHiddenOS)
+ nNewPageNo = SYSENC_TYPE_PAGE + 1; // Skip irrelevant pages
+ else
+ nNewPageNo = CIPHER_PAGE + 1; // Skip irrelevant pages
KillTimer (hwndDlg, TIMER_ID_KEYB_LAYOUT_GUARD);
if (bKeyboardLayoutChanged)
{
// Restore the original keyboard layout
if (LoadKeyboardLayout (OrigKeyboardLayout, KLF_ACTIVATE | KLF_SUBSTITUTE_OK) == NULL)
Warning ("CANNOT_RESTORE_KEYBOARD_LAYOUT", hwndDlg);
else
bKeyboardLayoutChanged = FALSE;
@@ -10624,10 +10960,519 @@ static DWORD GetFormatSectorSize ()
DISK_GEOMETRY_EX geometry;
if (!GetDriveGeometry (szDiskFile, &geometry))
{
handleWin32Error (MainDlg, SRC_POS);
AbortProcessSilent();
}
return geometry.Geometry.BytesPerSector;
}
+
+/* This function is called when advanced dialog in intro page is open */
+BOOL CALLBACK AdvanceDlgProcIntro (HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam)
+{
+ WORD lw = LOWORD(wParam);
+
+ switch (msg)
+ {
+ case WM_INITDIALOG:
+
+ bHiddenVolHost = bHiddenVol = bHiddenOS;
+
+ SendMessage (GetDlgItem (hwndDlg, IDC_SYSENC_HIDDEN), WM_SETFONT, (WPARAM) hUserBoldFont, (LPARAM) TRUE);
+ SendMessage (GetDlgItem (hwndDlg, IDC_SYSENC_NORMAL), WM_SETFONT, (WPARAM) hUserBoldFont, (LPARAM) TRUE);
+
+ CheckButton (GetDlgItem (hwndDlg, bHiddenOS ? IDC_SYSENC_HIDDEN : IDC_SYSENC_NORMAL));
+
+ return 1;
+ case WM_COMMAND:
+ {
+ if (lw == IDCANCEL)
+ {
+ EndDialog(hwndDlg, lw);
+ return 1;
+ }
+
+ if(lw == IDOK)
+ {
+ if (bHiddenOS)
+ {
+ bWholeSysDrive = FALSE;
+ bHiddenVolDirect = FALSE;
+ }
+ EndDialog(hwndDlg, lw);
+ return 1;
+ }
+
+ if (lw == IDC_SYSENC_HIDDEN)
+ {
+ SendMessage (GetDlgItem (hwndDlg, IDC_SYSENC_NORMAL), BM_SETCHECK, BST_UNCHECKED, 0);
+
+ bHiddenOS = TRUE;
+ bHiddenVol = TRUE;
+ bHiddenVolHost = TRUE;
+ return 1;
+ }
+
+ if (lw == IDC_SYSENC_NORMAL)
+ {
+ SendMessage (GetDlgItem (hwndDlg, IDC_SYSENC_HIDDEN), BM_SETCHECK, BST_UNCHECKED, 0);
+
+ bHiddenOS = FALSE;
+ bHiddenVol = FALSE;
+ bHiddenVolHost = FALSE;
+ return 1;
+ }
+
+ if(lw == IDHELP)
+ {
+ Applink ("hiddensysenc");
+ return 1;
+ }
+ }
+ }
+ return 0;
+}
+
+/* AES, HASH, Pim and Wipe mode can be selected here */
+BOOL CALLBACK AdvanceDlgProc (HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam)
+{
+ WORD lw = LOWORD(wParam);
+ WORD hw = HIWORD(wParam);
+ int ea, hid;
+ wchar_t buf[100];
+ BOOL bNTFSallowed = FALSE;
+ BOOL bFATallowed = FALSE;
+ BOOL bEXFATallowed = FALSE;
+ BOOL bReFSallowed = FALSE;
+ BOOL bNoFSallowed = FALSE;
+ hCurPage = hwndDlg;
+
+ switch (msg)
+ {
+ case WM_INITDIALOG:
+ {
+ SetWindowTextW ( GetDlgItem (hwndDlg, IDT_IMPORTANT_NOTE), GetString ("ADV_FEATURES_NOTE"));
+ SetWindowTextW ( GetDlgItem (hwndDlg, IDT_PIM_INFO), GetString ("PIM_INFO"));
+ SetWindowTextW ( GetDlgItem (hwndDlg, IDT_WIPE_INFO), GetString ("WIPE_INFO"));
+
+ /* Encryption algorithms */
+
+ SendMessage(GetDlgItem(hwndDlg, IDC_COMBO_BOX), CB_RESETCONTENT, 0, 0);
+
+ for (ea = EAGetFirst (); ea != 0; ea = EAGetNext (ea))
+ {
+ if (EAIsFormatEnabled (ea) && (!SysEncInEffect () || bSystemIsGPT || EAIsMbrSysEncEnabled (ea)))
+ AddComboPair (GetDlgItem (hwndDlg, IDC_COMBO_BOX), EAGetName (buf, ARRAYSIZE(buf), ea, 1), ea);
+ }
+
+ SelectAlgo (GetDlgItem (hwndDlg, IDC_COMBO_BOX), &nVolumeEA);
+ ComboSelChangeEA (hwndDlg);
+ SetFocus (GetDlgItem (hwndDlg, IDC_COMBO_BOX));
+
+ /* Hash algorithms */
+ if (SysEncInEffect())
+ {
+ RandSetHashFunction(hash_algo);
+ for (hid = FIRST_PRF_ID; hid <= LAST_PRF_ID; hid++)
+ {
+ // Use blake2s for hashing
+ if (((hid == BLAKE2S) || !HashIsDeprecated(hid)) && (bSystemIsGPT || HashForSystemEncryption(hid)))
+ AddComboPair(GetDlgItem(hwndDlg, IDC_COMBO_BOX_HASH_ALGO), HashGetName(hid), hid);
+ }
+ }
+ else
+ {
+ hash_algo = RandGetHashFunction();
+ for (hid = FIRST_PRF_ID; hid <= LAST_PRF_ID; hid++)
+ {
+ if (!HashIsDeprecated(hid))
+ AddComboPair(GetDlgItem(hwndDlg, IDC_COMBO_BOX_HASH_ALGO), HashGetName(hid), hid);
+ }
+ }
+
+ if (CreatingHiddenSysVol())
+ Warning ("HIDDEN_OS_PRE_CIPHER_WARNING", MainDlg);
+
+ SetWindowText(GetDlgItem(hwndDlg, IDC_SHA512_HELP), GetString("SHA512_HELP"));
+ SelectAlgo(GetDlgItem(hwndDlg, IDC_COMBO_BOX_HASH_ALGO), &hash_algo);
+
+ /* file system options */
+ SetTimer(GetParent(hwndDlg), TIMER_ID_RANDVIEW, TIMER_INTERVAL_RANDVIEW, NULL);
+
+ hMasterKey = GetDlgItem(hwndDlg, IDC_DISK_KEY);
+ hHeaderKey = GetDlgItem(hwndDlg, IDC_HEADER_KEY);
+ hRandPool = GetDlgItem(hwndDlg, IDC_RANDOM_BYTES);
+
+ SendMessage(GetDlgItem(hwndDlg, IDC_RANDOM_BYTES), WM_SETFONT, (WPARAM)hFixedDigitFont, (LPARAM)TRUE);
+ SendMessage(GetDlgItem(hwndDlg, IDC_DISK_KEY), WM_SETFONT, (WPARAM)hFixedDigitFont, (LPARAM)TRUE);
+ SendMessage(GetDlgItem(hwndDlg, IDC_HEADER_KEY), WM_SETFONT, (WPARAM)hFixedDigitFont, (LPARAM)TRUE);
+
+ /* Quick/Dynamic */
+
+ if (bHiddenVol)
+ {
+ quickFormat = !bHiddenVolHost;
+ dynamicFormat = FALSE;
+ bSparseFileSwitch = FALSE;
+ }
+ else
+ {
+ if (bDevice)
+ {
+ dynamicFormat = FALSE;
+ bSparseFileSwitch = FALSE;
+ }
+ else
+ {
+ wchar_t root[TC_MAX_PATH];
+ DWORD fileSystemFlags = 0;
+
+ /* Check if the host file system supports sparse files */
+
+ if (GetVolumePathName (szFileName, root, array_capacity (root)))
+ {
+ GetVolumeInformation (root, NULL, 0, NULL, NULL, &fileSystemFlags, NULL, 0);
+ bSparseFileSwitch = fileSystemFlags & FILE_SUPPORTS_SPARSE_FILES;
+ }
+ else
+ bSparseFileSwitch = FALSE;
+ if (!bSparseFileSwitch)
+ {
+ dynamicFormat = FALSE;
+ }
+ }
+ }
+ SendMessage (GetDlgItem (hwndDlg, IDC_SHOW_KEYS), BM_SETCHECK, showKeys ? BST_CHECKED : BST_UNCHECKED, 0);
+ SetWindowText (GetDlgItem (hwndDlg, IDC_RANDOM_BYTES), showKeys ? L"" : L"******************************** ");
+ SetWindowText (GetDlgItem (hwndDlg, IDC_HEADER_KEY), showKeys ? L"" : L"******************************** ");
+ SetWindowText (GetDlgItem (hwndDlg, IDC_DISK_KEY), showKeys ? L"" : L"******************************** ");
+
+ SendMessage(GetDlgItem(hwndDlg, IDC_CLUSTERSIZE), CB_RESETCONTENT, 0, 0);
+ AddComboPairW(GetDlgItem(hwndDlg, IDC_CLUSTERSIZE), GetString("DEFAULT"), 0);
+ SendMessage(GetDlgItem(hwndDlg, IDC_CLUSTERSIZE), CB_SETCURSEL, 0, 0);
+ EnableWindow(GetDlgItem(hwndDlg, IDC_CLUSTERSIZE), TRUE);
+
+ /* Filesystems */
+ bNTFSallowed = FALSE;
+ bFATallowed = FALSE;
+ bEXFATallowed = FALSE;
+ bReFSallowed = FALSE;
+ bNoFSallowed = FALSE;
+
+ SendMessage(GetDlgItem(hwndDlg, IDC_FILESYS), CB_RESETCONTENT, 0, 0);
+ EnableWindow(GetDlgItem(hwndDlg, IDC_FILESYS), TRUE);
+
+ uint64 dataAreaSize = GetVolumeDataAreaSize (bHiddenVol && !bHiddenVolHost, nVolumeSize);
+
+ if (!CreatingHiddenSysVol())
+ {
+ if (dataAreaSize >= TC_MIN_NTFS_FS_SIZE && dataAreaSize <= TC_MAX_NTFS_FS_SIZE)
+ {
+ AddComboPair (GetDlgItem (hwndDlg, IDC_FILESYS), L"NTFS", FILESYS_NTFS);
+ bNTFSallowed = TRUE;
+ }
+
+ if (dataAreaSize >= TC_MIN_FAT_FS_SIZE && dataAreaSize <= TC_MAX_FAT_SECTOR_COUNT * GetFormatSectorSize())
+ {
+ AddComboPair (GetDlgItem (hwndDlg, IDC_FILESYS), L"FAT", FILESYS_FAT);
+ bFATallowed = TRUE;
+ }
+
+ //exFAT support added starting from Vista SP1
+ if (IsOSVersionAtLeast (WIN_VISTA, 1) && dataAreaSize >= TC_MIN_EXFAT_FS_SIZE && dataAreaSize <= TC_MAX_EXFAT_FS_SIZE)
+ {
+ AddComboPair (GetDlgItem (hwndDlg, IDC_FILESYS), L"exFAT", FILESYS_EXFAT);
+ bEXFATallowed = TRUE;
+ }
+
+ //ReFS write support activated by default starting from Windows 10
+ //We don't support it yet for the creation of hidden volumes
+ if ((!bHiddenVolHost) && IsOSVersionAtLeast (WIN_10, 0) && dataAreaSize >= TC_MIN_REFS_FS_SIZE && dataAreaSize <= TC_MAX_REFS_FS_SIZE)
+ {
+ AddComboPair (GetDlgItem (hwndDlg, IDC_FILESYS), L"ReFS", FILESYS_REFS);
+ bReFSallowed = TRUE;
+ }
+ }
+ else
+ {
+ // We're creating a hidden volume for a hidden OS, so we don't need to format it with
+ // any filesystem (the entire OS will be copied to the hidden volume sector by sector).
+ EnableWindow (GetDlgItem (hwndDlg, IDC_FILESYS), FALSE);
+ EnableWindow (GetDlgItem (hwndDlg, IDC_CLUSTERSIZE), FALSE);
+ }
+ if (!bHiddenVolHost)
+ {
+ AddComboPairW(GetDlgItem(hwndDlg, IDC_FILESYS), GetString("NONE"), FILESYS_NONE);
+ bNoFSallowed = TRUE;
+ }
+ if (fileSystem == FILESYS_NONE) // If no file system has been previously selected
+ {
+ // Set default file system
+
+ if (bFATallowed && !(nNeedToStoreFilesOver4GB == 1 && (bNTFSallowed || bEXFATallowed || bReFSallowed)))
+ fileSystem = FILESYS_FAT;
+ else if (bEXFATallowed)
+ fileSystem = FILESYS_EXFAT;
+ else if (bNTFSallowed)
+ fileSystem = FILESYS_NTFS;
+ else if (bReFSallowed)
+ fileSystem = FILESYS_REFS;
+ else if (bNoFSallowed)
+ fileSystem = FILESYS_NONE;
+ else
+ {
+ AddComboPair (GetDlgItem (hwndDlg, IDC_FILESYS), L"---", 0);
+ }
+ }
+
+ SendMessage(GetDlgItem(hwndDlg, IDC_FILESYS), CB_SETCURSEL, 0, 0);
+ SelectAlgo(GetDlgItem(hwndDlg, IDC_FILESYS), (int *)&fileSystem);
+
+ /* PIM and Wipe mode */
+ SetCheckBox(hwndDlg, IDC_PIM_ENABLE, PimEnable);
+
+ PopulateWipeModeCombo(GetDlgItem(hwndDlg, IDC_WIPE_MODE),
+ SystemEncryptionStatus == SYSENC_STATUS_DECRYPTING && !bInPlaceEncNonSys,
+ TRUE,
+ FALSE);
+ SelectAlgo(GetDlgItem(hwndDlg, IDC_WIPE_MODE), (int *)&nWipeMode);
+ SetFocus(GetDlgItem(GetParent(hwndDlg), IDOK));
+ }
+ return 1;
+ case WM_COMMAND:
+ if (lw == IDCANCEL)
+ {
+ EndDialog(hwndDlg, lw);
+ return 1;
+ }
+ if (lw == IDOK)
+ {
+ /* Save hash and encryption algo */
+ LPARAM nIndex;
+ nIndex = SendMessage (GetDlgItem (hCurPage, IDC_COMBO_BOX), CB_GETCURSEL, 0, 0);
+ nVolumeEA = (int) SendMessage (GetDlgItem (hCurPage, IDC_COMBO_BOX), CB_GETITEMDATA, nIndex, 0);
+
+ if (!bSystemIsGPT && SysEncInEffect ()
+ && EAGetCipherCount (nVolumeEA) > 1) // Cascade?
+ {
+ if (AskWarnNoYes ("CONFIRM_CASCADE_FOR_SYS_ENCRYPTION", hwndDlg) == IDNO)
+ return 1;
+
+ if (!bHiddenOS)
+ Info ("NOTE_CASCADE_FOR_SYS_ENCRYPTION", hwndDlg);
+ }
+
+ nIndex = SendMessage (GetDlgItem (hCurPage, IDC_COMBO_BOX_HASH_ALGO), CB_GETCURSEL, 0, 0);
+ hash_algo = (int) SendMessage (GetDlgItem (hCurPage, IDC_COMBO_BOX_HASH_ALGO), CB_GETITEMDATA, nIndex, 0);
+
+ RandSetHashFunction (hash_algo);
+
+ /* Save PIM and Wipe mode */
+ nWipeMode = (WipeAlgorithmId)SendMessage(GetDlgItem(hwndDlg, IDC_WIPE_MODE),
+ CB_GETITEMDATA,
+ SendMessage(GetDlgItem(hwndDlg, IDC_WIPE_MODE), CB_GETCURSEL, 0, 0),
+ 0);
+
+ PimEnable = GetCheckBox(hwndDlg, IDC_PIM_ENABLE);
+ SetCheckBox(hwndDlg, IDC_PIM_ENABLE, PimEnable);
+
+ EndDialog(hwndDlg, lw);
+ return 1;
+ }
+ if (lw == IDC_CIPHER_TEST)
+ {
+ LPARAM nIndex;
+ int c;
+
+ nIndex = SendMessage (GetDlgItem (hCurPage, IDC_COMBO_BOX), CB_GETCURSEL, 0, 0);
+ nVolumeEA = (int) SendMessage (GetDlgItem (hCurPage, IDC_COMBO_BOX), CB_GETITEMDATA, nIndex, 0);
+
+ for (c = EAGetLastCipher (nVolumeEA); c != 0; c = EAGetPreviousCipher (nVolumeEA, c))
+ {
+ DialogBoxParamW (hInst, MAKEINTRESOURCEW (IDD_CIPHER_TEST_DLG),
+ GetParent (hwndDlg), (DLGPROC) CipherTestDialogProc, (LPARAM) c);
+ }
+
+ return 1;
+ }
+
+ if (lw == IDC_BENCHMARK)
+ {
+ // Reduce CPU load
+ bFastPollEnabled = FALSE;
+ bRandmixEnabled = FALSE;
+
+ DialogBoxParamW (hInst,
+ MAKEINTRESOURCEW (IDD_BENCHMARK_DLG), hwndDlg,
+ (DLGPROC) BenchmarkDlgProc, (LPARAM) bSystemIsGPT);
+
+ bFastPollEnabled = TRUE;
+ bRandmixEnabled = TRUE;
+ return 1;
+ }
+
+ if (lw == IDC_WIPE_MODE && hw == CBN_SELCHANGE)
+ {
+ Warning ("WIPE_WARNING", hwndDlg);
+ return 1;
+ }
+
+ if (hw == CBN_SELCHANGE && lw == IDC_COMBO_BOX)
+ {
+ ComboSelChangeEA (hwndDlg);
+ SetWindowTextW (GetDlgItem (hCurPage, IDC_BENCHMARK), GetString ("IDC_BENCHMARK"));
+ return 1;
+ }
+
+ if (hw == CBN_SELCHANGE && lw == IDC_COMBO_BOX_HASH_ALGO)
+ {
+ ShowWindow (GetDlgItem (hwndDlg, IDT_HASH_ALGO), SW_SHOW);
+ if (SysEncInEffect())
+ {
+ HWND hHashAlgoItem = GetDlgItem (hCurPage, IDC_COMBO_BOX_HASH_ALGO);
+ int selectedAlgo = (int)SendMessage (hHashAlgoItem, CB_GETITEMDATA, SendMessage (hHashAlgoItem, CB_GETCURSEL, 0, 0), 0);
+
+ if (!bSystemIsGPT && !HashForSystemEncryption (selectedAlgo))
+ {
+ hash_algo = DEFAULT_HASH_ALGORITHM_BOOT;
+ RandSetHashFunction (DEFAULT_HASH_ALGORITHM_BOOT);
+ Info ("ALGO_NOT_SUPPORTED_FOR_SYS_ENCRYPTION", MainDlg);
+ SelectAlgo (GetDlgItem (hCurPage, IDC_COMBO_BOX_HASH_ALGO), &hash_algo);
+ }
+ }
+ return 1;
+ }
+
+ if (lw == IDC_PIM_ENABLE)
+ {
+ PimEnable = GetCheckBox (hwndDlg, IDC_PIM_ENABLE);
+ if (!PimEnable)
+ volumePim = 0;
+ return 1;
+ }
+ }
+ return 0;
+}
+
+void
+AddComboPairW (HWND hComboBox, const wchar_t *lpszItem, int value)
+{
+ LPARAM nIndex;
+ nIndex = SendMessageW(hComboBox, CB_ADDSTRING, 0, (LPARAM)lpszItem);
+ nIndex = SendMessage(hComboBox, CB_SETITEMDATA, nIndex, (LPARAM)value);
+}
+
+/* Acording to NIST, only a blacklist check and at least 8 character should be compulsary, no special character check... */
+int PrintStrongness (char input[], unsigned int length)
+{
+ unsigned int n = length;
+ int iReturnValue = 0;
+ if (n < 10)
+ {
+ burn (input, sizeof(input));
+ return iReturnValue = weak;
+ }
+ else if (CheckWord(input))
+ {
+ burn (input, sizeof(input));
+ return iReturnValue = weak;
+ }
+ //Tetermine the strength of the passsord
+ if ((n >= 13))
+ {
+ iReturnValue = very_strong;
+ }
+ //if 3 out of 4 paramters are true
+ else if (n >= 10)
+ {
+ iReturnValue = strong;
+ }
+ //if 2 out of 4 values are true
+ else if (n >= 8)
+ {
+ iReturnValue = medium;
+ }
+ else
+ {
+ iReturnValue = weak;
+ }
+ burn (input, sizeof(input));
+ return iReturnValue;
+}
+
+/* Check if password is in list
+Credits go Martin York from https://codereview.stackexchange.com/questions/52702/how-to-search-for-a-word-in-a-sorted-text-file-efficiently */
+BOOL CheckWord (char* search)
+{
+
+ bool isWordInDict(std::string const& word);
+ {
+ struct MyDict : std::set<std::string>
+ {
+ typedef std::set<std::string>::const_iterator const_iterator;
+ MyDict()
+ {
+ wchar_t path[TC_MAX_PATH];
+ wchar_t tmp[TC_MAX_PATH];
+ wchar_t destFileName[TC_MAX_PATH] = L"password1000000.txt";
+
+ if (GetModuleFileName (NULL, path, ARRAYSIZE (path)) == 0)
+ {
+ Error ("ERROR_GETTING_PATH", MainDlg);
+ }
+
+ StringCbCopyW(tmp, ARRAYSIZE(tmp), path);
+
+ //detects the last '\' in order to remove the name of the exe file. Afterwards add .txt file in the path
+ for (int i = wcslen(path); i > 1; i--)
+ {
+ if (tmp[i] == '\\')
+ {
+ for(unsigned int j = i + 1; j < wcslen(path); j++)
+ {
+ tmp[j] = '\0';
+ }
+ break;
+ }
+ }
+ StringCbCatW(tmp, sizeof(tmp), destFileName);
+
+ std::ifstream fin(tmp);
+ std::copy(std::istream_iterator<std::string>(fin), std::istream_iterator<std::string>(),
+ std::inserter(*this, end()));
+ }
+ };
+ static const MyDict dict;
+ MyDict::const_iterator find = dict.find(search);
+
+ return find != dict.end();
+ }
+}
+
+/* Credits go to Barmak Shemirani from https://stackoverflow.com/questions/31407492/c-tooltip-function-for-checkbox */
+void CreateToolTip(HWND hWndParent, HWND hControlItem, PTSTR pszText)
+{
+ if (!hControlItem || !hWndParent || !pszText)
+ return;
+
+ HWND hwndTip = CreateWindowEx(NULL, TOOLTIPS_CLASS, NULL,
+ WS_POPUP | TTS_NOFADE | TTS_ALWAYSTIP /*| TTS_BALLOON*/,
+ CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
+ hWndParent, NULL, GetModuleHandle(NULL), NULL);
+
+ if (!hwndTip)
+ return;
+
+ TOOLINFO toolInfo = { 0 };
+ toolInfo.cbSize = sizeof(toolInfo);
+ toolInfo.hwnd = hWndParent;
+ toolInfo.uFlags = TTF_IDISHWND | TTF_SUBCLASS;
+ toolInfo.uId = (UINT_PTR)hControlItem;
+ toolInfo.lpszText = pszText;
+ GetClientRect(hWndParent, &toolInfo.rect);
+ if (!SendMessage(hwndTip, TTM_ADDTOOL, 0, (LPARAM)&toolInfo))
+ {
+ MessageBox(0, TEXT("TTM_ADDTOOL failed\nWrong project manifest!"), 0, 0);
+ }
+}
diff --git a/src/Format/Tcformat.h b/src/Format/Tcformat.h
index f9328afd..a8237521 100644
--- a/src/Format/Tcformat.h
+++ b/src/Format/Tcformat.h
@@ -97,13 +97,21 @@ extern volatile BOOL bInPlaceDecNonSys;
extern __int64 NonSysInplaceEncBytesDone;
extern __int64 NonSysInplaceEncTotalSize;
extern int nPbar;
extern volatile int WizardMode;
extern volatile BOOL bInPlaceEncNonSysResumed;
extern wchar_t HeaderKeyGUIView [KEY_GUI_VIEW_SIZE];
extern wchar_t MasterKeyGUIView [KEY_GUI_VIEW_SIZE];
extern volatile int NonSysInplaceEncStatus;
+BOOL CALLBACK AdvanceDlgProc (HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam);
+BOOL CALLBACK FinishDlgProc (HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam);
+void AddComboPairW (HWND hComboBox, const wchar_t *lpszItem, int value);
+int PrintStrongness (char* input, unsigned int length);
+BOOL CheckWord (char search[]);
+BOOL CALLBACK AdvanceDlgProcIntro (HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam);
+void CreateToolTip (HWND hWndParent, HWND hControlItem, PTSTR pszText);
+
#ifdef __cplusplus
}
#endif
diff --git a/src/Release/Setup Files/Product64.wxs b/src/Release/Setup Files/Product64.wxs
index e20fd1dc..2f43edd1 100644
--- a/src/Release/Setup Files/Product64.wxs
+++ b/src/Release/Setup Files/Product64.wxs
@@ -860,23 +860,20 @@
</Component>
<Component Id="cmpB313B00E647A121B2CBE47F3048A18A7" Guid="{5985576D-6F6C-4D96-9B3E-9E0961CF9FAF}">
<File Id="fil2EB5F87C05CCC55D3964D595C85EF19E" KeyPath="yes" Source="$(sys.CURRENTDIR)\docs\html\en\Release Notes.html" DiskId="1" />
</Component>
<Component Id="cmp400428F6494DE58618E3B92539548C39" Guid="{0A1869ED-25F1-4430-97A5-4C6EA8CDA7FC}">
<File Id="filEDEDEF956F04F36B4163989F9AB9285F" KeyPath="yes" Source="$(sys.CURRENTDIR)\docs\html\en\Removable Medium Volume.html" DiskId="1" />
</Component>
<Component Id="cmpFB2313AB16EF2467366ED136C0E61CE6" Guid="{CFEC9559-9F85-46C6-9E98-AEBB573B96FE}">
<File Id="filE496203C4727FDF47F8352CB9722A8C7" KeyPath="yes" Source="$(sys.CURRENTDIR)\docs\html\en\Removing Encryption.html" DiskId="1" />
</Component>
- <Component Id="cmp960F36632D3FB602421D1195E4EB6FE1" Guid="{321F49A5-8A1B-4881-A32D-12EDA99D1B85}">
- <File Id="fil324009D5856BF4C5270D40F1EC4110EB" KeyPath="yes" Source="$(sys.CURRENTDIR)\docs\html\en\RIPEMD-160.html" DiskId="1" />
- </Component>
<Component Id="cmpB4C7B1A7A3EC0CB2DE805AC5CC5FC0D7" Guid="{4534E8B2-114E-4173-AE3E-75E0D96EB573}">
<File Id="fil8CFD1CFDCBE261B6F91D9E587F8720C0" KeyPath="yes" Source="$(sys.CURRENTDIR)\docs\html\en\Security Model.html" DiskId="1" />
</Component>
<Component Id="cmp00540BF93A805E0B9996945B61E1BC2F" Guid="{1D5B7A85-87F3-45AF-9C09-BA7E088A835D}">
<File Id="filA7A29851126AC571C090BB0FBEE83CB5" KeyPath="yes" Source="$(sys.CURRENTDIR)\docs\html\en\Security Requirements and Precautions.html" DiskId="1" />
</Component>
<Component Id="cmp4C46C6668AD830D543AFE593D51676B3" Guid="{4CD21E9D-243F-4A58-A535-AA8EF9D2BFD1}">
<File Id="fil440C5158A3CD96689918C976DC917325" KeyPath="yes" Source="$(sys.CURRENTDIR)\docs\html\en\Security Requirements for Hidden Volumes.html" DiskId="1" />
</Component>
<Component Id="cmp6EE914124966E3A0F695359116413DD4" Guid="{724FA79D-49BC-4075-ABF4-0C318AE39855}">
@@ -1376,21 +1373,20 @@
<ComponentRef Id="cmpF36A771DF9B1C4CD8E82C08A6D3D0786" />
<ComponentRef Id="cmp63F6A68C5538B45661168554BC3B93D1" />
<ComponentRef Id="cmp0158A6D8BED6391AC7150B6C6AE2A9F9" />
<ComponentRef Id="cmpDE45667E9E3CD9F800EAC1E02B57AAB7" />
<ComponentRef Id="cmp632453049391BAACDD117A40EC442743" />
<ComponentRef Id="cmpCE16E453CAD75A461B4FEBF451A51B7B" />
<ComponentRef Id="cmpC741D187A28A87BD33866C9AC09A1298" />
<ComponentRef Id="cmpB313B00E647A121B2CBE47F3048A18A7" />
<ComponentRef Id="cmp400428F6494DE58618E3B92539548C39" />
<ComponentRef Id="cmpFB2313AB16EF2467366ED136C0E61CE6" />
- <ComponentRef Id="cmp960F36632D3FB602421D1195E4EB6FE1" />
<ComponentRef Id="cmpB4C7B1A7A3EC0CB2DE805AC5CC5FC0D7" />
<ComponentRef Id="cmp00540BF93A805E0B9996945B61E1BC2F" />
<ComponentRef Id="cmp4C46C6668AD830D543AFE593D51676B3" />
<ComponentRef Id="cmp6EE914124966E3A0F695359116413DD4" />
<ComponentRef Id="cmp28E29B4CA17AB51913B756CD9397EEFE" />
<ComponentRef Id="cmp5DF24509F284FABC600232197F803DE5" />
<ComponentRef Id="cmp09E31B885345FBEA1F473AF7A10FD88D" />
<ComponentRef Id="cmpAE05C79A35A43ECCAC995A711DC4D60B" />
<ComponentRef Id="cmpB6D91209A93313D08150643F1738DED8" />
<ComponentRef Id="cmpDB66E821EC13977824FB1069DF5DAA69" />
@@ -1699,11 +1695,11 @@
<!-- Set the ARP -->
<Custom Action="SetARPINSTALLLOCATION" After="InstallValidate"></Custom>
<!-- ScheduleReboot only after DoChecks, which sets ISREBOOTREQUIRED -->
<ScheduleReboot After="DoChecks">ISREBOOTREQUIRED = "1"</ScheduleReboot>
</InstallExecuteSequence>
</Product>
-</Wix> \ No newline at end of file
+</Wix>
diff --git a/src/Release/Setup Files/password1000000.txt b/src/Release/Setup Files/password1000000.txt
new file mode 100644
index 00000000..e6e50bf5
--- /dev/null
+++ b/src/Release/Setup Files/password1000000.txt