Skip to main content

Glyph-based file obfuscation with intentional access control

Project description

Glyphlock

This module contains a simple implementation of glyph-based file obfuscation with optional access control.


How to install glyphlock

Glyphlock is distributed by PyPI. You will need to install pipx since PEP 668 doesn't allow for externally managed systems to be installed with pip. This isn't entirely enforced depending on how you installed Python or your operating system. The guaranteed method on all systems is to use pipx

To install pipx you can do

brew install pipx
pipx ensurepath

After running pipx ensurepath, reload your terminal or open a new instance. For example if you use a zsh terminal run

exec zsh

Now you can install glyphlock

pipx install glyphlock

To verify it is installed you can do

glyphlock --help

or

which glyphlock

NOTE Glyphlock uses Unicode Egiption Hieroglyphs so for now a font where those unicode characters are included is needed


What glyphlock does

Glyphlock converts a file into a deterministic representation made up of Unicode Egyptian hieroglyphs.

The original file:

  • is removed
  • is replaced with a .glyph file
  • is no longer readable as plain text

The transformation is fully reversible and does not modify the original data.


What glyphlock is for

Glyphlock is meant to prevent accidental or casual access to files.

It is designed to be used when:

  • files should not be readable at a glance
  • sensitive data should not be opened unintentionally
  • projects need to be parked safely on disk
  • access should require intent

This tool is not encryption and is not designed to protect against determined offline attacks.


Access control

Glyphlock supports optional access gating.

When enabled:

  • a password is required to decode files
  • passwords are verified using a key derivation function
  • passwords are never stored directly

An optional recovery key can also be generated.

The recovery key:

  • is shown once
  • is stored as a hash
  • can be used if the password is lost

If both the password and recovery key are lost, the file cannot be recovered.

Currently Glyphlock allows for a user to create an empty password. If the user does so they must press 'Enter' when prompted for the password.


File behavior

When encoding:

  • the original file is replaced with filename.glyph
  • the original file extension is stored in the header
  • file permissions are preserved
  • the file payload is checksummed

When decoding:

  • the original file is restored exactly
  • permissions are restored
  • corrupted or modified files fail to decode

All file operations use atomic replacement to minimize the risk of data loss.


Directory handling

When operating on directories, glyphlock walks the directory tree recursively.

The following are skipped automatically:

  • symbolic links
  • hidden directories
  • version control metadata (.git, .hg, .svn)
  • virtual environments (.venv, env)
  • Python cache directories (__pycache__)
  • editor configuration directories

Only user-authored files are processed by default.


How to use this module

Glyphlock is used as a command-line tool. Only the encode and encode-directory commands accept access flags. All commands accept --plan flags.

Encode a single file:

glyphlock encode file.txt

Decode a file (decode commands do not accept access flags):

glyphlock decode file.glyph

Encode a directory with a password and recovery key:

glyphlock encode-dir project --lock --recovery

Decode a directory (decode commands do not accept access flags):

glyphlock decode-dir project

Access flags

The following flags are supported when encoding files or directories:

  • --lock
    Require a password to decode the file(s).

  • --recovery
    Generate a recovery key that can be used if the password is lost.

When operating on directories:

  • the password is requested once per command
  • the recovery key (if enabled) is generated once per command
  • the same access credentials apply to all files in the operation

When operating on a single file:

  • the same flags apply, but only affect that file

Planning and dry runs

Glyphlock supports a --plan flag for all commands.

When --plan is used:

  • no files are modified
  • no passwords are requested
  • no recovery keys are generated
  • the operation is printed instead of executed

This allows you to preview exactly what glyphlock would do.

Examples:

glyphlock encode file.txt --plan
glyphlock encode-dir project --plan
glyphlock decode-dir project --plan

Security note

Glyphlock is not encryption.

It is designed to prevent casual or accidental access, not to withstand determined cryptographic attacks.

If you require strong confidentiality against an active adversary, use established encryption tools such as age, gpg, or full-disk encryption.

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

glyphlock-0.1.5.tar.gz (10.6 kB view details)

Uploaded Source

Built Distribution

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

glyphlock-0.1.5-py3-none-any.whl (10.9 kB view details)

Uploaded Python 3

File details

Details for the file glyphlock-0.1.5.tar.gz.

File metadata

  • Download URL: glyphlock-0.1.5.tar.gz
  • Upload date:
  • Size: 10.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.12

File hashes

Hashes for glyphlock-0.1.5.tar.gz
Algorithm Hash digest
SHA256 c41fa70f72c6f53abdfa453f8f332b4e6db96fbe1039f70a100216391ba43313
MD5 af252dc93dc7e4d0420287e55475e2b7
BLAKE2b-256 7cd208d919e9be7478b545c85160a40019fbe424638c1d59d43b969be086d7df

See more details on using hashes here.

File details

Details for the file glyphlock-0.1.5-py3-none-any.whl.

File metadata

  • Download URL: glyphlock-0.1.5-py3-none-any.whl
  • Upload date:
  • Size: 10.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.12

File hashes

Hashes for glyphlock-0.1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 523e2e143936a5e07f1a9a110ff5bd10141ccc89e841a60e04d999cf8addc7d3
MD5 2f56d45bf9cca8feb8df2a12af3bde3d
BLAKE2b-256 62678eb4fbff5eb40508092711c80000f7185e5a1bffc1b8e0c9391e26683b39

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