Portfolio

Servidor de consola serie con un ESP32-C3.
Expone la consola serie de un servidor Linux mediante un servidor Telnet. Útil para tener un acceso out-of-band al servidor si la interfaz de red principal falla.
Todo el hardware está en una placa ESP32-C3 Super Mini. La provisión inicial del dispositivo (IP, puerto, WiFi, contraseña de sesión) se hace con su propia consola serie. Se necesita un conversor USB-UART o un segundo ESP32-C3. Ver conversor USB-UART.
- Servidor Telnet compatible para suprimir el echo local y soportar varios formatos de salto de línea (LF, CR-LF, CR-NUL).
- Autenticación de la sesión con contraseña; y bloqueo temporal tras varios intentos fallidos.
- Entrada/salida de USB CDC a bajo nivel debido a que el driver usb_serial_jtag driver de ESP-IDF 5.5.2 tiene un bug. Ver USB Serial JTAG Read Bug.
- Lectura de mensajes en modo desconectado: almacena hasta 64kb de mensajes del sistema y los envía en la próxima conexión para un análisis post-mortem si fuera necesario.

Simulador de sockets AX.25 para conexiones TCP.
Se trata de una capa que emula una interfaz compatible con una TNC con The Firmware de WA8DED. El tráfico normal TCP/IP aparenta ser una comunicación AX.25 por puerto serie.
Así podemos utilizar programas clásicos como Graphic Packet o TSTHOST con BBS actuales por Internet via Telnet.
Herramientas en línea de comandos para trabajar con los chips Microchip Crypto-Authentication.
Incluye configuración de ejemplo para probar y aprender, comandos básicos, ejemplos y casos de uso.
Código fuente: ATECC608-Tools
Artículo: Chips criptográficos de usar y tirar

Varios proyectos para aprender cómo usar una FPGA.
Basados en la placa Sipeed Tang Nano y una pantalla LCD VGA.
Los proyectos van en grado de dificultad creciente:
- Patrones simples
- Imágenes desde la ROM
- Texto
- Terminal serie
Cada subdirectorio del proyecto principal tiene su propio README con los puntos clave y ejemplos (en inglés). Así como un artículo con una extensa explicación (en español).
Artículos:
- Primeras experiencias con Sipeed Tang Nano. Impresiones, primeros circuitos en verilog y errores de principante.
- Pantalla LCD con Tang Nano parte I. Patrones. Cómo manejar una pantalla VGA. Señales de reloj.
- Pantalla LCD con Tang Nano parte II. Imágenes. Mostrar imágenes monocromo. Ruido blanco. Colores CGA. Texturas.
- Gráficos VGA con FPGA Tang Nano parte III. Texto. Repasamos la historia de la informática mientras diseñamos un controlador VGA para texto.
- Mi propia consola serie y el terminal de Unix. Desde hacer un terminal serie a hackear con STTY. Pasando por la historia del teletipo, la disciplina de línea o Terminfo.

La librería en Python más completa para usar los chips MCP2221 y MCP2221A.
Totalmente documentada y con muchísimos ejemplos.
Código fuente y ejemplos: Easy MCP2221.

Prueba de concepto para permitir o denegar el acceso a dispositivos conocidos. Se basa en la instalación de un certificado local y un agente que actua como API REST. El navegador puede llamarlo y comprobar las credenciales.

Gráficos de Matlab simulando un osciloscopio.
Tiene en cuenta la velocidad de barrido para hacer gráficos más realistas tal y como se verían en un osciloscopio analógico.

Librería en C para manejar una LCD I2C (basada en el chip PCF8574). Prinicpales características:
- Funciones simples muy básicas (posicionar el cursor, escribir texto).
- Integración con printf para formato de texto y texto multilinea.
- Soporte de caracteres personalizados.
- Tabla de reemplazo para carácteres UTF8 anchos (ñ, tildes, etc).
- Lectura de datos desde el controlador LCD.
- Control de iluminación posterior (atenuación con PWM).
Pensada en un primer momento para Raspberry Pi utiliza la librería wPi_soft_i2c. Se puede portar fácilmente a otras plataformas como ESP32.
Implementación en C del protocolo I2C. Pensado en un primer momento para Raspberry Pi utiliza la librería WiringPi. Se puede portar fácilmente a otras plataformas.
Implementación en Perl del paper de Jesse Kornblum Identifying almost identical files using context triggered piecewise hashing (CTPH).
Gracias a Christoph Biedl por generar un paquete Debian de este módulo: libdigest-ssdeep-perl.