Skip to content

Latest commit

 

History

History
403 lines (273 loc) · 9.33 KB

FAQ.md

File metadata and controls

403 lines (273 loc) · 9.33 KB

Frequently Asked Questions (FAQ)


General Questions

What is DisStore?

DisStore is a free, open-source file storage system that encrypts your files and stores them on Discord servers using end-to-end encryption. You're the only one who can access your files.

Why use Discord as a backend?

Advantages:

  • Free tier - Unlimited message storage in servers
  • Reliable - Discord's infrastructure is enterprise-grade
  • Decentralized - Files stored across Discord's redundant servers
  • No third-party trust - You control encryption keys

Disadvantages:

  • Depends on Discord staying operational
  • May violate Discord Terms of Service
  • Not intended for production use
  • Performance limited by API rate limits

Is my data actually encrypted?

Yes, absolutely. All files are encrypted on your computer before being sent to Discord using AES-256-GCM (same encryption used by banks). Discord never sees unencrypted files.

Can DisStore access my data?

No. The author and contributors have no access to encryption keys or passwords. You're the only one who can decrypt your files.

Is DisStore open source?

Yes! Licensed under GPL-3.0-or-later. See LICENSE for details.


Setup & Installation

What do I need to get started?

  1. Python 3.10+
  2. A Discord account (free)
  3. A Discord server you own/control
  4. A Discord bot token
  5. ~30 minutes for setup

Is there a GUI?

Yes! Two interfaces:

  • CLI (Terminal) - keyboard-driven
  • GUI (Qt) - graphical interface with mouse support

Can I run DisStore in the cloud?

Technically yes, but not recommended:

  • Requires exposing credentials on server
  • Higher security risk
  • Discord API works better locally
  • Better to run on your personal machine

Do I need to pay anything?

Completely free:

  • Python (free, open source)
  • Discord bot (free)
  • DisStore (free, open source)
  • No premium features

Usage Questions

How do I upload a file?

  1. Login to DisStore (CLI or GUI)
  2. Select "Upload"
  3. Choose file from your computer
  4. Enter encryption password (remember this!)
  5. File encrypts and uploads to Discord
  6. Done! You'll get a file ID for downloading

Time estimate: 1-5 minutes depending on file size

How do I download a file?

  1. Login to DisStore
  2. Select "Download"
  3. Choose file from your stored list
  4. Enter the encryption password (same one used at upload)
  5. File downloads and decrypts
  6. Saved to downloaded/ folder

Can I share files with others?

Not in the current version. Files are encrypted to your account. Future versions may support multi-user sharing.

Workaround: Manually share unencrypted file with others through other means (email, cloud drive, etc.)

What if I forget my password?

Account password: Create new account with different username

File encryption password: File cannot be recovered. File will be permanently inaccessible.

Prevent this: Use a password manager like 1Password or Bitwarden

How much can I store?

Theoretically:

  • Discord limit: ~100 million messages per channel
  • At 1500 bytes/message: ~150 GB per channel
  • At 1GB file: ~150 files possible

Practical limit: 100-500 files recommended (Discord rate limits)

What's the maximum file size?

No hard limit, but:

  • Recommended: < 100 MB per file
  • Safe: < 1 GB per file
  • Possible: Up to 10+ GB (but very slow)

Upload time: 1MB file ≈ 2-5 seconds


Security Questions

Are files encrypted end-to-end?

Yes. Files encrypted on your computer, Discord never sees unencrypted data, decrypted only when you download.

Encryption chain:

Your Computer:
  plaintext → encrypt → send to Discord
Discord:
  [encrypted] (cannot read)
Your Computer (download):
  receive encrypted → decrypt → plaintext

What if Discord gets hacked?

Your files are still encrypted. Attacker would need:

  1. Your file ID
  2. Your encryption password
  3. Your account password

Even with all three, they still need your encryption key (derived from password using PBKDF2 with 200,000 iterations).

What if someone gets my Discord bot token?

Your stored files are still safe (encrypted with your master key). Attacker could:

  • Delete your files
  • Read your account metadata (usernames, hashes)
  • But NOT decrypt your file contents

Mitigation:

  • Regenerate bot token immediately
  • Change master key
  • Create new accounts

How strong is the encryption?

AES-256-GCM is:

  • ✅ Approved by NIST
  • ✅ Used by governments and banks
  • ✅ Unbroken since 2001
  • ✅ Considered quantum-resistant (so far)

Password strength matters more than algorithm strength. Weak password = weak security.

What's PBKDF2 and why 200k iterations?

PBKDF2 is Password-Based Key Derivation Function:

Why: Prevents dictionary attacks
How: Apply hash function 200,000 times
Result: Brute-forcing password takes ~hours instead of ~seconds

Without PBKDF2:
  Attacker: 1 billion guesses/sec → cracks in 2 min
  
With PBKDF2 (200k iter):
  Attacker: 10 guesses/sec → cracks in ~3 years

Technical Questions

What libraries does DisStore use?

Core:

  • discord.py - Discord API
  • cryptography - AES-256-GCM
  • pydantic - Data validation

UI:

  • rich - Terminal formatting
  • PySide6 - Graphical interface (Qt)

Utilities:

  • requests - HTTP
  • python-dotenv - Configuration

Where are my passwords stored?

Account passwords:

  • Hashed with PBKDF2 (not reversible)
  • Stored on Discord
  • Not stored locally

File encryption passwords:

  • Never stored
  • Must remember or write down securely

Session credentials:

  • Encrypted locally in .state/session.enc
  • Protected by machine lock

Can I use DisStore programmatically?

Yes! Import the Python modules:

from src.app import AppDis
from src.cfg import Cfg

cfg = Cfg()
app = AppDis(cfg)
auth = app.auth_svc()
stoc = app.stoc_svc()

# Use services...

See API Reference and Examples

Can I run multiple instances?

Locally: Not recommended (session conflicts)

Different machines:

  • Each can login with same account
  • But coordinating file uploads risky
  • Better to upload from one machine

Does DisStore work offline?

No, Discord API requires internet. Local-only operation is not supported.


Troubleshooting Questions

CLI won't start - "not a TTY"

CLI requires a real terminal. Try:

  • Use GUI instead: python gui/main.py
  • Run from native terminal (not IDE)
  • SSH into machine for remote access

Upload times out

Causes: Network issues, Discord rate limit, large file

Solutions:

# Reduce chunk size for unstable networks
DISSTORE_CHUNK_SIZE=500

# Try smaller file first
# Wait 60 seconds (Discord rate limit)
# Try uploading again

"Checksum verification failed" on download

Cause: File corrupted during upload/download

Solutions:

  1. Re-download (different attempt)
  2. Re-upload file (delete old version first)
  3. Verify original file is not corrupted
  4. Check internet stability

"Discord token is invalid"

Cause: Token incorrect, expired, or revoked

Solutions:

# 1. Go to Discord Developer Portal
# 2. Regenerate bot token
# 3. Copy immediately and paste in .env
# 4. Restart DisStore

Advanced Questions

Can I modify the chunk size?

Yes, in .env:

DISSTORE_CHUNK_SIZE=1800    # Larger (faster but more messages)
DISSTORE_CHUNK_SIZE=500     # Smaller (slower but fewer messages)

Tradeoff:

  • Larger = faster, but uses more Discord messages
  • Smaller = slower, but fewer Discord messages

Can I use different encryption passwords for different files?

Yes! Each file upload asks for encryption password independently.

Good practice:

Account Password: "MyMainPassword123!"
File 1 Password: "DocumentPassword456"
File 2 Password: "PhotoPassword789"

Can I change my master key?

Not recommended - renders all existing data inaccessible.

If you must:

  1. Download all files
  2. Change DISSTORE_MASTER_KEY in .env
  3. Create new accounts
  4. Re-upload files

How do I contribute code?

See Contributing Guide for:

  • Development setup
  • Code standards
  • Testing requirements
  • Pull request process

What's the roadmap?

See GitHub Issues for feature requests and planned improvements.

Current priorities:

  • Batch operations
  • File sharing
  • Better error messages
  • Performance optimization

Legal & Terms Questions

Is DisStore legal?

Yes, the code is legal. Using Discord for storage may violate their Terms of Service. Use at your own risk.

What's the license?

GPL-3.0-or-later. You can:

  • ✅ Use privately
  • ✅ Modify code
  • ✅ Redistribute (must include license)

You must:

  • ❌ Keep license with distributions
  • ❌ Don't hold author liable

Who maintains DisStore?

Created and maintained by xynnpg. Community contributions welcome.

Where can I report security issues?

Please report responsibly:

  1. Don't post publicly
  2. Email maintainer privately
  3. Allow time for patch before disclosure

More Help?


Last Updated: May 2026