Por @Wicho — 19 de Agosto de 2020

A MatKC un día le asaltó la duda de si sería posible meter un programa en un código QR. A fin de cuentas un QR no deja de ser un «dispositivo» de almacenamiento. Así que en Can you fit a whole game into a QR code? cuenta sus peripecias hasta que por fin consiguió meter el mítico juego de la serpiente en uno.

Por supuesto Matt no se refería a meter una dirección web en el QR, lo que es trivial, sino a meter el código del programa allí. Así que lo primero que hizo fue averiguar la capacidad máxima de almacenamiento de un QR, que en su versión 40 es de la friolera de 2.953 bytes. Algo menos de 3 KB.

No es mucho: el icono de cualquier programa en vuestro ordenador o móvil ocupa más que eso. Pero hay quien ha metido un ajedrez en mucho menos de 1 KB. Y –modo abuelo cebolleta on– hubo tiempos en que eso era el triple de la memoria de la que disponían algunos ordenadores como el Sinclair ZX81.

Luego tocó decidir qué juego escribir. Su juego preferido es Tetris. Pero dado que la empresa que tiene los derechos es un tanto picajosa al final se decidió por el juego de la serpiente. Y escogió Windows como plataforma para no tener que andar peleando con las limitaciones a la hora de publicar programas en las tiendas de aplicaciones de Android o iOS.

Una opción era escribirlo en JavaScript con un poco de HTML y CSS. Pero para eso es necesario tener un navegador instalado, lo que a Matt le parecía hacer un poco de trampa. Así que fue a por todas y su decisión fue la de intentar crear un ejecutable que cupiera en esos 2.953 bytes.

Tras varias idas y vueltas con opciones del compilador y probar incluso a escribirlo en ensamblador al final volvió a C. Pero el programa ocupaba 3,1 KB con lo que no había forma de que cupiera en un QR. Aunque finalmente Matt dio con la solución: comprimir el código e incorporar dentro del programa el descompresor, lo que le permitió bajar de los 2.953 bytes y meter el programa como autoejecutable en un QR.

Un vídeo realmente entretenido y lleno de detalles que recomiendo ver. ¿Que por qué lo hizo? Por el desafío, por las ganas de saber; el verdadero espíritu «hackeril» sin duda posee a Matt.

Y sí, que lo haya logrado es también inquietante porque, como él dice, eso hace posible meter malware en un QR cualquiera que una personas con malas intenciones puede ir dejando por ahí.

(Gracias por la pista, ⌘Q)

Relacionado,

Compartir en Flipboard Publicar / Tuitear