Un chargeur personnalisé pour Transformice et autres jeux Atelier 801 qui oblige le client à se connecter à un proxy local.
Pour construire, vous devez utiliser le fichier asconfig.json pour compiler le fichier TFMProxyLoader.swf . Cela peut être fait avec vscode-as3mxml ou asconfigc.
OU devra également placer les fichiers SWC pour les bibliothèques suivantes dans un dossier lib au même niveau que le fichier asconfig.json :
Si vous souhaitez vous sauver les tracas, il y a aussi un SWF prédéfini dans les versions de ce référentiel.
Pour utiliser ce chargeur, vous devez charger le fichier TFMProxyLoader.swf . Si vous utilisez la version Steam de TransformIce, cela signifie que vous devez ouvrir les fichiers locaux pour le jeu et remplacer le fichier Transformice.swf contenu par le TFMProxyLoader.swf un (le renommant sur Transformice.swf ).
Au chargement, il y aura des boutons pour les jeux suivants:
En cliquant sur un bouton, il faut charger ce jeu et le faire se connecter à localhost sur le port 11801 . Vous devez exécuter un proxy à écouter là-bas, par exemple un proxy de Caseus. Le jeu sera lancé normalement et il se connectera au proxy comme s'il se connectait au serveur normal.
De plus, appuyer sur la touche «Entrée» chargera le jeu qui a été chargé pour la dernière fois, vous permettant de contourner toute presse de souris.
Aucune de la section suivante ne s'applique lorsque le chargeur est exécuté dans un temps d'exécution de l'air, comme la version Steam de Transformice est. Sinon, il y a des choses supplémentaires liées à la sécurité avec lesquelles s'affronter.
Lorsqu'il ne fonctionne pas dans un temps d'exécution de l'air, le chargeur nécessitera un fichier de stratégie d'URL pour le domaine du jeu chargé. Tous les jeux ont ceci (par exemple, Transformice's: https://www.transformnice.com/crossdomain.xml), à l'exception de Fortoresse, ce qui le fait échouer. De plus, chaque jeu demandera un fichier de stratégie de socket pour localhost:11801 .
Lorsque le jeu demande un fichier de stratégie de socket pour localhost:11801 , il essaiera d'abord le port 843 . À défaut, il essaiera le port 10801 , et si cela échoue également, il essaiera enfin le port de destination, 11801 . Par conséquent, un serveur de stratégie de socket peut être exécuté sur le port 10801 , en supprimant la nécessité pour l'utilisateur final de désactiver toutes les fonctionnalités de sécurité (pour des jeux autres que Fortoresse) et permettant au port 11801 d'être dédié au flux de paquets typique.
Cependant, si vous utilisez le projecteur autonome et que vous exécutez le chargeur à partir d'un fichier, vous pouvez désactiver tout ce qui fait ses traits sur les fichiers de stratégie. Pour ce faire, vous pouvez placer un fichier à l'emplacement correspondant pour votre plateforme:
%AppData%/Macromedia/Flash Player/#Security/FlashPlayerTrust/TFMProxyLoader.cfg~/Library/Preferences/Macromedia/Flash Player/#Security/FlashPlayerTrust/TFMProxyLoader.cfg~/.macromedia/Flash_Player/#Security/FlashPlayerTrust/TFMProxyLoader.cfg Le contenu du fichier doit être le chemin d'accès du répertoire qui contient le chargeur proxy SWF, donc par exemple si le chemin du chargeur est /path/to/TFMProxyLoader.swf , alors le contenu du fichier de configuration à l'emplacement ci-dessus doit être /path/to .
Cela permettra à Fortoresse de charger et d'empêcher tous les jeux de demander un fichier de stratégie de socket. Si vous connaissez un autre moyen d'accomplir l'une ou l'autre de ces choses, faites-le moi savoir.
Le chargeur de proxy a une taille différente de celle des différents chargeurs de vanille. Ceci est à noter, car le paquet de poignée de main comprend la valeur de stage.loaderInfo.bytes.length , correspondant à la taille non compressée du chargeur d'origine SWF, et si le serveur reçoit une valeur inattendue pour ce champ, il fermera la connexion et le jeu affichera un message "version incorrecte". Par conséquent, le proxy auquel le chargeur se connecte devrait prendre soin de remplacer cette valeur par une taille valide.
Une taille de 0x1FBD fonctionnera pour tous les jeux, car il s'agit de la taille correspondante du fichier TransformiceAIR.swf dans la version autonome Windows, qui peut être utilisée pour lancer tous les jeux.
Le chargeur envoie certains paquets personnalisés qui ne sont pas inclus dans le protocole de vanille. Ces paquets sont appelés paquets "Extension" et ont le format suivant:
(255, 255) . Cela semble être à l'abri du protocole de vanille.writeUTF / readUTF ), représentant l'ID du paquet imbriqué.Ceci est similaire à la façon dont le jeu est utilisé par le jeu.
L'empreinte digitale des paquets d'extension sera toujours 0 et devrait être ignorée afin de ne pas déshabiller les empreintes digitales des paquets de vanille.
Le chargeur enverra un paquet d'extension contenant les sources de clés de paquet au proxy afin que le proxy puisse déchiffrer (et re-cilater) certains paquets. Ce paquet est envoyé avant tout autre paquet. Il a le format suivant:
"packet_key_sources" .Après avoir envoyé les sources de clés de paquet, le chargeur enverra un paquet d'extension contenant la "clé AUTH" utilisée pour le paquet de connexion. Il a le format suivant:
"auth_key" .Le chargeur enverra également un paquet d'extension pour les informations du serveur principal, c'est-à-dire son adresse et ses ports. Ce paquet est envoyé avant le paquet de poignée de main. Il a le format suivant:
"main_server_info" .