Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/maxpat78/pycryptomator
Utilty to access a Cryptomator V8 vault from command line with Python 3
https://github.com/maxpat78/pycryptomator
crypto-tools cryptomator python-script python3 recovery-crypto recovery-tool utility-application
Last synced: 7 days ago
JSON representation
Utilty to access a Cryptomator V8 vault from command line with Python 3
- Host: GitHub
- URL: https://github.com/maxpat78/pycryptomator
- Owner: maxpat78
- License: mit
- Created: 2024-09-04T14:21:39.000Z (2 months ago)
- Default Branch: main
- Last Pushed: 2024-11-06T09:57:13.000Z (9 days ago)
- Last Synced: 2024-11-06T10:58:49.364Z (9 days ago)
- Topics: crypto-tools, cryptomator, python-script, python3, recovery-crypto, recovery-tool, utility-application
- Language: Python
- Homepage:
- Size: 258 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# pycryptomator
A Python 3 package to access a [Cryptomator](https://github.com/cryptomator/cryptomator) [V8](https://docs.cryptomator.org/en/1.7/security/architecture) vault and carry on some useful operations.
```
usage: pycryptomator [-h] [--init] [--print-keys [{a85,b64,words}]] [--master-keys PRIMARY_KEY HMAC_KEY]
[--password PASSWORD] [--change-password]
vault_nameAccess to a Cryptomator V8 vault
positional arguments:
vault_name Location of the existing Cryptomator V8 vault to openoptions:
-h, --help show this help message and exit
--init Initialize a new vault in an empty directory
--print-keys [{a85,b64,words}]
Print the raw master keys as a list of English words for Cryptomator (default), in ASCII85
(a85) or BASE64 (b64) format
--master-keys PRIMARY_KEY HMAC_KEY
Primary and HMAC master keys in ASCII85 or BASE64 format, or - - to read a words list from
standard input
--password PASSWORD Password to unlock master keys stored in config file
--change-password Change the password required to open the vault
```Passing a couple options, you can show you master keys or recover them in case
configuration files are corrupted:`--print-keys` shows the decrypted primary and hmac master key in ASCII85
or BASE64 form, or as a list of English words like Cryptomator itself, to
annotate them in a safe place for recovering purposes.`--master-keys` grants access to the vault even in case of lost configuration
files `vault.cryptomator` and/or `masterkey.cryptomator`, provided the master
keys as ASCII85 or BASE64 strings; `- -` can be used to read the words list
from standard input.After the `vault_name`, you can specify some useful operations like:
```
cd change vault's current directory
ls list unecrypted vault contents (with size and time)
mkdir create a new directory/tree in the vault
mv move or rename files and directories
ln create a symbolic link
rm erase files or directories
decrypt decrypt a file or directory from the vault's virtual filesystem into a given destination
encrypt encrypt a file or directory
alias show the real pathname linked to a virtual one
backup backup the Directory IDs (required to decrypt names) in a ZIP file
```If no operation is specified, an interactive shell is launched on open vault. It can do transparent wildcards expansion (`*` and `?` only).
Functionality was tested in Windows 11 and Ubuntu 22.04 LTS Linux (under Windows WSL).
It's pure Python 3, with pycryptodome addon.
MIT licensed.
Absolutely no warranty!# Internal commands
`*` and `?` wildcards can be specified on command line to enable automatic shell expansion.
`alias `
show the real base64 (encrypted and obfuscated) pathname corresponding to the
vault's pathname`backup `
make in archive.zip a backup of all the directory id files dir.c9r
encountered in the vault tree: they are required to reconstruct original file
names`cd `
make the specified vault's directory the current one in the pycryptomator
internal shell```
decrypt [-fmF]
decrypt -
```
decrypt one or more files and/or directories to the specified destination in the
real file system.
`-f` forces to overwrite existing files, `-m` moves (i.e. deletes) the source
files after decryption, `-F` replicates the full command line path of source
in destination (by default only filenames are copied).
With `-` as destination, a file is decrypted and printed to standard output.`encrypt [-fmF] `
encrypt one or more files and/or directories to the specified destination.
If multiple sources are specified, the destination directory will be created
if not existent.
`-f` forces to overwrite existing files, `-m` moves (i.e. deletes) the source
files after encryption, `-F` replicates the full command line path of source
in destination (by default only filenames are copied).`ln [-old] `
make a symbolic link to a target file or directory in the vault.
It does not check for target existence.
An absolute target should be avoided, since it prevents portability
(i.e. to Windows).
When targeting a directory with `-old`, its dir.c9r file is copied to enable
compatibility with old vault formats (i.e. with current Cryptomator for Android
v. 1.10.3).`ls [-b] [-r] [-s NSDE-!] [...]`
list files and directories with minimal informations like DOS DIR (type/size,
write time, name, symbolic link target).
`-b` prints bare names
`-r` traverses specified directories recursively
`-s` sorts results by one or more criteria: `N`ame, `S`ize, `D`ate, `E`xtension
(a.k.a. file type), `-` sorts in reverse order and `!` puts directories first.`mkdir [-R] [...]`
make one or more directories or directory trees (i.e. intermediate directories
get created) in the vault or in the real file system if `-R` is specified.`mv [...] `
rename or move files and directories. If more files or directories are specified,
destination must be an existing directory and objects are moved inside it;
else, if destination does not exist, it renames the file or directory.`rm [-f] [...]`
remove files and directories. Root directory is protected against accidental
deletion. If a directory is not empty, `-f` switch is required to force its
removal.