Un cargador personalizado para Transformice y otros juegos Atelier 801 que obliga al cliente a conectarse a un proxy local.
Para construir, debe usar el archivo asconfig.json para compilar el archivo TFMProxyLoader.swf . Esto se puede hacer con VScode-AS3MXML o ASCONFIGC.
OU también necesitará colocar los archivos SWC para las siguientes bibliotecas en una carpeta lib al mismo nivel que el archivo asconfig.json :
Si desea ahorrar la molestia, entonces también hay un SWF preconstruido en los lanzamientos de este repositorio.
Para usar este cargador, debe cargar el archivo TFMProxyLoader.swf . Si está utilizando la versión Steam de Transformice, esto significa que debe abrir los archivos locales para el juego y reemplazar el archivo Transformice.swf contenido con el TFMProxyLoader.swf uno (renombrarlo a Transformice.swf ).
Al cargar, habrá botones para los siguientes juegos:
Al hacer clic en un botón, cargará ese juego y lo hará conectarse a localhost en el puerto 11801 . Debe ejecutar un proxy escuchando allí, por ejemplo, un proxy de Caseus. El juego se lanzará normalmente y se conectará al proxy como si se conectara al servidor normal.
Además, presionar la tecla 'Enter' cargará el juego que se cargó por última vez, lo que le permitirá eludir las prensas de mouse.
Ninguna de las siguientes sección se aplica cuando el cargador se ejecuta en un tiempo de ejecución de aire, como la versión Steam de Transformice. De lo contrario, hay cosas adicionales relacionadas con la seguridad de las que preocuparse.
Cuando no se ejecute en un tiempo de ejecución de aire, el cargador requerirá un archivo de política de URL para el dominio del juego que se está cargando. Todos los juegos tienen esto (por ejemplo, Transformice: https://www.transformice.com/crossdomain.xml), excepto Fortoresse, lo que hace que no se cargue. Además, cada juego solicitará un archivo de política de socket para localhost:11801 .
Cuando el juego solicita un archivo de política de socket para localhost:11801 , primero intentará el puerto 843 . Si no, intentará el puerto 10801 , y si eso también falla, finalmente intentará el puerto de destino, 11801 . Por lo tanto, se puede ejecutar un servidor de políticas de socket en el puerto 10801 , eliminando la necesidad de que el usuario final deshabilite cualquier característica de seguridad (para juegos distintos de Fortoresse) y permitiendo que el puerto 11801 se dedique al flujo de paquetes típico.
Sin embargo, si está utilizando el proyector independiente y ejecutar el cargador desde un archivo, puede deshabilitar todo ese alboroto sobre los archivos de políticas. Para hacerlo, puede colocar un archivo en la ubicación correspondiente para su plataforma:
%AppData%/Macromedia/Flash Player/#Security/FlashPlayerTrust/TFMProxyLoader.cfg~/Library/Preferences/Macromedia/Flash Player/#Security/FlashPlayerTrust/TFMProxyLoader.cfg~/.macromedia/Flash_Player/#Security/FlashPlayerTrust/TFMProxyLoader.cfg El contenido del archivo debe ser la ruta del directorio que contiene el SWF del cargador proxy, por lo que, por ejemplo, si la ruta del cargador es /path/to/TFMProxyLoader.swf , entonces el contenido del archivo de configuración en la ubicación anterior debe ser /path/to .
Esto permitirá que Fortoresse cargue y evite que todos los juegos soliciten un archivo de política de socket. Si conoce alguna otra forma de lograr cualquiera de esas cosas, hágamelo saber.
El cargador proxy tiene un tamaño diferente al de los diversos cargadores de vainilla. Esto es notable, porque el paquete de apretón de manos incluye el valor de stage.loaderInfo.bytes.length , correspondiente al tamaño sin comprimir del SWF del cargador original, y si el servidor recibe un valor inesperado para este campo, cerrará la conexión y el juego mostrará un mensaje de "versión incorrecta". Por lo tanto, el proxy al que se conecta el cargador debe tener cuidado de reemplazar este valor con un tamaño válido.
Un tamaño de 0x1FBD funcionará para todos los juegos, ya que este es el tamaño correspondiente para el archivo TransformiceAIR.swf en la versión independiente de Windows, que se puede usar para iniciar todos los juegos.
El cargador envía ciertos paquetes personalizados que no están incluidos en el protocolo de vainilla. Estos paquetes se llaman paquetes de "extensión" y tienen el siguiente formato:
(255, 255) . Esto parece estar a salvo del protocolo de vainilla.writeUTF / readUTF ), que representa la ID del paquete anidado.Esto es similar a cómo el juego utilizan los paquetes de la plataforma Tribulle/Comunidad.
La huella digital de los paquetes de extensión siempre será 0 y debe ignorarse para no desíntese las huellas digitales de los paquetes de vainilla.
El cargador enviará un paquete de extensión que contiene las fuentes de la tecla de paquete al proxy para que el proxy pueda descifrar (y volver a cifrar) ciertos paquetes. Este paquete se envía antes de cualquier otro paquete. Tiene el siguiente formato:
"packet_key_sources" .Después de enviar las fuentes de la tecla de paquete, el cargador enviará un paquete de extensión que contiene la "tecla de autenticación" utilizada para el paquete de inicio de sesión. Tiene el siguiente formato:
"auth_key" .El cargador también enviará un paquete de extensión para la información del servidor principal, es decir, su dirección y puertos. Este paquete se envía antes del paquete de apretón de manos. Tiene el siguiente formato:
"main_server_info" .