De un ban en Club Penguin a cazar bugs: conversación con Franco

Franco tiene 16 años, es argentino, desarrolla videojuegos y es bug hunter en HackerOne. Todo lo aprendió por su cuenta: lamentablemente no pude aprender nada en el colegio; mi colegio no da programación.

Se lo dije al final del episodio y lo repito aquí: sabe cosas de las que yo no tengo idea, y yo me puedo jactar de que ya acabé la carrera.

La saga, que es lo mejor de la conversación

Su camino es una cadena donde cada eslabón salió de un problema personal muy concreto: el ban de Club Penguin a los seis años, un juego de hámsters programado en PowerPoint, el servidor que colapsó cuando treinta compañeros se conectaron a la vez. Está completa aquí, y creo que es la mejor historia de todo el podcast.

Cómo funciona un bug bounty

Sobre HackerOne:

Una compañía se anuncia y dice: queremos encontrar errores en nuestra plataforma. Pero hay ciertas empresas que prohíben que le hagas ciertos ataques —por ejemplo la denegación de servicio, inyecciones SQL, ataques XSS— porque dañaría la página web y sería irrecuperable.

Básicamente tenés que andar un poco en el index, a ver si encontrás algún error en el código. Y fijarte que esté en condiciones la base de datos, que es lo principal.

Le confesé que de seguridad informática no tengo nada de idea —sé qué es una inyección y las demás no— y le pedí que las explicara:

SQL injection. Básicamente atacar la base de datos y poder ver la información que hay adentro, porque hay algunas bases de datos que no están protegidas.

Denegación de servicio. Cuando un servidor tiene cierta capacidad y sobrepasás ese límite, el servidor por naturaleza colapsa, deja de funcionar.

Cross-site scripting (XSS). Vos inyectás código a la página web. Viste que hay casillas de texto —usuario, contraseña—: las rellenás con código. Su ejemplo es un script chiquito en HTML que le cambia el nombre al banner del sitio. Y su matiz honesto: una empresa como Microsoft dudo que tenga XSS en su website. Pero le podría venir mal algún troll ahí cambiándole cosas.

Aprender al revés

Franco aprendió al contrario de como se enseña: problema primero, concepto después.

Se lo planteé así: en la escuela nos dan todo muy etéreo, problemas que no sirven para nada. Él lo hizo al revés, con un problema específico que resolvió, y de ahí salió el siguiente.

Su confirmación es buenísima:

Yo recién ahora de grande empecé a probar con la sucesión de Fibonacci en python. Sé que se lo hacen hacer en las escuelas porque tengo varios amigos que van a escuela de programación.

O sea: los ejercicios canónicos de introducción los hizo al final, por curiosidad, después de haber construido servidores multijugador y páginas web para comercios.

Y eso último fue otro eslabón de la misma cadena: necesitaba una página donde anunciar su videojuego, así que aprendió HTML. Claramente lo que salió fue una página de fondo azul con caracteres que no se entendían porque tuve problemas con la fuente. Pero por lo menos pude aprender. De ahí pasó a hacer páginas para comercios de su ciudad, y eso le dio reputación de programador, que es lo que hoy le ayuda a trabajar.

Luciana: de una pesadilla a la beta

Su juego actual es de terror. Es fan de Slenderman y Amnesia: esos juegos que muchos chicos de mi edad nunca los pudieron jugar, yo estuve en el auge de esos juegos. Y ve un hueco: no hay como mucha competencia de juego de terror ahora.

El origen es extraordinario. En una reunión de verano unos amigos le mostraron un test que supuestamente te dice qué patología psicológica podés tener sin enterarte. A mis amigos les salía 2% TOC. A él le salió 98% esquizofrenia.

Esa noche me agarró bastante miedo. Sabía que no tengo esquizofrenia pero me daba cosa. Y encima había terminado de ver una serie de terror psicológico.

Tuvo pesadillas toda la noche. Cuando me levanté, lo primero que hice fue acordarme de mi sueño y anotarlo, porque era una idea bastante fuerte.

Hizo una beta en tres meses, medio a las apuradas, con diseños medio feos —a propósito: tampoco me iba a gastar mucho en hacer una beta para ver si era factible o no. Gustó, y de ahí pasó a Unity de pago con licencia y a hacer diseños en Blender.

Lo hace completamente solo. Intentó reclutar amigos: eso de explicarle a programar, encima aprender C# en poco tiempo, es medio...

Su método

Mi proceso de idear: hago algún diagrama de flujo de alguna mecánica importante, como por ejemplo los monstruos. Siempre arranco por mecánicas, después paso a diseño, después música, y así voy agregando cosas hasta que termino.

Sobre sus diagramas: como no estudié nada, digamos que son medio incomprensibles. Pero bueno, hago lo que puedo.

El audio no es un detalle para él: su hermano es guitarrista, él tiene teoría musical, toca piano y guitarra y sabe ecualizar. La música es algo muy importante en el juego: siempre los bajos altísimos, la música muy alta, ambiental, para meterte dentro del personaje.

Y prueba con amigos por Discord: les pasa el juego y se lo streamean. Va viendo la iluminación, lo que no gusta. Les digo que sean lo más objetivos que puedan: si algo no les gusta, si les parece horrible la mecánica, me lo tienen que decir.

Cuándo está terminado un juego de terror

Aquí cita explícitamente la entrevista anterior con Bruno:

Vi la entrevista con Bruno, el chico que hace videojuegos, que dice que es más importante hacerlo para ellos que pensar en una mecánica que te gusta a vos. Entonces yo siempre me baso en eso: como soy un jugador de juegos de terror, ya me conozco las mecánicas que a mí como jugador me gustan.

Y su prueba empírica, que me encanta:

Yo programo de noche. Entonces llegó un punto en el que me da miedo. Y cuando llego a ese punto, sé que el juego está bien encaminado.

Sobre la historia tiene una opinión que va contra el sentido común del género:

La historia la desarrollo sobre la marcha. Si bien es clave una historia en un juego de terror, cuando tenés una buena mecánica y una buena ambientación con buenos monstruos, la historia pasa a segundo plano. Yo cuando juego juegos de terror nunca pienso en la historia.

Marketing sin anuncios

Su plan original era pagar banners en Instagram. Lo descartó por experiencia propia:

Cuando yo estoy deslizando en Instagram quiero ver una foto, y me aparece un anuncio de un videojuego en Play Store, directamente pongo el modo avión y bloqueo el celular.

En su lugar copió lo que había visto funcionar con Valorant: streamers. Pero no cualquiera.

Pasé por algunos canales, ni muy grandes ni muy chiquitos —medio 100, 200— y les decía: tengo un juego, si te interesa te paso una beta cerrada para que la pruebes en tu stream. Y cuando la gente empieza a preguntar por el juego, vas dando de a poquitas betas a los espectadores.

Funcionó. Y su razonamiento de por qué es más honesto que cualquier plan de medios:

Me pareció más real que yo directamente tenga contacto con la persona que lo va a jugar. Nos beneficiamos los dos, porque mi juego es gratuito: yo le doy un juego gratis, él lo juega, y me ayuda a mí un poquito también.

Dónde busca cuando algo falla

YouTube y Google primero. Stack Overflow siempre abierto por si sale un error.

Pero para Unity va al foro oficial, y la razón es específica: entre versión y versión el ensamblado de Unity cambia un poco el lenguaje, y capaz que hay cosas que en la versión anterior usabas y en la próxima ya no están.

Para errores de Linux, foros de hackers. Usa Kali Linux para seguridad y Windows para los videojuegos.

Su siguiente paso

Quiere dedicarse a seguridad casi por completo. Y su motivo es una queja que no esperaba de alguien de 16 años:

A día de hoy no hay muchos ataques, y la mayoría de ataques yo ya me los sé de memoria, ya los hice muchísimas veces. Es como que no hay innovación. Me parece que es momento de que alguien busque algo para innovar en seguridad.

Sus consejos

El que abre el episodio:

Que investigue. En vez de sentirte así calentito a las 11 de la noche e irte a dormir: quedarte un rato largo, leer, mirar videos, aprender. Sobre todo estar dispuesto a escuchar.

Porque si no estás dispuesto a escuchar, o a encerrarte en que sos el mejor en esto, no vas a aprender. Por ejemplo, vas a ver un video de Chema Alonso y vas a decir: este señor de 50 años, ¿qué me puede venir a explicar a mí? Y si tenés esa mentalidad, la tenés que cambiar, porque Chema Alonso es referente.

Sobre el inglés: suena feo, pero es un requisito, aunque sea a nivel ultra básico, porque casi toda la información que hay está en inglés.

Y el final, con una advertencia sobre las escalas:

Que se esfuerce mucho, porque aprender de cero no es fácil, y menos ser autodidacta. Que trate de tomar bastante café a la noche.

No es que "listo, programé una app en Visual Basic que me muestra dos imágenes, y ya voy a crear un sistema operativo". Hacés esa app, después probás con variaciones, y vas cambiando hasta que tengas un resultado bueno.


Este texto sale del episodio 020 del Podcast Algoritmos, una conversación con Franco. Dos cosas que dice al aire no son exactas y las dejo señaladas: Blender sí existe para Linux, y C# ya se usaba en Unity antes de la versión 5.

No se pudo guardar tu suscripción. Por favor, inténtalo de nuevo.
Tu suscripción ha sido exitosa.

Boletín

Recibe nuevos artículos por correo.