Skip to main content

A cross-platform Python wrapper for the VeraCrypt CLI.

Project description

python-veracrypt

CI Docs PyPI

Overview

A cross platform Python wrapper for the VeraCrypt CLI. It requires the VeraCrypt application to be installed on your system and it uses the CLI to perform different operations.

Installation

Install the Python package with pip:

pip install python-veracrypt

You must also install VeraCrypt and ensure the VeraCrypt CLI is available on your PATH. Refer to the VeraCrypt downloads page for installers and platform details:

Prerequisites

  • Verify the VeraCrypt CLI is available by running veracrypt --version (or the equivalent command on your OS).
  • Ensure the process has permission to mount volumes (administrator or sudo may be required).

Supported Platforms

  • Windows
  • macOS
  • Linux

Mount operations may require administrator or sudo permissions depending on your OS and system configuration.

Usage

from veracrypt import VeraCrypt, FileSystem
import os


vc = VeraCrypt()
volume_path = os.path.join('C:\\', 'Users', 'user', 'Desktop', 'test.vc')
# Create a volume
result = vc.create_volume(volume_path, 'SecretPassword', 5 * 1024 * 1024, filesystem=FileSystem.EXFAT)

# Mount a volume
result = vc.mount_volume(volume_path, 'SecretPassword', 'H', options=['/beep'])
# Dismount a volume
result = vc.dismount_volume('H', options=['/beep'])

# Custom command - Pay close attention when using this
result = vc.command(['/volume', volume_path, '/letter', 'H', '/password', 'SecretPassword', '/beep', '/quit', '/silent', '/force'])

Quick start checklist

  1. Install VeraCrypt and confirm the CLI is on your PATH.
  2. Choose a volume path and mount target (drive letter on Windows or mount point on Unix).
  3. Use the helper methods to create, mount, and dismount volumes.

Linux/macOS example

from veracrypt import VeraCrypt, FileSystem

vc = VeraCrypt()
volume_path = "/home/user/secure/test.vc"
mount_point = "/mnt/veracrypt"

result = vc.create_volume(volume_path, "SecretPassword", 5 * 1024 * 1024, filesystem=FileSystem.EXFAT)
result = vc.mount_volume(volume_path, "SecretPassword", mount_point, options=["--filesystem=exfat"])
result = vc.dismount_volume(mount_point)

Handling results

The methods on VeraCrypt return subprocess.CompletedProcess objects. You can inspect the return code and stderr to verify success:

result = vc.mount_volume(volume_path, "SecretPassword", "H", options=["/beep"])
if result.returncode != 0:
    print("Mount failed:", result.stderr)

Security

Passwords

On nix based systems the password is passed in using --stdin, so the password will not appear in bash history or log files.

On Windows based systems the password cannot be passed to the CLI using stdin, so care should be taken to ensure that the password will not appear in history or logs. The result that is returned from the basic functional commands of the VeraCrypt class are subprocess.CompletedProcess objects, and the password is sanitized on windows in the args parameter of the object.

Best practices

  • Avoid hardcoding passwords in source code. Prefer secure prompts or environment variables.
  • Avoid logging the full command line if it contains sensitive values.
  • Ensure mounted volumes are dismounted when not in use.

Documentation

Sphinx documentation lives in the docs/sphinx/ directory. To build HTML docs locally:

pip install ".[docs]"
sphinx-build -b html docs/sphinx docs/sphinx/_build/html

The generated docs can be opened from docs/sphinx/_build/html/index.html.

Troubleshooting

  • If mounts fail, verify the VeraCrypt CLI works outside Python and that your user has sufficient permissions.
  • If you use a custom VeraCrypt install location, ensure the executable directory is on your PATH.

Contributing

  • Install development dependencies with pip install -r requirements-dev.txt.
  • Run tests with pytest.
  • Format with black and sort imports with isort.
  • Lint with ruff and type-check with mypy.

License

This project is licensed under the terms of the LICENSE file in this repository.

References

  1. VeraCrypt

  2. Arcane Code VeraCrypt on Command Line Windows

  3. Arcane Code VeraCrypt on Command Line Linux

  4. Arcane Code VeraCrypt on Command Line MacOS

  5. GitHub - arcanecode/VeraCrypt-CommandLine-Examples

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

python_veracrypt-0.1.2.tar.gz (24.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

python_veracrypt-0.1.2-py3-none-any.whl (21.1 kB view details)

Uploaded Python 3

File details

Details for the file python_veracrypt-0.1.2.tar.gz.

File metadata

  • Download URL: python_veracrypt-0.1.2.tar.gz
  • Upload date:
  • Size: 24.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.3

File hashes

Hashes for python_veracrypt-0.1.2.tar.gz
Algorithm Hash digest
SHA256 e1c8380a0b91a2fbf349ac3f3315b35c2f2c1f9811dcebdaab8d983aa9b4984e
MD5 e9e17c7efd19a16dd2d59c2235bacdb3
BLAKE2b-256 d67ec962877fb75de31b06fb5ba1a9cf9e57c85019c5fbd5b1b8fb72a258fee0

See more details on using hashes here.

File details

Details for the file python_veracrypt-0.1.2-py3-none-any.whl.

File metadata

File hashes

Hashes for python_veracrypt-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 9d687203b3841beb16d94d88447105914589092ffd2e5d10b042a4d7e0a87534
MD5 3c647e0e5f53725297252fc5f815e45f
BLAKE2b-256 aab9092d1cf1c5c279097f5db80d45dfce59bb51d8b29beee18d87cdd7dc23f2

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page