Ciphra is a simple and educational web app built with Python (Flask) that helps users check if a file is safe and understand why verification matters.
It was designed for cybersecurity awareness, especially for people without a technical background.
Ciphra helps users:
- Verify if downloaded files are authentic and safe.
- Understand digital signatures and hashes in simple terms.
- Check if their email has appeared in a data breach.
- Use temporary emails safely for testing or sign-ups.
It combines real security tools with plain explanations to make everyday cybersecurity understandable.
- SHA-256 Hash Generator: Creates a unique fingerprint for every uploaded file.
- VirusTotal Check: Uses the file’s hash to check against global malware databases (API key required).
- Signature Verification (.sig/.asc): Verifies developer-signed files using GPG.
- Email Breach Check: Integrates Have I Been Pwned API (user-provided key) to show if an email was exposed.
- Temporary Email Generator: Creates throwaway inboxes using 1secmail’s public API.
- Local CSV Logs: Keeps simple, anonymized logs of checks for learning and tracking.
- Privacy-first: Uploaded files are automatically deleted after processing.
Most people download files without verifying where they come from.
Ciphra shows why these steps matter:
- A hash proves a file hasn’t changed.
- A signature proves who made it.
- A VirusTotal check shows if it’s known unsafe.
- A breach check warns about leaked data.
- A temporary email prevents spam and phishing.
It’s not just a scanner — it’s a learning tool to help users build safe digital habits.
git clone https://github.com/gaisma22/ciphra.git
cd ciphrapython3 -m venv venv
source venv/bin/activatepip install -r requirements.txt- Add your own API keys (never share these):
VT_API_KEY=your_virustotal_key_here
HIBP_API_KEY=your_hibp_key_here- Get your free VirusTotal key at virustotal.com
- Get your Have I Been Pwned key at haveibeenpwned.com
- Keep this file private. It’s already excluded in .gitignore
- Ciphra uses the GnuPG (GPG) tool to verify digital signatures.
- You must have gpg installed on your system.
| Operating System | Installation Command / Link | Test Command |
|---|---|---|
| 🐧 Linux | sudo apt install gnupg |
gpg --version |
| 🍎 macOS | brew install gnupg |
gpg --version |
| 🪟 Windows | Install Gpg4win | gpg --version |
If GPG isn’t installed, the app will show:
"GPG failed: command not found. Please install GnuPG before using signature verification.”
To verify a developer’s signature, import their public key:
gpg --import developer_pubkey.ascpython app.pyThen open:
http://127.0.0.1:5000- Upload any file you want to verify (max 200 MB).
- (Optional) Upload its .sig or .asc signature file.
- (Optional) Enter your email to check for breaches.
- Click Run Verification.
- The page will show: SHA-256 hash VirusTotal scan result Signature verification result Breach check summary
- Files are deleted automatically after scanning.
- Logs are saved locally in logs/activity.csv
- Files are never uploaded to external servers — only their hash is sent.
- All logs remain on your machine and use anonymized filenames.
- Sensitive folders (uploads, logs, .env, venv) are ignored in GitHub.
- No data is shared or stored online.
- VirusTotal free API has rate limits.
- HIBP API requires your own key.
- Signature verification depends on the public key you import.
- The app is for learning and awareness, not commercial scanning.
Vist:
http://127.0.0.1:5000/dashboardThe dashboard shows:
- Total files checked.
- Files flagged by VirusTotal.
- Verified signatures. Future versions will include graphs and filters.
- Visual Dashboard: Graphs and charts of scans and breaches.
- File Encryption: Basic encryption/decryption tools with awareness content.
- Cyber Awareness Feed: Real-time safety updates and global attack news.
- Offline Verification: Compare hashes without internet access.
- Report Exports: Download logs as CSV or JSON.
- Containerized Deployments: Run with Docker for quick setup.
- Automated Testing: Ensure hashing, GPG, and API checks work correctly.
- Never upload .env or API keys.
- Keep logs and uploads local.
- Always run in a virtual environment.
- Clean temporary files regularly.