
PwnAdventure3 Server
Willkommen auf Pwnie Island!
Pwn Adventure 3: Pwnie Island ist ein limitiert veröffentlichtes First-Person-MMORPG in einer echten offenen Welt auf einer wunderschönen Insel, auf der alles passieren kann. Das liegt daran, dass dieses Spiel absichtlich anfällig für alle möglichen albernen Hacks ist! Fliegen, endloses Geld und mehr sind nur eine Client-Änderung oder einen Netzwerk-Proxy entfernt. Bist du bereit für das Chaos?!
Dieses Setup ist Teil einer Videoreihe, die die verschiedenen Hacks und Herausforderungen in diesem Spiel behandelt.
Abgesehen vom lockeren Let's Play am Anfang deckt die gesamte Reihe alle Herausforderungen von Pwn Adventure 3 in weniger als 4 Stunden ab.
Aus der offiziellen README:
Mindestens 2 GB RAM, mehr RAM ermöglicht das Ausführen weiterer Instanzen auf einem einzigen Rechner
Der Spielserver benötigt keine Grafikhardware und läuft rein auf der Konsole. Es ist bekannt, dass er auf Amazon AWS- und Digital Ocean VPS-Instanzen gut läuft.
Der Spielserver benötigt viel RAM zum Laufen, nutzt aber Fork und Copy-on-Write-Speicher, um viele Instanzen auf einem einzigen Host ausführen zu können.
Für einen Server mit 2 GB RAM wird nicht empfohlen, mehr als 5 Instanzen auszuführen, aber ein Server mit 8 GB RAM kann in der Regel so viele ausführen, wie die CPU bewältigen kann.
Es wird empfohlen, 2–3 Instanzen pro CPU-Kern zu verwenden, falls ausreichend RAM vorhanden ist. Möglicherweise können Sie 4–5 Instanzen pro Kern ausführen, dies kann jedoch zu leichten Verzögerungen führen.
Die Dateien für Client und Server sind ebenfalls über 2 GB groß, daher sind mehrere GB freier Speicherplatz erforderlich.
Es gibt mehrere Möglichkeiten, einen eigenen Server zu erstellen und bereitzustellen.
Eine Möglichkeit ist es, die Anweisungen in der README der offiziellen Dateien herunterzuladen und zu befolgen. Der Download ist auf der offiziellen Website hier zu finden: http://www.pwnadventure.com/#server.
@Beaujeant hat eine hervorragende und leicht verständliche Schritt-für-Schritt-Anleitung erstellt. Sie war auch die Grundlage für das Erstellen des Docker-Images aus Option 3. Die Anleitung ist hier zu finden: https://github.com/beaujeant/PwnAdventure3/blob/master/INSTALL-server.md.
Diese Option ist super einfach, solange docker und docker-compose auf einem Host installiert sind. Sie ermöglicht es, einen Server einfach zu starten und herunterzufahren, ohne Änderungen am eigentlichen Hostsystem vorzunehmen.
Sammle zunächst alle notwendigen Dateien:
git clone https://github.com/LiveOverflow/PwnAdventure3.git
cd PwnAdventure3
wget http://pwnadventure.com/pwn3.tar.gz
tar -xvf pwn3.tar.gz
Um den Server auszuführen, müssen docker und docker-compose installiert sein. Docker entwickelt sich schnell weiter, daher ist es eine gute Idee, den aktuellen offiziellen Schritten zur Installation zu folgen (dies könnte auch das Entfernen einer älteren Systemversion von Docker beinhalten):
docker-compose: https://docs.docker.com/compose/install/docker-Gruppe ist, mit: sudo usermod -a -G docker $USER. Neustarten oder erneut anmelden und mit id überprüfen, ob der Benutzer Teil der Docker-Gruppe ist.Dann baue einfach das Image und starte den Master- und den Game-Server:
docker-compose build
docker-compose up
docker-compose up kann auch im getrennten/Hintergrundmodus mit -d ausgeführt werden.
Lade zunächst den Client von der offiziellen Website hier herunter: http://www.pwnadventure.com/#downloads
Um einen Client mit dem neuen Server zu verbinden, muss die server.ini des Clients geändert werden. Der mit Docker gestartete Server erwartet, dass die Hostnamen master.pwn3 und game.pwn3 verwendet werden (Diese könnten theoretisch in den Docker/Setup-Dateien geändert werden).
Die server.ini des Clients sollte etwa so aussehen:
[MasterServer]
Hostname=master.pwn3
Port=3333
[GameServer]
Hostname=game.pwn3
Port=3000
Username=
Password=
Instances=
Stelle sicher, dass der Client diese Hosts erreichen kann, zum Beispiel durch Hinzufügen zur /etc/hosts-Datei. In diesem Beispiel läuft der Server auf 192.168.178.57 und die Einträge wären:
192.168.178.57 master.pwn3
192.168.178.57 game.pwn3
Warnung: Die Verwendung einer IP als Hostname in der server.ini funktioniert nicht! Ich habe 2 Stunden gebraucht, um herauszufinden, was falsch war.
Um den Server zu stoppen, gib einfach docker-compose down ein.
Warnung: Die Datenbankdatei ist nicht persistent – das Herunterfahren des Containers setzt alles zurück. Also zuerst ein Backup erstellen.
$ 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
A: Besorge mehr Speicherplatz.
$ docker-compose build
Building init
ERROR: Couldn't connect to Docker daemon at http+docker://localunixsocket - is it running?
A: Dein Benutzer ist wahrscheinlich nicht in der docker-Gruppe oder der Docker-Dienst läuft nicht. sudo usermod -a -G docker pwn3, überprüfe mit id. Oder service docker restart.
Überprüfe, ob das Archiv beschädigt ist
$ md5sum pwn3.tar.gz
d3f296461fa57996018ce0e4e5a653ee pwn3.tar.gz
$ sha1sum pwn3.tar.gz
022bd5174286fd78cd113bc6da6d37ae9af1ae8e pwn3.tar.gz
Verbindungsfehler: Verbindung zum Master-Server fehlgeschlagen
Das bedeutet wahrscheinlich, dass der Master-Server nicht erreichbar ist.
[MasterServer]-Eintrag in der server.ini des Clientsmaster.pwn3 von deinem System aus anpingen?/etc/hosts-Datei korrekt?3333?sudo netstat -tulpn
tcp6 0 0 :::3333 :::* LISTEN 31913/docker-proxydocker ps, ob die beiden Container laufen
880f93374070 pwn3server "/opt/pwn3/setup/mas…" 0.0.0.0:3333->3333/tcp, 5432/tcp pwnadventure3_master_1Warte in der Verbindungswarteschlange...
Das bedeutet, dass der Master-Server erreichbar ist und nun auf einen freien Game-Server wartet, der dem Client zugewiesen werden kann. Das bedeutet wahrscheinlich, dass kein Game-Server läuft oder sich nicht mit dem Master-Server verbinden konnte.
3000-3005?sudo netstat -tulpn
tcp6 0 0 :::3000 :::* LISTEN 32160/docker-proxypwnadventure3_game_1? Überprüfe mit 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
Diese Versionen wurden während des Testens auf einem Host verwendet:
$ 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
Die wahren Helden sind die Leute, die das Spiel gebaut haben <3
Pwn Adventure 3 ist das geistige Kind von Rusty Wagner. Er ist verantwortlich für die Idee, die Planung und fast die gesamte Umsetzung (Programmierung, Leveldesign, Quests und so weiter). Ohne ihn gäbe es kein Spiel! Besonderer Dank gilt auch den Organisatoren von Ghost in the Shellcode für ihre Unterstützung während der Entwicklung und des Testens.
Von Vector35 - https://vector35.com/ (dem Unternehmen hinter dem beliebten Disassembler Binary Ninja)