
Serveur PwnAdventure3
Bienvenue sur l'île Pwnie !
Pwn Adventure 3 : Pwnie Island est un MMORPG en monde ouvert, à la première personne, véritablement libre, disponible en édition limitée, se déroulant sur une magnifique île où tout peut arriver. Car ce jeu est intentionnellement vulnérable à toutes sortes de hacks amusants ! Vol, argent illimité et bien plus encore ne sont qu'à une modification du client ou un proxy réseau. Êtes-vous prêt pour le chaos ?!
Cette configuration fait partie d'une série vidéo couvrant les différents hacks et défis de ce jeu.
Sans compter le Let's Play décontracté du début, toute la série couvre tous les défis de Pwn Adventure 3 en moins de 4 heures.
D'après le README officiel :
Au moins 2 Go de RAM, plus de RAM permettra d'exécuter plus d'instances sur une seule machine.
Le serveur de jeu n'a besoin d'aucun matériel graphique et fonctionne uniquement en console. Il est connu pour bien fonctionner sur Amazon AWS et les instances VPS Digital Ocean.
Le serveur de jeu nécessite beaucoup de RAM pour fonctionner, mais utilise le fork et la mémoire copy-on-write pour faire tourner de nombreuses instances sur un seul hôte.
Pour un serveur avec 2 Go de RAM, il est déconseillé d'exécuter plus de 5 instances, mais un serveur avec 8 Go de RAM peut généralement en gérer autant que le CPU peut en supporter.
Il est recommandé d'utiliser 2 à 3 instances par cœur de CPU si vous avez suffisamment de RAM. Vous pouvez peut-être exécuter 4 à 5 instances par cœur, mais cela peut introduire un léger lag.
Les fichiers pour le client et le serveur dépassent également 2 Go, donc plusieurs Go d'espace disque libre sont nécessaires.
Il existe plusieurs façons de construire et déployer votre propre serveur.
Une option consiste à télécharger et suivre les instructions incluses dans le README des fichiers officiels. Le téléchargement se trouve sur le site officiel ici http://www.pwnadventure.com/#server.
@Beaujeant a créé un guide étape par étape excellent et facile à suivre. Il a également servi de base pour construire l'image Docker de l'Option 3. Le guide se trouve ici : https://github.com/beaujeant/PwnAdventure3/blob/master/INSTALL-server.md.
Cette option est très simple, à condition que docker et docker-compose soient installés sur un hôte. Elle permet d'exécuter et de détruire facilement un serveur, sans modifier le système hôte.
D'abord, rassemblez tous les fichiers nécessaires :
git clone https://github.com/LiveOverflow/PwnAdventure3.git
cd PwnAdventure3
wget http://pwnadventure.com/pwn3.tar.gz
tar -xvf pwn3.tar.gz
Pour exécuter le serveur, docker et docker-compose doivent être installés. Docker évolue rapidement, il est donc conseillé de suivre les étapes officielles actuelles d'installation (ce qui peut également impliquer de supprimer une version système plus ancienne de docker) :
docker-compose : https://docs.docker.com/compose/install/docker avec : sudo usermod -a -G docker $USER. Redémarrez ou reconnectez-vous et vérifiez avec id que l'utilisateur est dans le groupe docker.Ensuite, construisez simplement l'image et lancez le serveur maître et le serveur de jeu :
docker-compose build
docker-compose up
docker-compose up peut également être exécuté en mode détaché/arrière-plan avec -d.
Téléchargez d'abord le client depuis le site officiel ici : http://www.pwnadventure.com/#downloads
Pour connecter un client au nouveau serveur, le server.ini du client doit être modifié. Le serveur lancé avec docker s'attend à ce que les noms d'hôte master.pwn3 et game.pwn3 soient utilisés (ceux-ci pourraient théoriquement être changés dans les fichiers docker/setup).
Le server.ini du client doit ressembler à ceci :
[MasterServer]
Hostname=master.pwn3
Port=3333
[GameServer]
Hostname=game.pwn3
Port=3000
Username=
Password=
Instances=
Assurez-vous que le client peut atteindre ces hôtes, par exemple en les ajoutant au fichier /etc/hosts. Dans cet exemple, le serveur s'exécute sur 192.168.178.57 et l'entrée serait :
192.168.178.57 master.pwn3
192.168.178.57 game.pwn3
Avertissement : Utiliser une IP comme Hostname dans le server.ini ne fonctionne pas ! J'ai passé 2 heures à essayer de comprendre ce qui n'allait pas.
Pour arrêter le serveur, tapez simplement docker-compose down.
Avertissement : Le fichier de base de données n'est pas persistant - la mise hors service du conteneur réinitialise tout. Sauvegardez donc d'abord.
$ docker-compose build
Building init
ERROR: Error processing tar file(exit status 1): write /client/PwnAdventure3_Data/PwnAdventure3/PwnAdventure3/Content/Paks/Characters.pak: no space left on device
R : Obtenez plus d'espace disque.
$ docker-compose build
Building init
ERROR: Couldn't connect to Docker daemon at http+docker://localunixsocket - is it running?
R : Votre utilisateur ne fait probablement pas partie du groupe docker ou le service docker ne tourne pas. sudo usermod -a -G docker pwn3, vérifiez avec id. Ou service docker restart.
Vérifiez si l'archive est corrompue
$ md5sum pwn3.tar.gz
d3f296461fa57996018ce0e4e5a653ee pwn3.tar.gz
$ sha1sum pwn3.tar.gz
022bd5174286fd78cd113bc6da6d37ae9af1ae8e pwn3.tar.gz
Erreur de connexion : Impossible de se connecter au serveur maître
Cela signifie probablement que le MasterServer n'est pas joignable.
[MasterServer] dans le server.ini du client.master.pwn3 depuis votre système hôte ?/etc/hosts ?3333 ?sudo netstat -tulpn
tcp6 0 0 :::3333 :::* LISTEN 31913/docker-proxydocker ps pour voir si les deux conteneurs sont actifs
880f93374070 pwn3server "/opt/pwn3/setup/mas…" 0.0.0.0:3333->3333/tcp, 5432/tcp pwnadventure3_master_1En attente dans la file de connexion...
Cela signifie que le MasterServer est joignable et attend maintenant un GameServer libre à donner au client. Cela signifie probablement qu'aucun GameServer ne tourne, ou qu'il n'a pas pu se connecter au MasterServer.
3000-3005 ?sudo netstat -tulpn
tcp6 0 0 :::3000 :::* LISTEN 32160/docker-proxypwnadventure3_game_1 est-il actif ? Vérifiez avec docker ps -a
84343f81034f pwn3server "/opt/pwn3/setup/gam…" 0.0.0.0:3000-3010->3000-3010/tcp, 5432/tcp pwnadventure3_game_1docker-compose up : line 1: 7 Killed ./PwnAdventure3Server; pwnadventure3_game_1 exited with code 137
Ces versions ont été utilisées lors des tests sur un hôte :
$ uname -a
Linux ubuntu 4.4.0-31-generic #50~14.04.1-Ubuntu SMP Wed Jul 13 01:07:32 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
$ docker-compose version
docker-compose version 1.19.0, build 9e633ef
docker-py version: 2.7.0
CPython version: 2.7.13
OpenSSL version: OpenSSL 1.0.1t 3 May 2016
$ docker --version
Docker version 17.12.1-ce, build 7390fc6
Les vrais héros sont les personnes qui ont construit le jeu <3
Pwn Adventure 3 est le fruit de l'esprit de Rusty Wagner. Il est responsable de l'idée, de la planification et de presque toute l'exécution (programmation, conception des niveaux, quêtes, etc.). Sans lui, il n'y aurait pas de jeu ! Un merci spécial également aux organisateurs de Ghost in the Shellcode pour leur soutien lors du développement et des tests.
Par Vector35 - https://vector35.com/ (la société derrière le célèbre désassembleur Binary Ninja)