Facebook, un portal de internet donde se han perdido tantas horas en escribir en el muro de las personas y en vez de trabajar en tu  trabajo actual juegas a trabajar* en una granja. Ayer igualmente a la hora que se supone que debía de estar trabajando, jugué un juego* llamado Crazy Combi, hecho por una pequeño grupo de videojuegos en Argentina. Como todo juego en Facebook, es muy divertido pero se pone muy aburrido en poco tiempo, y como no podía pasar de los 40,000 puntos, decidí ponerme a ver como funcionaba y como podía subir mi puntaje.

Al jugar, al parecer uno tiene tres variables, el tiempo límite, el puntaje y los metros por recorrer. Para ver qué información se está enviando al servidor de crazy combi, utilicé una gran herramienta llamada Tamper Data, una extensión de firefox. Empecé a recolectar información durante todo el recorrido, pero al parecer no envía nada hasta que termina el juego. Este es el la información que envía:

No hay ningún parámetro tipo POST, asi que toda la información que envía al servidor se incluye en la URL final. Esta es la URL que arroja:

http://apps.facebook.com/crazycombi/savescore.php?ss=12&puntaje=7608&segundos=47&nivel=2&
scoresignature=41615c05415826f9de6c90817eb62e21&combi=1

¿Qué es lo que puedo deducir? Hay 6 variables que se pasan al servidor de Crazy Combi: ss, puntaje, segundos, nivel, scoresignature y combi. Ahora, todos parecen que puedo modificarlos y esperar que se guarden en el servidor, excepto porque tengo una variable llamada scroresignature, que al parecer es  un MD5 (un algoritmo que produce un texto alfanumérico) y desgraciadamente es una calle de un solo sentido, solo puedo hacer un MD5 si se qué contiene antes de hacer el texto alfanumérico y no alrevés. Necesito saber qué es lo que genera ese texto para crear mi scoresignature.

Tendré que descargar el juego a mi computadora para descompilarlo y echarle un ojo. Ver el código fuente de la página no me reveló dónde está el archivo “swf” (un archivo en formato de flash player), asi que abri otra gran herramienta llamada Firebug.

¡Ahi está!, el archivo del juego está en

http://static.sitioperuano.com/combi/combi.swf?v=3

Ahora solamente tengo que descargarlo para abrirlo con otra herramienta llamada SWF Decompiler, lo que me permite hacer es ver el código fuente del juego. Después de unos cinco minutos de buscar, encontré la función que genera el URL donde guarda el puntaje en el servidor:

test_url = "http://apps.facebook.com/crazycombi/savescore.php?ss=" + Config.SALTOS_TOTAL + "&
puntaje=" + puntaje + "&segundos=" + segundos + "&nivel=" + nivel + "&scoresignature=" +
MD5.encrypt(Config.FB_USER + "CRAZY" + puntaje + "COMBI") + "&combi=" + Config.COMBI;

¡Perfecto! veamos mas o menos qué dice: el URL es “http://apps.facebook.com/crazycombi/savescore.php” + el número de saltos + el puntaje + los segundos + el nivel + scoresignature + combi. Y lo mejor de todo es que ahí sí nos dicen cómo está hecha la scoresignature: FB_USER (que lo mas probable es que sea tu ID de facebook + la palabra “CRAZY” + el puntaje + la palabra “COMBI”.

Ahora necesito saber cuál es mi ID de facebook, eso es facil, solamente voy a abrir cualquier fotografía que yo haya subido, la URL de esa foto lo contiene, aquí un ejemplo:

http://www.facebook.com/photo.php?pid=[ID de la fotografía]&id=[ID del usuario]

El número que aparece después de ID es el número de mi usuario. Ahora si, vamos a atarantar a Crazy Combi.

Vi quién es el que tiene el mejor puntaje en mi lista de amigos, era alguien con 97517 puntos. Voy a generar mi firma o scoresignature, para eso necesito un generador de Md5, en mi mac ya está integrado el sistema, o sino pude haber usado uno que encuentre en el internet. En terminal escribí:

md5 -s "[ID de facebook]CRAZY[Puntaje]COMBI"

Escribe tu ID de facebook y el puntaje deseado en esa línea y presiona enter, ¡esa es tu firma!, mi firma fué:

2335cde47a52a1d862979b3c45c8626f

Ahora si, voy a generar nuestro URL falso para guardar un score ficticio en el servidor de Crazy combi. Me voy a inventar un número de saltos ficticio pero que sea lógico para haber ganado ese puntaje. Le voy a poner por ejemplo 439. Después hay que inventé los segundos, si cada juego dura aproximadamente 23 segundos, una simple multiplicación nos hará el favor, para mis 97517 puntos, voy a escribir 382 segundos. Francamente le inventé el número de nivel y parece que no se quejó el servidor, asi que le puse uno que me parecío apropiado, nivel 21. ¡Bien! ahora hay que poner todo eso dentro de una URL:

http://apps.facebook.com/crazycombi/savescore.php?ss=[Num. de Saltos]&puntaje=[Puntaje]&segundos=[Segundos]&nivel=[Nivel]&scoresignature=[Firma]&combi=1

Tu url debe de quedar algo asi:

http://apps.facebook.com/crazycombi/savescore.php?ss=439&puntaje=97517&segundos=382&nivel=21&scoresignature=2335cde47a52a1d862979b3c45c8626f&combi=1

¡Ahora vamos a probarlo! Vamos a meternos a “jugar” en http://apps.facebook.com/crazycombi , y ahora voy a reemplazar la URL por la que acabo de generar.

Listo, ya me puedo dormir tranquilo por hoy.

*Disculpen por la cacofonía.

blog comments powered by Disqus

© Copyright . All Rights Reserved.