pycryptomator


Namepycryptomator JSON
Version 1.14 PyPI version JSON
download
home_pageNone
SummaryAccess a Cryptomator V8 vault with pure Python
upload_time2024-11-06 09:57:48
maintainerNone
docs_urlNone
authorNone
requires_python>=3.0
licenseMIT License Copyright (c) 2024 maxpat78 Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
keywords cryptomator python crypto encryption security privacy cryptography vault
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # 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_name

Access to a Cryptomator V8 vault

positional arguments:
  vault_name            Location of the existing Cryptomator V8 vault to open

options:
  -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 <pathname>`
show the real base64 (encrypted and obfuscated) pathname corresponding to the
vault's pathname

`backup <archive.zip>`
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 <directory>`
make the specified vault's directory the current one in the pycryptomator
internal shell

```
decrypt [-fmF] <virtual_pathname_source1...> <real_pathname_destination>
decrypt <virtual_pathname_source> -
```
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] <real_pathname_source1...> <virtual_pathname_destination>`
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] <target> <link>`
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-!] <virtual_path1> [...<virtual_pathN>]`
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] <dir1> [...<dirN>]`
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 <source> [<source2>...<sourceN>] <destination>`
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] <file1|dir1> [...<fileN|dirN>]`
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.

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "pycryptomator",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.0",
    "maintainer_email": null,
    "keywords": "cryptomator, python, crypto, encryption, security, privacy, cryptography, vault",
    "author": null,
    "author_email": "maxpat78 <maxpat78@yahoo.it>",
    "download_url": "https://files.pythonhosted.org/packages/08/08/1299625d410bd19e798f35b373fae40dd5635eb195008c83a9aa37177ccb/pycryptomator-1.14.tar.gz",
    "platform": null,
    "description": "# pycryptomator\n\nA 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.\n\n```\nusage: pycryptomator  [-h] [--init] [--print-keys [{a85,b64,words}]] [--master-keys PRIMARY_KEY HMAC_KEY]\n                      [--password PASSWORD] [--change-password]\n                      vault_name\n\nAccess to a Cryptomator V8 vault\n\npositional arguments:\n  vault_name            Location of the existing Cryptomator V8 vault to open\n\noptions:\n  -h, --help            show this help message and exit\n  --init                Initialize a new vault in an empty directory\n  --print-keys [{a85,b64,words}]\n                        Print the raw master keys as a list of English words for Cryptomator (default), in ASCII85\n                        (a85) or BASE64 (b64) format\n  --master-keys PRIMARY_KEY HMAC_KEY\n                        Primary and HMAC master keys in ASCII85 or BASE64 format, or - - to read a words list from\n                        standard input\n  --password PASSWORD   Password to unlock master keys stored in config file\n  --change-password     Change the password required to open the vault\n```\n\nPassing a couple options, you can show you master keys or recover them in case\nconfiguration files are corrupted:\n\n`--print-keys` shows the decrypted primary and hmac master key in ASCII85\nor BASE64 form, or as a list of English words like Cryptomator itself, to\nannotate them in a safe place for recovering purposes.\n\n`--master-keys`  grants access to the vault even in case of lost configuration\nfiles `vault.cryptomator` and/or `masterkey.cryptomator`, provided the master\nkeys as ASCII85 or BASE64 strings; `- -` can be used to read the words list\nfrom standard input.\n\n\nAfter the `vault_name`, you can specify some useful operations like:\n\n```\ncd       change vault's current directory\nls       list unecrypted vault contents (with size and time)\nmkdir    create a new directory/tree in the vault\nmv       move or rename files and directories\nln       create a symbolic link\nrm       erase files or directories\ndecrypt  decrypt a file or directory from the vault's virtual filesystem into a given destination\nencrypt  encrypt a file or directory\nalias    show the real pathname linked to a virtual one\nbackup   backup the Directory IDs (required to decrypt names) in a ZIP file\n```\n\nIf no operation is specified, an interactive shell is launched on open vault. It can do transparent wildcards expansion (`*` and `?` only).\n\nFunctionality was tested in Windows 11 and Ubuntu 22.04 LTS Linux (under Windows WSL).\n\nIt's pure Python 3, with pycryptodome addon.\n\nMIT licensed.\nAbsolutely no warranty!\n\n\n# Internal commands\n\n`*` and `?` wildcards can be specified on command line to enable automatic shell expansion.\n\n\n`alias <pathname>`\nshow the real base64 (encrypted and obfuscated) pathname corresponding to the\nvault's pathname\n\n`backup <archive.zip>`\nmake in archive.zip a backup of all the directory id files dir.c9r\nencountered in the vault tree: they are required to reconstruct original file\nnames\n\n`cd <directory>`\nmake the specified vault's directory the current one in the pycryptomator\ninternal shell\n\n```\ndecrypt [-fmF] <virtual_pathname_source1...> <real_pathname_destination>\ndecrypt <virtual_pathname_source> -\n```\ndecrypt one or more files and/or directories to the specified destination in the\nreal file system.\n`-f` forces to overwrite existing files, `-m` moves (i.e. deletes) the source\nfiles after decryption, `-F` replicates the full command line path of source\nin destination (by default only filenames are copied).\nWith `-` as destination, a file is decrypted and printed to standard output.\n\n`encrypt [-fmF] <real_pathname_source1...> <virtual_pathname_destination>`\nencrypt one or more files and/or directories to the specified destination.\nIf multiple sources are specified, the destination directory will be created\nif not existent.\n`-f` forces to overwrite existing files, `-m` moves (i.e. deletes) the source\nfiles after encryption, `-F` replicates the full command line path of source\nin destination (by default only filenames are copied).\n\n`ln [-old] <target> <link>`\nmake a symbolic link to a target file or directory in the vault.\nIt does not check for target existence.\nAn absolute target should be avoided, since it prevents portability\n(i.e. to Windows).\nWhen targeting a directory with `-old`, its dir.c9r file is copied to enable\ncompatibility with old vault formats (i.e. with current Cryptomator for Android\nv. 1.10.3).\n\n`ls [-b] [-r] [-s NSDE-!] <virtual_path1> [...<virtual_pathN>]`\nlist files and directories with minimal informations like DOS DIR (type/size,\nwrite time, name, symbolic link target).\n`-b` prints bare names\n`-r` traverses specified directories recursively\n`-s` sorts results by one or more criteria: `N`ame, `S`ize, `D`ate, `E`xtension\n(a.k.a. file type), `-` sorts in reverse order and `!` puts directories first.\n\n`mkdir [-R] <dir1> [...<dirN>]`\nmake one or more directories or directory trees (i.e. intermediate directories\nget created) in the vault or in the real file system if `-R` is specified.\n\n`mv <source> [<source2>...<sourceN>] <destination>`\nrename or move files and directories. If more files or directories are specified,\ndestination must be an existing directory and objects are moved inside it;\nelse, if destination does not exist, it renames the file or directory.\n\n`rm [-f] <file1|dir1> [...<fileN|dirN>]`\nremove files and directories. Root directory is protected against accidental\ndeletion. If a directory is not empty, `-f` switch is required to force its\nremoval.\n",
    "bugtrack_url": null,
    "license": "MIT License  Copyright (c) 2024 maxpat78  Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:  The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ",
    "summary": "Access a Cryptomator V8 vault with pure Python",
    "version": "1.14",
    "project_urls": {
        "Homepage": "https://github.com/maxpat78/pycryptomator",
        "Source": "https://github.com/maxpat78/pycryptomator"
    },
    "split_keywords": [
        "cryptomator",
        " python",
        " crypto",
        " encryption",
        " security",
        " privacy",
        " cryptography",
        " vault"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "928bd8961638ef013a013bbec0644fc51e17496d742e921fd117ef7136f76f5c",
                "md5": "ebd02929562924f30332c35c26bb52f6",
                "sha256": "41027f9b69d869c4f1e7b0ac20990ed901d73193afcd812afe7b2462d75aa652"
            },
            "downloads": -1,
            "filename": "pycryptomator-1.14-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "ebd02929562924f30332c35c26bb52f6",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.0",
            "size": 39157,
            "upload_time": "2024-11-06T09:57:46",
            "upload_time_iso_8601": "2024-11-06T09:57:46.486258Z",
            "url": "https://files.pythonhosted.org/packages/92/8b/d8961638ef013a013bbec0644fc51e17496d742e921fd117ef7136f76f5c/pycryptomator-1.14-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "08081299625d410bd19e798f35b373fae40dd5635eb195008c83a9aa37177ccb",
                "md5": "82802c16c213f5eda94636a8297322be",
                "sha256": "b07bb61e7d4d43ae6d0e6d5180b3dbaccc302c3ee41f1f07b0cbd1759260919d"
            },
            "downloads": -1,
            "filename": "pycryptomator-1.14.tar.gz",
            "has_sig": false,
            "md5_digest": "82802c16c213f5eda94636a8297322be",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.0",
            "size": 40358,
            "upload_time": "2024-11-06T09:57:48",
            "upload_time_iso_8601": "2024-11-06T09:57:48.172514Z",
            "url": "https://files.pythonhosted.org/packages/08/08/1299625d410bd19e798f35b373fae40dd5635eb195008c83a9aa37177ccb/pycryptomator-1.14.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-11-06 09:57:48",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "maxpat78",
    "github_project": "pycryptomator",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "pycryptomator"
}
        
Elapsed time: 0.34957s