Java KeyLogger

Olá,

recentemente tive que capturar eventos do teclado, mas como vocês já devem saber, no java existe sim a interface para isso.
No entanto, ela somente funciona no escopo aplicação java, não fora.
Portanto, pesquisei sobre JNI, JNA e outros, para de fato conseguir ouvir as interrupções do teclado dentro do java.
Depois de testar a JNI e JNA, encontrei o SWT que foi o mais simples e prático. Tanto que escrevi um KeyLogger com poucas linhas vejam só:

Para testa-lo é necessário baixar o SWT Win32 Extension em http://www.swtui.cn/

  1. A seguir descompacte o arquivo zip e entre na pasta example pelo console (cmd or bash), aonde estão algumas bibliotecas+dlls
  2. Depois salve o arquivo KeyLogger.java para a pasta example, para facilitar
  3. Dentro da pasta example, compile o fonte
    javac -cp org.eclipse.swt.win32.extension.jar;. KeyLogger.java
  4. Agora execute
    java -cp .;org.eclipse.swt.win32.jar;org.eclipse.ui.forms.jar;org.eclipse.jface.viewers.jar;org.eclipse.swt.win32.extension.jar KeyLogger
  5. E por fim, acesso o hotmail, ou yahoo e login
  6. Agora, confira o home do seu usuário (/home/hlino or C:\Documents and Settings\hlino) e veja se o que você digitou foi gravado no arquivo com o nome do seu login.txt …huhauhauha

A idéia que utilizei foi bem simples: mapear todos eventos e gravar no arquivo com o nome do usuário logado e diferenciar a senha após a tecla TAB e antes do ENTER.
Assim como fazemos para logar no yahoo.
Digita o usuário TAB para variar para o campo da senha e enter para ENTRAR;

2 curtidas

"digitou foi gravado no arquivo com o nome do seu login.txt …huhauhauha "

Bom, digamos que você está achando graça em fazer um progaminha tosco que rouba a senha dos outros?
Lamentável.

Aposto que ainda está se achando o “ráquer” com isso.
Puff…

Porque não apagam esse tópico?

Sabia que esse tipo de comentário surgiria. Mas fazer o que, Viva La Democracia!!! .
Meu caro, em momento algum mencionei, roubar senha. Isso fica por sua conta.
Na verdade, repassei aqui algo que aprendi e que eu não havia encontrado anteriormente no forum, por isso postei.
Agora, se você se ofendeu, paciência. Não foi essa a intenção.
Sabe, ao invés de questionar mais esse aprendizado. Porque você não propõe ou escreve algo que impeça essa simples captura de eventos do teclado?

1 curtida

Olá hlino.

Mto legal sua iniciativa, legal mesmo…

Estou desenvolvendo uma aplicação p/ um cliente, e ele qr registrar tudo o que ele escreve p/ fins de anotações, não qr abrir um notepad, qr sair digitando no desktop mesmo, e esse seu exemplo, com algumas adaptações, funcionou mto bem…

Abraço e mto obrigado.

Massa estava precisando disso, não para fins de “roubar senha”…
Valeu a dica.

Muito bom mesmo! Ainda nao testei, mas pelos comentarios parece q o “trem anda” mesmo! :lol:
VLW T+!

Primeiro quando fui seguindo passo a passo pra executar o exemplo deu um erro avisando q javac nao eh um comando interno valido! depois eu fui tentar importar o SWT num novo project e jogar o seu exemplo lá e ta dando erro na linha

Hook.KEYBOARD.install();

Ta dando o seguinte erro:

Exception in thread "Thread-0" java.lang.NoClassDefFoundError: org/eclipse/swt/internal/win32/OS at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(Unknown Source) at java.security.SecureClassLoader.defineClass(Unknown Source) at java.net.URLClassLoader.defineClass(Unknown Source) at java.net.URLClassLoader.access$000(Unknown Source) at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClassInternal(Unknown Source) at org.sf.feeling.swt.win32.internal.extension.EventObject.<init>(EventObject.java:34) at org.sf.feeling.swt.win32.extension.hook.Hook$HookEventLoop.run(Hook.java:328) at java.lang.Thread.run(Unknown Source)

Por favor alguem me da uma luz ae! :cry:

EDIT: Consegui! :lol:

EDIT: Se alguem quizer saber oq eu fiz pra funcionar eh soh falar q eu posto aki! :lol:

EDIT: Soh tava com problema de importação de DDL´s :lol:

[quote=Guga360]"digitou foi gravado no arquivo com o nome do seu login.txt …huhauhauha "

Bom, digamos que você está achando graça em fazer um progaminha tosco que rouba a senha dos outros?
Lamentável.

Aposto que ainda está se achando o “ráquer” com isso.
Puff…

Porque não apagam esse tópico?[/quote]

Lamentável é seu comentario amigo.
Se ele ta estudando pra ser um hacker que mal há nisso.
Até onde sei hackear é fazer segurança; Diferente de um cracker ou um Script Kiddie(lamerzão) que quebra sistemas de segurança e ou explora falhas em sistemas alheios.

[quote=Guga360]"digitou foi gravado no arquivo com o nome do seu login.txt …huhauhauha "

Bom, digamos que você está achando graça em fazer um progaminha tosco que rouba a senha dos outros?
Lamentável.

Aposto que ainda está se achando o “ráquer” com isso.
Puff…

Porque não apagam esse tópico?[/quote]

Só pra saber… quem fez seu conceito de hacker? A midia ou voce mesmo estudando

As pessoas não podem ter o caráter julgado pelo seu conhecimento e sim pela suas atitudes.

Muito legal o tópico valeu pela iniciativa…

1 curtida

Ai pessoal … Tem como alguém disponivilizar outro link para esse jar… esse link está quebrado?

hAUhUA…

é a terceira vez que eu vejo esse tópico renascendo… tem bastante gente procurando KeyLogger por ai.

xD

eu penso que o conhecimento nao tem limite, para fazer o bem ou o mal apenes os melhores se destacam

[quote=hlino]Olá,

recentemente tive que capturar eventos do teclado, mas como vocês já devem saber, no java existe sim a interface para isso.
No entanto, ela somente funciona no escopo aplicação java, não fora.
Portanto, pesquisei sobre JNI, JNA e outros, para de fato conseguir ouvir as interrupções do teclado dentro do java.
Depois de testar a JNI e JNA, encontrei o SWT que foi o mais simples e prático. Tanto que escrevi um KeyLogger com poucas linhas vejam só:

Para testa-lo é necessário baixar o SWT Win32 Extension em http://www.swtui.cn/

  1. A seguir descompacte o arquivo zip e entre na pasta example pelo console (cmd or bash), aonde estão algumas bibliotecas+dlls
  2. Depois salve o arquivo KeyLogger.java para a pasta example, para facilitar
  3. Dentro da pasta example, compile o fonte
    javac -cp org.eclipse.swt.win32.extension.jar;. KeyLogger.java
  4. Agora execute
    java -cp .;org.eclipse.swt.win32.jar;org.eclipse.ui.forms.jar;org.eclipse.jface.viewers.jar;org.eclipse.swt.win32.extension.jar KeyLogger
  5. E por fim, acesso o hotmail, ou yahoo e login
  6. Agora, confira o home do seu usuário (/home/hlino or C:\Documents and Settings\hlino) e veja se o que você digitou foi gravado no arquivo com o nome do seu login.txt …huhauhauha

A idéia que utilizei foi bem simples: mapear todos eventos e gravar no arquivo com o nome do usuário logado e diferenciar a senha após a tecla TAB e antes do ENTER.
Assim como fazemos para logar no yahoo.
Digita o usuário TAB para variar para o campo da senha e enter para ENTRAR;

[/quote]

Muito bom o topico, acho que cada um usa da forma que achar ideal se vc axa ideal sair robando senha por ae, vai da pessoa, mas aposto que muita pessoa pego esse codigo para estudar e sim conhecer mais sobre java, vlw otimo topico irei pegar e estudar! abracao!

As Dlls são do projeto GTK do Eclipse… ele explicou lá…

E daonde que começou a ideia de usarem pro mal aqui?

Se for um mal entendido do que eu disse a minha intenção era apenas dizer que tem bastante gente digitando KeyLogger na busca do fórum.

Conhecimento é sim para ser compartilhado… mas como isso é um assunto muito longo, não tenho tempo para dar opnião.