
PwnAdventure3 Server
Bem-vindo à Ilha Pwnie!
Pwn Adventure 3: Pwnie Island é um MMORPG de mundo aberto verdadeiro, em primeira pessoa, de edição limitada, ambientado em uma bela ilha onde qualquer coisa pode acontecer. Isso porque este jogo é intencionalmente vulnerável a todo tipo de hacks bobos! Voar, dinheiro infinito e muito mais estão a apenas uma alteração no cliente ou um proxy de rede de distância. Você está pronto para o caos?!
Esta configuração faz parte de uma série de vídeos que cobre os diferentes hacks e desafios deste jogo.
Excluindo o casual "Let's Play" no início, a série inteira cobre todos os desafios do Pwn Adventure 3 em menos de 4 horas.
Do README oficial:
Pelo menos 2GB de RAM, mais RAM permitirá executar mais instâncias em uma única máquina
O Servidor de Jogo não precisa de hardware gráfico e funciona puramente no console. Sabe-se que funciona bem em instâncias Amazon AWS e Digital Ocean VPS.
O Servidor de Jogo requer muita RAM para executar, mas usa fork e memória copy-on-write para permitir que muitas instâncias sejam executadas em um único host.
Para um servidor com 2GB de RAM, não é recomendado executar mais de 5 instâncias, mas um servidor com 8GB de RAM pode normalmente executar tantas quanto a CPU conseguir suportar.
Recomenda-se usar 2-3 instâncias por núcleo de CPU se você tiver RAM suficiente. Você pode ser capaz de executar 4-5 instâncias por núcleo, mas isso pode introduzir leve lag.
Os arquivos para o cliente e servidor têm mais de 2GB também, então vários GB de espaço livre em disco são necessários.
Existem várias maneiras de construir e implantar seu próprio servidor.
Uma opção é baixar e seguir as instruções incluídas no README dos arquivos oficiais. O download pode ser encontrado no site oficial aqui http://www.pwnadventure.com/#server.
@Beaujeant criou um excelente guia passo a passo, fácil de seguir. Também foi a base para construir a imagem docker da Opção 3. O guia pode ser encontrado aqui: https://github.com/beaujeant/PwnAdventure3/blob/master/INSTALL-server.md.
Esta opção é super fácil, desde que docker e docker-compose estejam instalados em um host. Torna fácil executar e derrubar um servidor, sem fazer alterações no sistema host real.
Primeiro, colete todos os arquivos necessários:
git clone https://github.com/LiveOverflow/PwnAdventure3.git
cd PwnAdventure3
wget http://pwnadventure.com/pwn3.tar.gz
tar -xvf pwn3.tar.gz
Para executar o servidor, docker e docker-compose precisam estar instalados. Docker está evoluindo rápido, então é uma boa ideia seguir os passos oficiais atuais para instalação (que também podem incluir remover uma versão mais antiga do sistema do docker):
docker-compose: https://docs.docker.com/compose/install/docker com: sudo usermod -a -G docker $USER. reinicie ou faça login novamente e verifique com id se o usuário está no grupo docker.Então basta construir a imagem e iniciar o servidor mestre e de jogo:
docker-compose build
docker-compose up
docker-compose up também pode ser executado em modo destacado/background com -d.
Primeiro baixe o cliente do site oficial aqui: http://www.pwnadventure.com/#downloads
Para conectar um cliente ao novo servidor, o server.ini do cliente precisa ser modificado. O servidor iniciado com docker espera que os hostnames master.pwn3 e game.pwn3 sejam usados (Isso poderia teoricamente ser alterado nos arquivos docker/setup).
O server.ini para o cliente deve se parecer com algo assim:
[MasterServer]
Hostname=master.pwn3
Port=3333
[GameServer]
Hostname=game.pwn3
Port=3000
Username=
Password=
Instances=
Certifique-se de que o cliente consegue alcançar esses hosts, por exemplo adicionando-os ao arquivo /etc/hosts. Neste exemplo, o servidor está rodando em 192.168.178.57 e a entrada para eles seria:
192.168.178.57 master.pwn3
192.168.178.57 game.pwn3
Aviso: Usar um IP como Hostname no server.ini não funciona! Passei 2 horas tentando descobrir o que estava errado.
Para parar o servidor, basta digitar docker-compose down.
Aviso: O arquivo de banco de dados não é persistente - derrubar o contêiner redefine tudo. Então faça backup primeiro.
$ 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: Obtenha mais espaço em disco.
$ docker-compose build
Building init
ERROR: Couldn't connect to Docker daemon at http+docker://localunixsocket - is it running?
R: Provavelmente seu usuário não faz parte do grupo docker ou o serviço docker não está rodando. sudo usermod -a -G docker pwn3, verifique com id. Ou service docker restart.
Verifique se o arquivo está corrompido
$ md5sum pwn3.tar.gz
d3f296461fa57996018ce0e4e5a653ee pwn3.tar.gz
$ sha1sum pwn3.tar.gz
022bd5174286fd78cd113bc6da6d37ae9af1ae8e pwn3.tar.gz
Erro de Conexão: Unable to connect to master server
Isso provavelmente significa que o MasterServer não está acessível.
[MasterServer] no server.ini do clientemaster.pwn3 a partir do seu sistema?/etc/hosts?3333?sudo netstat -tulpn
tcp6 0 0 :::3333 :::* LISTEN 31913/docker-proxydocker ps se os dois contêineres estão ativos
880f93374070 pwn3server "/opt/pwn3/setup/mas…" 0.0.0.0:3333->3333/tcp, 5432/tcp pwnadventure3_master_1Waiting in connection queue...
Isso significa que o MasterServer está acessível e está aguardando um GameServer livre que possa ser atribuído ao cliente. Isso provavelmente significa que nenhum GameServer está rodando, ou não conseguiu se conectar ao MasterServer.
3000-3005?sudo netstat -tulpn
tcp6 0 0 :::3000 :::* LISTEN 32160/docker-proxypwnadventure3_game_1 está rodando? Verifique com 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
Estas versões foram usadas durante os testes como host:
$ 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
Os verdadeiros heróis são as pessoas que construíram o jogo <3
Pwn Adventure 3 é a criação de Rusty Wagner. Ele é responsável pela ideia, pelo planejamento e por quase toda a execução (programação, design de níveis, missões e assim por diante). Sem ele, não haveria jogo! Agradecimentos especiais também vão para os organizadores do Ghost in the Shellcode pelo apoio durante o desenvolvimento e testes.
Por Vector35 - https://vector35.com/ (a empresa por trás do popular desassemblador Binary Ninja)