La tarde que se me fue en un portapapeles

Hace unos días instalé Golem en el ordenador de un cliente para poder echarle una mano con su aplicación. Golem es mi agente para trabajar en una máquina Windows a distancia: se copia un ejecutable, se lanza, y quien atiende recibe una línea de conexión con la dirección y un token.

Sobre el papel son dos minutos. Aquella tarde no lo fueron.

Primero tuvo que descargar un zip y descomprimirlo. Esto es lo que se encontró dentro:

Carpeta del kit de Golem descomprimida, con seis ficheros .bat de nombres parecidos, golem.exe, cloudflared.exe y dos README

Seis ficheros .bat de nombres parecidos, en dos idiomas, y ninguno se llamaba de una forma que le dijera cuál era el suyo. Elegimos por teléfono. Luego resultó que ese había que lanzarlo como administrador, y explicarle por teléfono el botón derecho y «Ejecutar como administrador» llevó su rato. Cuando por fin arrancó, el programa hizo lo que debía: imprimió la línea de conexión y la dejó copiada en el portapapeles, que era justo la parte que yo había cuidado para que no tuviera que teclear nada.

Y ahí nos quedamos. Tenía la línea copiada y no conseguía hacérmela llegar. La ventana de la consola estaba delante, el WhatsApp en el móvil, y pegar algo del ordenador al teléfono no es una operación obvia para alguien que usa el ordenador para su programa de gestión y poco más. Probamos por correo. Lo que llegó venía cortado.

De quién era el problema

Es fácil contar esto como una anécdota de cliente torpe, y sería injusto. Yo le había puesto delante un camino con seis puntos donde equivocarse: encontrar la carpeta, elegir el fichero, entender lo de administrador, esperar sin saber a qué, localizar el texto y hacérmelo llegar. Cada uno de esos puntos falla poco por separado, pero juntos fallan casi siempre.

Y al otro lado del teléfono no había un programador. Era un empleado de una empresa que usa su aplicación todos los días, la conoce mejor que yo y no tiene por qué saber nada de carpetas comprimidas, de permisos de administrador ni de pasar un texto del ordenador al móvil. Si el camino que le doy da por supuesto que sí lo sabe, el camino está mal hecho.

Así que cambié el camino.

Un fichero, un botón y doce cifras

La versión 1.3 de Golem, que publiqué hoy, trae una ventana llamada Asistencia. El cliente descarga un solo fichero, le hace doble clic y ve esto:

Ventana de Asistencia de Golem recién abierta, con dos botones para decir qué tipo de ordenador es, el aviso contra el fraude y el botón rojo de cortar

Una pregunta, dos botones y nada más. No hay carpeta que descomprimir, ni .bat que elegir, ni consola.

Dentro de ese fichero viajan el agente y el programa del túnel, comprimidos. La ventana los deja en su sitio la primera vez que arranca, en menos de dos segundos, y en cada arranque posterior comprueba que siguen siendo los mismos ficheros que ella traía.

Esa comprobación se hace calculando el SHA-256 de cada uno, que es un número largo que resume el contenido de un fichero: si le cambia un solo byte, el número sale distinto. La ventana lleva dentro el que le corresponde a cada programa, lo recalcula sobre lo que hay en el disco y compara. Si no cuadra, vuelve a dejar el suyo. Lo que se extrae ahí es un programa que va a abrir ese ordenador a otra persona, así que conviene saber que es el que salió de mi compilación y no otro que alguien haya dejado encima.

Cuando la conexión está lista, la ventana enseña doce cifras en tres grupos:

La misma ventana ya conectada, con el número 9001 4231 5635 en grande, la línea de conexión debajo, el aviso de copiado y el diario de lo que va pasando

Eso es lo que el cliente me dicta por teléfono. Doce números, leídos en voz alta, como un código de un banco. También se los dejo copiados por si puede pegarlos, pero ya no depende de ello.

Yo tecleo esos doce dígitos donde antes pegaba la línea larga, y entro. Por dentro, mi cliente de Golem se los cambia por la línea de conexión real y sigue como siempre.

Qué hace el número para que esto se sostenga

Los doce dígitos se parten en dos mitades y cada una tiene un trabajo distinto. Las cuatro primeras dicen dónde está guardada la cita en mi portal. Las ocho siguientes son la clave que la descifra, y esas ocho no pasan por el portal en ningún momento.

Mi portal guarda la línea de conexión cifrada y no puede leerla. Guarda además una comprobación derivada de la clave, que le sirve para saber si quien viene a recogerla la conoce, sin conocerla él.

Sobre eso van tres límites, y los tres se pueden comprobar desde fuera:

  • La cita dura diez minutos.
  • Funciona una sola vez. En cuanto yo la recojo, deja de existir.
  • A los cinco intentos fallidos la ranura se quema y ya no entra ni el número bueno.

Alguien tecleando números al azar, como mucho, llena ranuras de basura durante diez minutos.

Lo que no he cambiado

La línea larga de siempre sigue ahí, debajo del número, en la misma ventana. Si mi portal no contesta, el programa lo dice con todas las letras y enseña la línea, y yo la uso como llevo usándola desde el principio. El número es una comodidad encima de lo que ya funcionaba.

El kit de consola tampoco se ha tocado. Para un VPS o un servidor que administro yo, sigo copiando el ejecutable y lanzándolo desde su .bat, que para eso está pensado. La ventana es para la otra situación: alguien al teléfono que necesita ayuda ahora y no tiene por qué saber nada de esto.

El aviso que va antes del botón

Hay una cosa que no me gusta de haber hecho esto tan fácil, y prefiero decirla. Un programa de un clic que abre tu ordenador a otra persona es, paso por paso, el guion del fraude del falso soporte técnico. Cuanto más fácil se lo pongo a mi cliente, más fácil se lo pongo a quien le llame mañana diciendo que es de su banco.

Por eso la página de descarga lleva el aviso encima del botón, no en letra pequeña al final: esto solo se hace si has llamado tú, o si sabes quién está al otro lado. Y mientras dura la conexión, la ventana tiene siempre a la vista un botón rojo que corta al instante, sin preguntar «¿estás seguro?». Una defensa que pide confirmación no sirve de nada cuando la persona está asustada.

Dónde está

La página es irwinrodriguez.dev/asistencia, en español, inglés y alemán. Se descarga sin cuenta y sin licencia: quien pide ayuda no tiene por qué ser cliente mío.

Hay dos versiones. La suelta, para quien lo va a usar una vez y no quiere instalar nada, y otra que se instala y deja un acceso directo en el escritorio, para quien me va a llamar más veces. Esa segunda pregunta una sola vez qué tipo de ordenador es, el día que se instala y conmigo al teléfono, y ya no vuelve a preguntarlo.

Las dos van firmadas con mi certificado, así que Windows no saca la pantalla azul de aplicación desconocida. Ese aviso era otro muro, y de los que hacen colgar el teléfono.