SeCrypt (Colección de funciones criptográficas)

Colección de funciones criptográficas para Pascal (Delphi, freepascal, etc ...). Incluye, por ahora, los algoritmos AES256 (Rijndael), SHA256 y base64.

El objetivo principal es tener unas funciones sencillas, que puedan ser utilizadas con diferentes compiladores (delphi, freepascal, ...) y en diferentes sistemas operativos (windows, linux, android, etc ...)

El código está alojado en github: https://github.com/dxeoane/secrypt

Cifrar/descifrar usando SHA256

Una pregunta que se repite con cierta frecuencia en los foros de programación es como se puede cifrar y descifrar usando sha, md5, etc ... Suelen hacerlas gente que se esta iniciando en el mundo de la criptografía y no tiene muy claro todavía para que sirve cada cosa. La respuesta mas común es decirles que esos son algoritmos de reducción (resumen o simplemente "hash") y que no se pueden usar para cifrar / descifrar, pero eso no es del todo cierto.

Descifrar ficheros .crypt5 de Whatsapp

Recientemente whatsapp a cambiado el algoritmo y las claves de cifrado que utilizaba para cifrar las copias de la base de datos que guarda en la tarjeta SD de nuestros teléfonos. No es que sea un cambio muy grande, a pasado de usar una clave única para todos a usar una personalizada para cada usuario, y ademas ha dejado de utilizar el método de cifrado ECB para usar CBC con un vector de inicialización (IV), aunque este ultimo si que es igual para todo el mundo. En resumen, esta es otra buena ocasión para probar mi colección de funciones criptográficas (SeCrypt) y hacer un pequeño programa que permita descifrar este fichero.

Cifrado PC1 ( Pukall Cipher 1 ) en Delphi

El cifrado PC1 no es muy conocido, al menos yo nunca había oído hablar de el hasta hace poco. Lo poco que he podido encontrar en Internet sobre el es que fue desarrollado por un tal Alexander PUKALL en el año 1991 y algo de código en C y pascal. El algoritmo tiene una longitud de clave de 128 bits (16 bytes) y tiene como particularidad que el texto cifrado esta compuesto solamente por caracteres de la 'a' a la 'p' por lo que es muy sencillo guárdalo como texto al no aparecer caracteres extraños.

Enviar notificaciones y ficheros a nuestro teléfono desde el PC

El siguiente programa utiliza la API de la aplicación Pushbullet para enviar mensajes y ficheros desde nuestro PC a nuestro móvil con Android. Tan solo hace falta instalar la aplicación en nuestro teléfono y ya podemos empezar a hacer envíos desde el PC, la única configuración que requiere es indicarle cual es nuestra "API Key" que podemos encontrar en la página de Pushbullet en la sección "Account Settings".

Repetidor WakeOnLan para Raspberry

Wake-on-LAN (WOL) es un estándar pensado para encender remotamente un ordenador por medio de un mensaje de red. Básicamente consiste en enviar a toda la red local un paquete de datos (conocido como "Magic Packet") que contiene la MAC del equipo que queremos encender. Cuando la tarjeta de red detecta un paquete con su MAC da la orden de encendido del resto del equipo.

Leer los datos públicos del DNIe

Me acabo de renovar el DNI (Documento Nacional de Identidad) y me lo dieron con su "chip" y su número PIN, así que aprovechando que tenia un lector de tarjetas guardado en un cajón desde hace mas de un año me propuse darle uso. Primero instale todo el software necesario para usarlo con el navegador, firmar documentos, etc ... pero pronto me aburrí, así que intente buscar la forma de acceder a los datos del DNIe desde Delphi (mi lenguaje de programación preferido). Pero no quería jugar con los "datos privados" contenidos en la tarjeta ya que para eso hace falta introducir el PIN y corría el riesgo, si me equivocaba al programar, de bloquear el DNIe y tener que ir a desbloquearlo a una comisaria de policía. Así que me limite a su "zona publica" donde, entre otras cosas, podemos encontrar el numero del documento, nuestro nombre y apellidos, la fecha de expedición, etc ...

Servidor UDP sencillo

Este es un ejemplo de servidor UDP pequeño y ligero, sin grandes pretensiones. Su funcionamiento es sencillo, al ejecutar el programa se pone a escuchar por el puerto 61978 a la espera de recibir un comando, cuando lo recibe crea un nuevo hilo de ejecución que se encarga de procesar el comando y, si es necesario, enviar una respuesta.