VeraCrypt
aboutsummaryrefslogtreecommitdiff
path: root/doc/html/TrueCrypt Support.html
blob: a259773bd2314f5470415699de7cfb72ac89e4d7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>VeraCrypt - Free Open source disk encryption with strong security for the Paranoid</title>
<meta name="description" content="VeraCrypt is free open-source disk encryption software for Windows, Mac OS X and Linux. In case an attacker forces you to reveal the password, VeraCrypt provides plausible deniability. In contrast to file encryption, data encryption performed by VeraCrypt is real-time (on-the-fly), automatic, transparent, needs very little memory, and does not involve temporary unencrypted files."/>
<meta name="keywords" content="encryption, security"/>
<link href="styles.css" rel="stylesheet" type="text/css" />
</head>
<body>

<div>                      
<a href="https://www.veracrypt.fr/en/Home.html"><img src="VeraCrypt128x128.png" alt="VeraCrypt"/></a>
</div>

<div id="menu">
	<ul>
	  <li><a href="Home.html">Home</a></li>
	  <li><a href="/code/">Source Code</a></li>
	  <li><a href="Downloads.html">Downloads</a></li>
	  <li><a class="active" href="Documentation.html">Documentation</a></li>
	  <li><a href="Donation.html">Donate</a></li>
	  <li><a href="https://sourceforge.net/p/veracrypt/discussion/" target="_blank">Forums</a></li>
	</ul>
</div>

<div>
<p>
<a href="Documentation.html">Documentation</a>           
<img src="arrow_right.gif" alt=">>" style="margin-top: 5px">
<a href="TrueCrypt%20Support.html">TrueCrypt Support</a>
</p></div>

<div class="wikidoc">
<h1>TrueCrypt Support</h1>
<p>Starting from version 1.0f, VeraCrypt supports loading TrueCrypt volumes and partitions, both normal and hidden. In order to activate this, you have to check &ldquo;TrueCrypt Mode&rdquo; in the password prompt dialog as shown below.</p>
<p><img src="TrueCrypt Support_truecrypt_mode_gui.jpg" alt="TrueCrypt mode" width="499" height="205"></p>
<p><strong>Note:</strong> Only volumes and partitions created using TrueCrypt versions
<strong>6.x</strong> and <strong>7.x</strong> are supported.</p>
</div><div class="ClearBoth"></div></body></html>
pan> args.push_back ("detach"); args.push_back (mountedVolume->VirtualDevice); if (ignoreOpenFiles) args.push_back ("-force"); try { Process::Execute ("hdiutil", args); } catch (ExecutedProcessFailed &e) { if (!ignoreOpenFiles) { string err = e.GetErrorOutput(); if (err.find ("couldn't unmount") != string::npos || err.find ("busy") != string::npos || err.find ("49153") != string::npos) { throw MountedVolumeInUse (SRC_POS); } } throw; } } if (syncVolumeInfo || mountedVolume->Protection == VolumeProtection::HiddenVolumeReadOnly) { sync(); VolumeInfoList ml = GetMountedVolumes (mountedVolume->Path); if (ml.size() > 0) mountedVolume = ml.front(); } list <string> args; args.push_back ("--"); args.push_back (mountedVolume->AuxMountPoint); for (int t = 0; true; t++) { try { Process::Execute ("umount", args); break; } catch (ExecutedProcessFailed&) { if (t > 10) throw; Thread::Sleep (200); } } try { mountedVolume->AuxMountPoint.Delete(); } catch (...) { } return mountedVolume; } void CoreMacOSX::CheckFilesystem (shared_ptr <VolumeInfo> mountedVolume, bool repair) const { list <string> args; args.push_back ("/Applications/Utilities/Disk Utility.app"); Process::Execute ("open", args); } void CoreMacOSX::MountAuxVolumeImage (const DirectoryPath &auxMountPoint, const MountOptions &options) const { // Check FUSE version char fuseVersionString[MAXHOSTNAMELEN + 1] = { 0 }; size_t fuseVersionStringLength = MAXHOSTNAMELEN; int status; bool bIsOSXFuse = false; if ((status = sysctlbyname ("macfuse.version.number", fuseVersionString, &fuseVersionStringLength, NULL, 0)) != 0) { fuseVersionStringLength = MAXHOSTNAMELEN; if ((status = sysctlbyname ("osxfuse.version.number", fuseVersionString, &fuseVersionStringLength, NULL, 0)) != 0) { throw HigherFuseVersionRequired (SRC_POS); } else { // look for compatibility mode struct stat sb; if ((0 == stat("/usr/local/lib/libfuse.dylib", &sb)) && (0 == stat("/Library/Frameworks/MacFUSE.framework/MacFUSE", &sb))) { bIsOSXFuse = true; } else throw HigherFuseVersionRequired (SRC_POS); } } vector <string> fuseVersion = StringConverter::Split (string (fuseVersionString), "."); if (fuseVersion.size() < 2) throw HigherFuseVersionRequired (SRC_POS); uint32 fuseVersionMajor = StringConverter::ToUInt32 (fuseVersion[0]); uint32 fuseVersionMinor = StringConverter::ToUInt32 (fuseVersion[1]); if (bIsOSXFuse) { if (fuseVersionMajor < 2 || (fuseVersionMajor == 2 && fuseVersionMinor < 5)) throw HigherFuseVersionRequired (SRC_POS); } else if (fuseVersionMajor < 1 || (fuseVersionMajor == 1 && fuseVersionMinor < 3)) throw HigherFuseVersionRequired (SRC_POS); // Mount volume image string volImage = string (auxMountPoint) + FuseService::GetVolumeImagePath(); list <string> args; args.push_back ("attach"); args.push_back (volImage); args.push_back ("-plist"); args.push_back ("-noautofsck"); args.push_back ("-imagekey"); args.push_back ("diskimage-class=CRawDiskImage"); if (!options.NoFilesystem && options.MountPoint && !options.MountPoint->IsEmpty()) { args.push_back ("-mount"); args.push_back ("required"); // Let the system specify mount point except when the user specified a non-default one if (string (*options.MountPoint).find (GetDefaultMountPointPrefix()) != 0) { args.push_back ("-mountpoint"); args.push_back (*options.MountPoint); } } else args.push_back ("-nomount"); if (options.Protection == VolumeProtection::ReadOnly) args.push_back ("-readonly"); string xml; while (true) { try { xml = Process::Execute ("hdiutil", args); break; } catch (ExecutedProcessFailed &e) { if (e.GetErrorOutput().find ("noautofsck") != string::npos) { args.remove ("-noautofsck"); continue; } throw; } } size_t p = xml.find ("<key>dev-entry</key>"); if (p == string::npos) throw ParameterIncorrect (SRC_POS); p = xml.find ("<string>", p); if (p == string::npos) throw ParameterIncorrect (SRC_POS); p += 8; size_t e = xml.find ("</string>", p); if (e == string::npos) throw ParameterIncorrect (SRC_POS); DevicePath virtualDev = StringConverter::Trim (xml.substr (p, e - p)); try { FuseService::SendAuxDeviceInfo (auxMountPoint, virtualDev); } catch (...) { try { list <string> args; args.push_back ("detach"); args.push_back (volImage); args.push_back ("-force"); Process::Execute ("hdiutil", args); } catch (ExecutedProcessFailed&) { } throw; } } auto_ptr <CoreBase> Core (new CoreServiceProxy <CoreMacOSX>); auto_ptr <CoreBase> CoreDirect (new CoreMacOSX); }