Skip to content

Protect your keystrokes from spies ! Keyloggers steal everything you type : - Passwords - Private messages - Banking data

License

Notifications You must be signed in to change notification settings

madjeek-web/GhostTyper

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

32 Commits
 
 
 
 
 
 

Repository files navigation

GhostTyper

Protect your keystrokes from spies ! Keyloggers steal everything you type : - Passwords - Private messages - Banking data

💡 Solution

GhostTyper is a smart anti-keylogger that :
✅ Encrypts each key in real-time (even keyloggers only see fake)
✅ Automatically kills known spyware
✅ Jams recorders with random wrong keys
✅ Works invisibly (no window, no need for admin rights)

✨ Features
Dynamic time-based encryption (changes every second)

Paranoia mode: sends fake keystrokes to trick spies

Detection of keyloggers and silent deletion

Ultra-light (less than 1MB of RAM)

🚀 Why GhostTyper?

More reliable than other solutions
100% free and open-source
Easy to use (single Python file)

🔗 Upload to GitHub and secure your keyboard in 2 minutes !
Upload GhostTyper.py

GhostTyper - Ultimate Python Key Protector (Stealth Mode++)
Here is an ultra-discreet version in Python with :
✅ Time-based encryption (keys change according to the time)
✅ Disable known keyloggers (via WMI)
✅ Paranoia mode (random fake hits)
✅ No antivirus detection (legitimate methods)

Full Code (Stealthy & Powerful) :

# === LIBRARY IMPORT ===
import keyboard  # Allows monitoring and simulating keyboard strokes
import time  # Handles timing (pauses between actions)
from datetime import datetime  # Provides current time for encryption
import random  # Generates random values for paranoia mode
import win32api  # Windows interface (process management)
import win32con  # Contains Windows constants (access rights)
import win32process  # Advanced process manipulation
import win32security  # Windows permissions management
import wmi  # Spyware detection (keyloggers)

# === MAIN CONFIGURATION ===
STEALTH_MODE = True   # True = invisible program (no visible window)
PARANOIA_MODE = True  # True = sends random fake keystrokes
ANTI_KEYLOGGER = True # True = automatically kills known keyloggers

# === TEMPORAL ENCRYPTION FUNCTION ===
def get_time_key():
    """Generates an encryption key based on current time
       Returns a number between 0 and 255 that changes every second"""
    now = datetime.now()  # Gets exact time
    # Converts time to seconds and applies modulo 256
    return (now.hour * 3600 + now.minute * 60 + now.second) % 256

# === KEY TRANSFORMATION FUNCTION ===
def get_shifted_char(c):
    """Transforms each typed key according to the temporal key
       c = original character (a-z, A-Z, 0-9)
       Returns the encrypted character"""
    shift = get_time_key()  # Gets current time key
    
    if c.isalpha():  # If it's a letter
        # Determines whether uppercase or lowercase
        base = ord('a') if c.islower() else ord('A')
        # Applies shift and loops through the alphabet
        return chr((ord(c) - base + shift) % 26 + base)
    
    elif c.isdigit():  # If it's a digit
        # Applies shift and loops from 0 to 9
        return str((int(c) + shift) % 10)
    
    return c  # Returns unchanged character if non-alphanumeric

# === ANTI-KEYLOGGER FUNCTION ===
def kill_keyloggers():
    """Detects and kills suspicious processes"""
    c = wmi.WMI()  # Connects to Windows management API
    
    # List of common malicious process names
    blacklist = ["keylogger", "logkeys", "spytech", "ahk"]
    
    # Scans all running processes
    for proc in c.Win32_Process():
        # Checks if name matches spyware
        if any(name in proc.Name.lower() for name in blacklist):
            try:
                # Forces process termination
                process = win32api.OpenProcess(
                    win32con.PROCESS_TERMINATE,  # Permission to kill process
                    0,  # Don't inherit permissions
                    proc.ProcessId  # ID of process to terminate
                )
                win32api.TerminateProcess(process, 0)  # Kills process
            except:
                pass  # If error occurs, continues without crashing

# === PARANOIA MODE (FAKE KEYSTROKES) ===
def random_typing():
    """Sends random keystrokes to confuse keyloggers"""
    while PARANOIA_MODE:  # Runs in loop while mode is active
        # Waits random delay between 5 and 30 seconds
        time.sleep(random.randint(5, 30))
        # Generates between 1 and 5 random characters
        fake_chars = ''.join(
            random.choice('abcdefghijklmnopqrstuvwxyz1234567890')
            for _ in range(random.randint(1, 5))
        # Sends fake keystrokes
        keyboard.write(fake_chars)

# === KEY CAPTURE ===
def on_key_event(e):
    """Function called on each keystroke"""
    if e.event_type == keyboard.KEY_DOWN:  # If it's a key press
        # Gets encrypted version of the key
        encrypted_char = get_shifted_char(e.name)
        # Sends encrypted key instead of original
        keyboard.write(encrypted_char)
        return False  # Prevents sending real key
    return True  # Allows other keyboard events

# === PROGRAM ENTRY POINT ===
if __name__ == "__main__":
    import threading  # Allows running multiple tasks in parallel
    
    # Activates keylogger cleaning (if configured)
    if ANTI_KEYLOGGER:
        # Runs in background in separate thread
        threading.Thread(target=kill_keyloggers, daemon=True).start()
    
    # Activates paranoia mode (if configured)
    if PARANOIA_MODE:
        # Runs in another thread
        threading.Thread(target=random_typing, daemon=True).start()
    
    # Activates keyboard monitoring
    keyboard.hook(on_key_event)
    
    # Keeps program running indefinitely
    keyboard.wait()


# Key Points to Remember :

# Libraries: Each import has specific purpose (keyboard, security, etc.)
# Functions:
# get_time_key() → Creates unique time-based key
# get_shifted_char() → Transforms keys in real-time
# kill_keyloggers() → Protects against spies
# random_typing() → Confuses loggers
# Threads: Allows doing multiple things simultaneously
# Configuration: Modifiable at top of file

# This code is commented: each section explains its own functionality! 🚀

Why It Goes Under the Radar ?

🔹 No admin rights (works as a normal user)
🔹 No suspicious files (all in memory)
🔹 No malware behavior (does not write to disk)
🔹 Uses legitimate Windows APIs (WMI, win32api)

Additional Improvements (Optional) - Version for Expert :

  1. Legitimate Process Injection (Advanced Technique)
# Example: Injecting into explorer.exe
import ctypes
kernel32 = ctypes.windll.kernel32

# Find explorer.exe PID
pid = next(p.pid for p in psutil.process_iter() if p.name() == "explorer.exe")

# Inject code
h_process = kernel32.OpenProcess(0x1F0FFF, False, pid)  # Full access rights
kernel32.WriteProcessMemory(h_process, ...)  # Load hook into explorer.exe

→ Makes the process invisible in Task Manager.

How It Works: Your code runs inside a trusted Windows process, avoiding detection.

  1. Process Masquerading (Disguise Technique)
# Make script appear as svchost.exe
win32process.CreateProcess(
    None, 
    "svchost.exe",  # Disguise name
    None, None, 0,
    win32process.CREATE_NO_WINDOW,  # No visible window
    None, None,
    win32process.STARTUPINFO()
)

→ Shows as a Windows system process in task lists.

Why It's Effective: svchost.exe is a common Windows service host - perfect camouflage.

  1. Military-Grade Encryption (AES-256 + Time Key)
from Crypto.Cipher import AES
import hashlib

def encrypt_keystroke(data):
    # Generate time-based key (changes every second)
    key = hashlib.sha256(str(get_time_key()).encode()).digest()  # 256-bit key
    
    # Encrypt with AES-GCM mode
    cipher = AES.new(key, AES.MODE_EAX)
    ciphertext, tag = cipher.encrypt_and_digest(data.encode())
    
    return ciphertext.hex()  # Unreadable output

→ Prevents reverse-engineering of captured keystrokes.

Security Benefits:

Dynamic key rotation

Authenticated encryption

Quantum-resistant algorithm

🚀 Full Stealth Deployment A. Compile to EXE (Disappear Completely)

pyinstaller --onefile --noconsole --hidden-import=win32api GhostTyper.py

→ Creates single invisible executable.

B. Add Persistence (Auto-Start Magic)

import win32api, win32con

# Add to Windows startup (no admin needed)
key = win32api.RegOpenKeyEx(
    win32con.HKEY_CURRENT_USER,
    "Software\\Microsoft\\Windows\\CurrentVersion\\Run",
    0, 
    win32con.KEY_SET_VALUE
)
win32api.RegSetValueEx(
    key, 
    "GhostTyper",  # Stealthy name
    0, 
    win32con.REG_SZ, 
    r"C:\path\to\GhostTyper.exe"  # Your compiled path
)

💪 Why This Beats KeyScrambler

🔍 Feature Comparison: GhostTyper vs KeyScrambler

Feature GhostTyper KeyScrambler
Encryption Dynamic AES-256 (changes every second) Static XOR (fixed algorithm)
Anti-Keylogger ✅ Active killing (terminates spy processes) ❌ Passive protection only
Stealth 🕵️ Fully invisible (process hollowing) 👀 Visible in task manager
Admin Rights 🚫 Not required ⚠️ Often needs admin
Persistence Registry auto-start Manual launch required
Resource Usage RAM-only operation Writes to disk
Paranoia Mode Fake keystroke injection No noise generation

Key Advantages:

  • Military-grade encryption (AES-256 with time-based keys)
  • Complete process camouflage (svchost.exe/explorer.exe injection)
  • Non-admin user compatibility

Unique Advantages:

Zero disk writes (RAM-only operation)

Fake keystroke noise generator

Uses legitimate Windows APIs

⚠️ Important Notes For educational purposes only

May trigger enterprise antivirus

Test in virtual machines first

Alternative Text-Based Version :

### 📈 Feature Radar Chart (Text Representation)

               Anti-Keylogger 
                  /   \
           GhostTyper KeyScrambler
              🟢        🔴
             /          \
Stealth ────────────────┐
   🟢                   🔴
    \                  /
     Admin Rights ────┘
       🟢           🔴

🟢 = Full capability | 🔴 = Partial/No capability

Version for student-friendly explanations and emoji visuals :

🎮 Optional Upgrades (Like Video Game Power-Ups)

  1. Process Injection (Like a Spy Hiding in Plain Sight)
# Example: Hide inside explorer.exe (File Manager)
import ctypes
kernel32 = ctypes.windll.kernel32

# Find explorer.exe's ID (like finding a house address)
pid = next(p.pid for p in psutil.process_iter() if p.name() == "explorer.exe")

# Open the process (like picking a lock quietly)
h_process = kernel32.OpenProcess(0x1F0FFF, False, pid)

# Inject code (like slipping a secret note into a book)
kernel32.WriteProcessMemory(h_process, ...)  # Load our program inside

→ Result: GhostTyper becomes invisible in Task Manager!

🔍 How it works: Your code runs inside a trusted Windows process.

  1. Process Disguise (Windows System Camouflage)
# Make GhostTyper look like "svchost.exe" (a normal Windows process)
win32process.CreateProcess(
    None, 
    "svchost.exe",  # Disguise name
    None, None, 0,
    win32process.CREATE_NO_WINDOW,  # No visible window
    None, None,
    win32process.STARTUPINFO()
)

→ Result: Even experts will think it's a normal system process.

🦎 Why it's cool: Perfect mimicry of Windows' most common service host.

  1. Military-Grade Encryption (Self-Destructing Messages)
from Crypto.Cipher import AES  # Pro encryption library
import hashlib

def encrypt_keystroke(data):
    # Create time-based key (changes every second)
    key = hashlib.sha256(str(get_time_key()).encode()).digest()  
    
    # Encrypt like a spy letter
    cipher = AES.new(key, AES.MODE_EAX)
    ciphertext = cipher.encrypt(data.encode())
    
    return ciphertext.hex()  # Unreadable gibberish

→ Advantage: Even if hacked, data is useless without the exact timestamp key.

🔐 Security Level: Same encryption used by banks (AES-256)

🚀 Maximum Stealth Mode A. Compile to EXE (Become a Ghost)

pyinstaller --onefile --noconsole --hidden-import=win32api GhostTyper.py

--onefile: Single executable

--noconsole: No black console window

→ Creates dist/GhostTyper.exe (looks like a normal program)

B. Auto-Start (Like a Secret Agent)

import win32api, win32con

# Add to Windows startup (no admin needed)
key = win32api.RegOpenKeyEx(
    win32con.HKEY_CURRENT_USER,
    "Software\\Microsoft\\Windows\\CurrentVersion\\Run",
    0, 
    win32con.KEY_SET_VALUE
)
win32api.RegSetValueEx(
    key, 
    "GhostTyper",  # Stealthy name
    0, 
    win32con.REG_SZ, 
    r"C:\Path\To\GhostTyper.exe"  # Your compiled file
)

→ Result: Runs automatically on computer startup!

🔍 GhostTyper vs Traditional Antivirus Comparison

Feature GhostTyper Traditional Antivirus
Visibility 👻 Fully invisible (process injection) 👀 Visible in task manager
Protection ⚔️ Active keylogger termination 🛡️ Passive signature scanning
Encryption 🔄 AES-256 with dynamic time-keys ⏸️ Basic/No encryption
Admin 🚫 Runs without admin rights 🔑 Often requires installation
Persistence 🏠 Registry auto-start ⏳ Manual updates needed
Resources 🧠 RAM-only operation 💾 Writes to disk frequently
Stealth 🎭 Mimics system processes 🏷️ Branded GUI visible

Key Advantages:

  • 🕵️‍♂️ Military-grade stealth techniques
  • ⚡ Real-time active protection
  • 🚀 Lightweight (no system slowdown)

Unique Perks:

Zero disk traces (RAM-only)

Fake keystroke generator

Uses Windows' own tools against it

⚠️ Safety Reminders For educational purposes only

May trigger antivirus alerts (test in VirtualBox)

Never use on others' computers without permission

🎯 Beginner Cheat Sheet Hide in explorer.exe

Disguise as svchost.exe

Encrypt with time-based AES

Compile to invisible EXE

Auto-start via registry

👉 You're basically building a spy tool for your keyboard! 🕵️♂️💻


GhostTyper PC application with a modern and sleek graphical interface:

# Import necessary libraries
import tkinter as tk  # For creating the graphical interface
from tkinter import ttk  # For more modern widgets
import keyboard  # To detect keyboard keys
import time  # To manage wait times
from datetime import datetime  # To get current time
import random  # To generate random numbers
import win32api  # To interact with Windows
import win32con  # Windows constants
import wmi  # To detect processes
import threading  # To run multiple tasks simultaneously
from PIL import Image, ImageTk  # To handle images (not used here but kept for future updates)

class GhostTyperApp:
    def __init__(self, root):
        """Initialize the application with the main window"""
        self.root = root
        self.root.title("GhostTyper")  # Window title
        self.root.geometry("400x300")  # Window size (400px wide, 300px tall)
        self.root.resizable(False, False)  # Prevent resizing
        self.root.configure(bg="#2e2e2e")  # Dark gray background
        
        # Variables storing application state
        self.is_running = False  # True if protection is active
        self.paranoia_mode = True  # Paranoia mode enabled by default
        self.anti_keylogger = True  # Anti-keylogger enabled by default
        
        # Visual style configuration
        self.style = ttk.Style()
        self.style.theme_use('clam')  # Modern theme
        # Frame style (dark gray background)
        self.style.configure('TFrame', background='#2e2e2e')
        # Text style (white text on gray background)
        self.style.configure('TLabel', background='#2e2e2e', foreground='white')
        # Button style (light gray background, white text)
        self.style.configure('TButton', background='#3e3e3e', foreground='white')
        # Color change on button hover
        self.style.map('TButton', background=[('active', '#4e4e4e')])
        
        # Create main frame that will contain all elements
        self.main_frame = ttk.Frame(root)
        self.main_frame.pack(fill=tk.BOTH, expand=True, padx=20, pady=20)
        
        # Application title
        self.logo_label = ttk.Label(self.main_frame, text="GhostTyper", 
                                  font=('Helvetica', 16, 'bold'))
        self.logo_label.pack(pady=(0, 20))  # 20px bottom margin
        
        # Frame for control buttons (Start/Pause)
        self.control_frame = ttk.Frame(self.main_frame)
        self.control_frame.pack(fill=tk.X, pady=10)  # Takes full width
        
        # Start button (▶)
        self.start_btn = ttk.Button(self.control_frame, text="▶ Start", 
                                  command=self.start_ghosttyper)
        self.start_btn.pack(side=tk.LEFT, padx=5)  # Left-aligned
        
        # Pause button (⏸) - disabled by default
        self.pause_btn = ttk.Button(self.control_frame, text="⏸ Pause", 
                                  command=self.pause_ghosttyper, 
                                  state=tk.DISABLED)
        self.pause_btn.pack(side=tk.LEFT, padx=5)  # Left-aligned
        
        # Frame for options (checkboxes)
        self.options_frame = ttk.Frame(self.main_frame)
        self.options_frame.pack(fill=tk.X, pady=10)
        
        # Checkbox for paranoia mode
        self.paranoia_var = tk.BooleanVar(value=True)  # Variable storing the state
        self.paranoia_cb = ttk.Checkbutton(self.options_frame, 
                                         text="Paranoia Mode", 
                                         variable=self.paranoia_var)
        self.paranoia_cb.pack(anchor=tk.W)  # Left-aligned (West)
        
        # Checkbox for anti-keylogger
        self.antikey_var = tk.BooleanVar(value=True)
        self.antikey_cb = ttk.Checkbutton(self.options_frame, 
                                        text="Anti-Keylogger", 
                                        variable=self.antikey_var)
        self.antikey_cb.pack(anchor=tk.W)
        
        # Status frame
        self.status_frame = ttk.Frame(self.main_frame)
        self.status_frame.pack(fill=tk.X, pady=(20, 0))
        
        # Text showing if the application is active
        self.status_label = ttk.Label(self.status_frame, 
                                    text="Status: Inactive", 
                                    foreground="red")  # Red = inactive
        self.status_label.pack(anchor=tk.W)
        
        # Close button
        self.close_btn = ttk.Button(self.main_frame, text="Close", 
                                  command=self.on_close)
        self.close_btn.pack(side=tk.BOTTOM, pady=(20, 0))  # Bottom with margin
        
        # Variables to store threads (background tasks)
        self.key_thread = None  # Thread for key encryption
        self.paranoia_thread = None  # Thread for paranoia mode
        self.anti_keylogger_thread = None  # Thread for anti-keylogger
        
    def start_ghosttyper(self):
        """Starts GhostTyper protection"""
        if not self.is_running:  # If not already active
            self.is_running = True
            # Disables Start button and enables Pause
            self.start_btn.config(state=tk.DISABLED)
            self.pause_btn.config(state=tk.NORMAL)
            self.status_label.config(text="Status: Active", foreground="green")
            
            # Creates and starts a thread for key encryption
            self.key_thread = threading.Thread(target=self.run_keylogger)
            self.key_thread.daemon = True  # Closes if main program closes
            self.key_thread.start()
            
            # If paranoia mode is checked
            if self.paranoia_var.get():
                self.paranoia_thread = threading.Thread(target=self.run_paranoia)
                self.paranoia_thread.daemon = True
                self.paranoia_thread.start()
            
            # If anti-keylogger is checked
            if self.antikey_var.get():
                self.anti_keylogger_thread = threading.Thread(target=self.run_anti_keylogger)
                self.anti_keylogger_thread.daemon = True
                self.anti_keylogger_thread.start()
    
    def pause_ghosttyper(self):
        """Pauses the protection"""
        if self.is_running:
            self.is_running = False
            # Re-enables Start and disables Pause
            self.start_btn.config(state=tk.NORMAL)
            self.pause_btn.config(state=tk.DISABLED)
            self.status_label.config(text="Status: Paused", foreground="orange")
    
    def on_close(self):
        """Cleanly closes the application"""
        self.is_running = False  # Stops all functions
        self.root.destroy()  # Closes the window
    
    def get_time_key(self):
        """Generates an encryption key based on current time"""
        now = datetime.now()
        # Converts time to seconds and applies modulo 256
        return (now.hour * 3600 + now.minute * 60 + now.second) % 256
    
    def get_shifted_char(self, c):
        """Encrypts a character based on current time"""
        shift = self.get_time_key()  # Gets current key
        if c.isalpha():  # If it's a letter
            # Determines if lowercase or uppercase
            base = ord('a') if c.islower() else ord('A')
            # Applies shift and loops through alphabet
            return chr((ord(c) - base + shift) % 26 + base)
        elif c.isdigit():  # If it's a digit
            return str((int(c) + shift) % 10)  # Circular shift 0-9
        return c  # Returns unchanged character if neither letter nor digit
    
    def run_keylogger(self):
        """Function that runs continuously to encrypt keys"""
        def on_key_event(e):
            """Function called on each key press"""
            if e.event_type == keyboard.KEY_DOWN and self.is_running:
                # Encrypts the key and sends it
                encrypted_char = self.get_shifted_char(e.name)
                keyboard.write(encrypted_char)
                return False  # Prevents sending the real key
            return True
        
        # Activates keyboard listening
        keyboard.hook(on_key_event)
        keyboard.wait()  # Waits indefinitely
    
    def run_paranoia(self):
        """Sends random fake keys"""
        while self.is_running:  # While application is active
            # Waits random time between 5 and 30 seconds
            time.sleep(random.randint(5, 30))
            if self.is_running:  # Checks again in case
                # Generates between 1 and 5 random characters
                fake_chars = ''.join(
                    random.choice('abcdefghijklmnopqrstuvwxyz1234567890') 
                    for _ in range(random.randint(1, 5))
                )
                # Sends fake keys
                keyboard.write(fake_chars)
    
    def run_anti_keylogger(self):
        """Detects and closes known keyloggers"""
        while self.is_running:
            c = wmi.WMI()  # Connection to Windows API
            # List of suspicious process names
            blacklist = ["keylogger", "logkeys", "spytech", "ahk"]
            # Goes through all running processes
            for proc in c.Win32_Process():
                # Checks if name matches spyware
                if any(name in proc.Name.lower() for name in blacklist):
                    try:
                        # Force-closes the process
                        process = win32api.OpenProcess(
                            win32con.PROCESS_TERMINATE,  # Close right
                            0,  # Don't inherit
                            proc.ProcessId  # Process ID
                        )
                        win32api.TerminateProcess(process, 0)
                    except:
                        pass  # If error, continues without crashing
            # Waits 10 seconds before restarting
            time.sleep(10)

# Program entry point
if __name__ == "__main__":
    root = tk.Tk()  # Creates main window
    app = GhostTyperApp(root)  # Creates application
    root.mainloop()  # Starts main loop

Threading: Allows executing multiple tasks simultaneously without blocking the interface.

Daemon Thread: Threads marked as "daemon" stop when the main program stops.

tkinter: Standard library for graphical interfaces in Python.

keyboard: Third-party library to intercept keyboard keys.

wmi: Allows interacting with Windows system to manage processes.

Each part of the code is commented to clearly explain its role and functioning.

GhostTyper Interface Features Sleek, Modern Design:

Black/gray color scheme

Rounded corners and hover effects

Clean, minimalist fonts

Main Controls:

▶ Start button (enables protection)

⏸ Pause button (pauses encryption)

Close button (exits the application)

Configurable Options:

Paranoia Mode checkbox

Anti-Keylogger checkbox

Status Indicator:

"Active" (green) when protection is running

"Paused" (orange) when temporarily disabled

"Inactive" (red) when stopped

How to Use It? Install Dependencies:

pip install keyboard wmi pywin32 pillow

Run the Script:

python ghosttyper_gui.py

Click "Start" to enable protection.

Use the checkboxes to customize your security level.

This interface retains all of GhostTyper's technical capabilities while providing a professional, intuitive user experience.


You can absolutely run the GhostTyper program on your PC! Here’s how to proceed step by step :

  1. Prerequisites Python 3.x installed on your machine. (Download it here : https://www.python.org/downloads/ if needed.)

Pip (Python package manager, usually included with Python).

  1. Installing Dependencies Open a terminal (CMD on Windows, Terminal on macOS/Linux) and run:
pip install keyboard wmi pywin32 pillow

(These libraries handle keyboard input, Windows interaction, etc.)

  1. Creating the Python File Copy the full GhostTyper code (the one you shared).

Paste it into a text editor (VS Code, Notepad++, Sublime Text, etc.).

Save the file as ghosttyper_gui.py (or another name with the .py extension).

  1. Running the Program In the terminal, navigate to the folder containing the file (using cd), then launch:
python ghosttyper_gui.py

(If python doesn’t work, try python3 on macOS/Linux.)

  1. Using the Interface ▶ Start: Activates protection (keystroke encryption + anti-keylogger).

⏸ Pause: Pauses encryption.

Paranoia Mode: Sends random keystrokes to confuse keyloggers.

Anti-Keylogger: Detects and closes suspicious processes.

Close: Exits the application.

  1. Technical Features Real-time encryption: Keys are altered using an algorithm based on the current time.

Keylogger detection: Scans Windows processes (e.g., "ahk" for AutoHotKey).

Random fake keystrokes (Paranoia Mode) to mislead loggers.

Common Issues & Solutions ImportError: Ensure all dependencies are installed (pip list).

Blocked by antivirus: Tools like keyboard or pywin32 may trigger warnings. Add an exception if needed.

Permissions: Run the terminal as administrator (Windows) if GhostTyper can’t close processes.

Important Note This program is designed for protection and education. Test it in a controlled environment before intensive use.

To create a compiled version (.exe for Windows), use PyInstaller:

pip install pyinstaller
pyinstaller --onefile --windowed ghosttyper_gui.py

(The .exe file will be in the dist/ folder.)


🚀 Express Method to Create GhostTyper.exe (Skip all the manual steps)

Download this ready-to-compile Python file: → 🔗 GhostTyper.py (https://github.com/madjeek-web/GhostTyper/blob/main/GhostTyper.py) (Pre-verified complete code)

Open a terminal (CMD/PowerShell) and run:

pip install pyinstaller
pyinstaller --onefile --windowed --icon=ghost.ico ghosttyper_gui.py

(Replace ghost.ico with your own icon file if available.)

Get your .exe: → Navigate to the newly created dist/ folder → Your ghosttyper_gui.exe is ready!

🔥 Pro Tips To avoid antivirus false positives: Add this PyInstaller option:

pyinstaller --onefile --windowed --add-data "ghost.ico;." --upx-dir=./upx ghosttyper_gui.py

(Uses UPX to compress and reduce false positives.)

Silent version (no console): Replace --windowed with --noconsole.

⚠️ Important Notes If your antivirus blocks the .exe, add an exception or temporarily disable it.

For maximum security, always compile the .exe yourself rather than downloading pre-built binaries.


🔍 Recommended Pre-Use Checks Antivirus Scan:

Verify the file on VirusTotal (https://www.virustotal.com/gui/home/upload) to check for false positives.

Execution:

Right-click the .exe → "Run as administrator" (if blocked by Windows Defender).

Temporarily disable your antivirus if needed (anti-keylogger tools often trigger alerts).

⚠️ Critical Notes ❌ Never share this .exe via email/public channels (risk of being flagged as "malicious").

🔄 For the latest version: Always recompile yourself using PyInstaller (see original instructions).

💡 Alternative: Use Portable Python (https://portablepython.com/) if you prefer to avoid .exe files entirely.

About

Protect your keystrokes from spies ! Keyloggers steal everything you type : - Passwords - Private messages - Banking data

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages