====================================================================================
ENCRYPTOR V6 - USER INSTRUCTIONS
====================================================================================
Original tool by StarcrestMC

SUPPORT & CONTACT:
- Email: admin@starcrestmc.net
- Discord: @starcrestmc
- Instagram: @starcrest_mc

------------------------------------------------------------------------------------
PRE-RUN CHECKLIST
------------------------------------------------------------------------------------

Before running the application, please make sure your project folder contains:

1. REQUIRED FOLDERS:
   - "Vault" (Contains "BLANK.json". Do NOT delete this template folder or file!)
   - "PGPKeys" (Used to store your keys and your friends' keys.)

2. REQUIRED FILES:
   - "aj.pkl", "av.pkl", "n.pkl", and "v.pkl" (Dictionary files for generation.
     The program will fail if these are missing.)
   - "config.json" (The hidden font binary mapping template.)

3. FIRST TIME SETUP:
   - Run "Requirements_Setup.py" first. This will automatically use pip to install 
     all required modules and download the necessary NLTK data behind the scenes.
     as well as setting up your pgp keys and deleting the DELETEME file

------------------------------------------------------------------------------------
FILE & FOLDER SUMMARY
------------------------------------------------------------------------------------

* main.py               - The primary app. Used to send and receive messages.
* Vault_Naming_Guide.txt - A guide on how you should name your vaults if you want them to be anonymous
* List-Gen.py           - Run this separately to generate new lists for friends.
* Requirements_Setup.py - Automated script to install dependencies and dictionaries.
* config.json           - Maps invisible characters to binary nibbles. Both you and 
                          your recipient MUST have the exact same config.json file!

* Troubleshooting.txt   - Refer to this file verbatim if you experience errors.
* Changelog & Dev Notes.txt - This contains everything that was changed or edited along with my personal thoughts for the project
* LICENSE-CC-BY-NC-ND   - The project license and list of authorized exceptions.
* Shortcuts (.html)     - Web shortcuts to Python downloads and offline documentation.
* Python-3.14 Docs.zip  - Offline zip archive of the official Python 3.14 manual.

--- SAFE TO DELETE ---
You can safely delete "robots.txt", "CODE_OF_CONDUCT.md", and "README.md".
They are only used to manage the public GitHub repository.

------------------------------------------------------------------------------------
STEP-BY-STEP SHARING INSTRUCTIONS (SETTING UP WITH A FRIEND)
------------------------------------------------------------------------------------

To communicate securely, you and your friend must swap a password list and PGP keys. 
Follow these steps in order:

PART 1: GENERATE & SHARE THE LIST:

1. Run "List-Gen.py". Follow the prompts to create a new list for your friend.
2. Type 'exit' when prompted to safely close the generator script.
3. Go into your "Vault" folder, locate the newly generated file, and send it to 
   your friend. 
4. Your friend must download this file, place it in their own "Vault" folder, and 
   rename the file to YOUR name.
   (Result: You have a file named after them; they have a file named after you.)

PART 2: SWAP PGP KEYS:

5. Run "main.py" on your computer once to automatically generate your personal PGP keys.
6. Open your "PGPKeys" folder to find "public.asc" and "private.asc".
   [CRITICAL WARNING: NEVER SHARE YOUR PRIVATE.ASC FILE WITH ANYONE!]
7. Make a copy of "public.asc" inside that folder, rename the copy to your name
   (e.g., "yourname.asc"), and send it to your friend.
8. Your friend must do the same with their public key and send it to you.
9. Place your friend's renamed public key file directly into your "PGPKeys" folder.

Setup is complete! You can now securely message each other.

------------------------------------------------------------------------------------
USAGE INSTRUCTIONS: SENDING & RECEIVING MESSAGES
------------------------------------------------------------------------------------

1. Launch "main.py".
2. Select your friend's active vault session from the menu.
3. Select your friend's public PGP key file when prompted.
4. CHOOSE AN ACTION:

TO SEND A MESSAGE:
   - Input your message text when prompted.
   - The app will automatically handle the session encryption and display your 
     scrambled text formatted inside a hidden font bounded by ">" and "<".
   - Copy everything starting AFTER the ">" up to BEFORE the "<". Send this
     copied text to your friend.

TO DECRYPT A RECEIVED MESSAGE:
   - Paste the exact text string your friend sent you into the prompt.
   - The program will automatically run the decryption routines for that 
     person's session and display the plaintext message on your screen.

------------------------------------------------------------------------------------
GLOSSARY
------------------------------------------------------------------------------------

* PGP (Pretty Good Privacy): A system that uses your public/private keypair to
  digitally sign and verify that messages haven't been tampered with.

* HTML (HyperText Markup Language): The code used to build websites. These files 
  can be viewed in any browser or edited in a text editor.

* JSON (JavaScript Object Notation): The structured text format used for your
  "Vault" password lists and configuration settings.

* PKL (Pickle): A specialized Python file format used to compress and rapidly 
  access word dictionaries ("pickle" module).

* Encryption: The process of scrambling information to make it completely 
  unreadable to anyone who does not possess the correct password or key.

* Nibble: A nibble is a 4-bit binary chunk (e.g., 1011). This app hides 
  your text by mapping each of the 16 possible binary nibbles to exactly ONE 
  invisible Unicode character assigned in your config.json. 
  
  The predefined characters for config.json are:
  \u206b, \u206a, \u202b, \u202a, \ufeff, \u180e, \u2069, \u2068, 
  \u2067, \u2066, \u200f, \u200e, \u2060, \u200d, \u200c, \u200b
