💩 pooputil
Ever heard of malware?
One of the first things it usually does is scan your drive for common file extensions.
.docx .xlsx .pptx .pdf .jpg .png .zip .zip .txtYour files are predictable.
pooputilchanges that.
pooputil is a small open-source file encryption utility that compresses your files into encrypted .poop containers.
Instead of just hiding files somewhere, pooputil compresses them, encrypts them using AES-256-GCM, derives keys using Scrypt, and can optionally overwrite the original file after encryption.
Whether youre storing backups, documents or just wanna archive stuff safely, pooputil gives you a Python API, CLI and a simple desktop GUI.
v0.0.2
Fixed the broken imports from v0.0.1. Everything should work properly now.
Licensed under GPLv3. Fork it, improve it or build your own project on top of it.
Features
- AES-256-GCM authenticated encryption
- Scrypt password derivation
- Compress before encrypting
- Custom
.poopcontainer format - Python API
- CLI
- Desktop GUI
- Optional overwrite-based deletion
- Backend separated from GUI
Why .poop?
A lot of malware targets common file extensions.
.docx
.xlsx
.pdf
.jpg
.png
.zip
Those are easy to recognize.
pooputil stores encrypted data inside .poop containers instead.
Will this stop malware?
Probably not.
If malware wants to encrypt every file on your disk itll happily encrypt .poop too.
The idea here isnt to beat malware, its to make your actual file contents unreadable without the password while also giving you a funny file extension.
Fun Fact
The .poop file extension was inspired by No Text To Speech.
If you know, you know.
Architecture
pooputil is split into modules kinda like Arduino.
GUI
│
▼
pooputil.core
▲
│
CLI
│
▼
Python API
The GUI is just a frontend.
Most of the work happens inside pooputil.core, so you can import it directly into your own scripts without dragging GUI stuff along.
Crypto
| Component | Algorithm |
|---|---|
| Encryption | AES-256-GCM |
| KDF | Scrypt |
| Salt | 16 bytes |
| Nonce | 12 bytes |
| Authentication | GCM Tag |
I use the cryptography library instead of trying to implement crypto myself.
Secure deletion
After encryption pooputil can overwrite the original file before deleting it
Keep in mind secure deletion depends on your filesystem and storage device SSDs especially don't always behave the same because of wear leveling
Installation
pip install pooputil
Usage
GUI
pooputil-gui
or
python -m pooputil
CLI
Encrypt
pooputil-cli --encrypt "/path/to/data" --password "SuperSecretKey99"
Decrypt
pooputil-cli --decrypt "/path/to/data.poop" --password "SuperSecretKey99"
Python API
from pooputil import core
password = b"SuperSecretPassword"
target = "./important.docx"
if core.is_safe_path(target):
core.encrypt_target(target, password)
else:
print("Unsafe path.")
Decrypt
from pooputil import core
restored = core.decrypt_target(
"./important.docx.poop",
b"SuperSecretPassword"
)
print(restored)
Disclaimer
This project is meant for legitimate encryption and backup purposes.
Also...
Dont forget your password.
I cant magically decrypt your .poop if you lose it.
You cant unflush a poop if you flushed it.
License
GPLv3.
Release files for pooputil 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| pooputil-0.1.0.tar.gz | 24.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pooputil-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 45.8 kB
Release files / pooputil-0.1.0.tar.gz
| Download URL | pooputil-0.1.0.tar.gz |
|---|---|
| Size | 24.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
dcde46b217bde0ed8922e0cf3b12715f9b73105850718212401f30b5f2fbe2db
|
|
BLAKE2b-256 checksum How to use checksums |
7fc50a2f1be207b198b20449561f4383c4e6beed0731b6a5adf8f5705f1ba26d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 2, 2026.
Transparency logRelease files / pooputil-0.1.0-py3-none-any.whl
| Download URL | pooputil-0.1.0-py3-none-any.whl |
|---|---|
| Size | 21.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
faf53e191cdfa47e003c12c3a29c1297c81b944e50706b62348027c2a3e8b3fb
|
|
BLAKE2b-256 checksum How to use checksums |
961b3e2d9bf0c25a8ea4a9627e7e8460f7597277ba70580f3edd8e12d37d88b3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 2, 2026.
Transparency log