
PwnAdventure3 서버
Pwnie 섬에 오신 것을 환영합니다!
Pwn Adventure 3: Pwnie Island는 한정 출시된 1인칭 진정한 오픈 월드 MMORPG로, 아름다운 섬에서 어떤 일이든 일어날 수 있습니다. 이 게임은 의도적으로 모든 종류의 해킹에 취약하게 설계되었기 때문입니다! 비행, 무한 골드 등은 모두 클라이언트 변경이나 네트워크 프록시 하나만 있으면 가능합니다. 대혼란에 대비하셨나요?!
이 설정은 이 게임의 다양한 해킹과 도전 과제를 다루는 비디오 시리즈의 일부입니다.
처음의 캐주얼 Let's Play를 제외하고, 전체 시리즈는 4시간 미만으로 Pwn Adventure 3의 모든 도전 과제를 다룹니다.
공식 README에서:
자체 서버를 구축하고 배포하는 방법은 여러 가지가 있습니다.
한 가지 옵션은 공식 파일의 README에 포함된 지침을 다운로드하여 따르는 것입니다. 다운로드는 공식 웹사이트 http://www.pwnadventure.com/#server에서 찾을 수 있습니다.
@Beaujeant님이 훌륭하고 따라하기 쉬운 단계별 가이드를 만들었습니다. 또한 옵션 3의 도커 이미지를 구축하는 기초가 되었습니다. 가이드는 여기: https://github.com/beaujeant/PwnAdventure3/blob/master/INSTALL-server.md에서 찾을 수 있습니다.
이 옵션은 호스트에 docker와 docker-compose가 설치되어 있기만 하면 매우 쉽습니다. 실제 호스트 시스템을 변경하지 않고 서버를 실행하고 종료하기 쉽습니다.
먼저 필요한 모든 파일을 모으십시오:
git clone https://github.com/LiveOverflow/PwnAdventure3.git
cd PwnAdventure3
wget http://pwnadventure.com/pwn3.tar.gz
tar -xvf pwn3.tar.gz
서버를 실행하려면 docker와 docker-compose를 설치해야 합니다. Docker는 빠르게 발전하고 있으므로, 현재 공식 설치 단계를 따르는 것이 좋습니다 (여기에는 이전 시스템 버전의 docker를 제거하는 것도 포함될 수 있습니다):
docker-compose: https://docs.docker.com/compose/install/docker 그룹에 속해 있는지 확인: sudo usermod -a -G docker $USER. 재시작 또는 재로그인 후 id로 사용자가 docker 그룹에 속해 있는지 확인하십시오.그런 다음 간단히 이미지를 빌드하고 마스터 및 게임 서버를 시작합니다:
docker-compose build
docker-compose up
docker-compose up은 -d 옵션으로 분리/백그라운드 모드로 실행할 수도 있습니다.
먼저 공식 웹사이트 http://www.pwnadventure.com/#downloads에서 클라이언트를 다운로드하십시오.
새 서버에 연결할 클라이언트를 얻으려면 클라이언트의 server.ini를 수정해야 합니다. docker로 실행된 서버는 호스트 이름 master.pwn3와 game.pwn3가 사용되기를 기대합니다 (이론적으로 docker/설정 파일에서 변경할 수 있습니다).
클라이언트의 server.ini는 다음과 같아야 합니다:
[MasterServer]
Hostname=master.pwn3
Port=3333
[GameServer]
Hostname=game.pwn3
Port=3000
Username=
Password=
Instances=
클라이언트가 이러한 호스트에 도달할 수 있는지 확인하십시오. 예를 들어 /etc/hosts 파일에 추가하면 됩니다. 이 예에서는 서버가 192.168.178.57에서 실행 중이며, 항목은 다음과 같습니다:
192.168.178.57 master.pwn3
192.168.178.57 game.pwn3
경고: server.ini에서 Hostname으로 IP를 사용하면 작동하지 않습니다! 문제가 무엇인지 알아내는 데 2시간을 보냈습니다.
서버를 중지하려면 docker-compose down을 입력하십시오.
경고: 데이터베이스 파일은 영구적이지 않습니다 - 컨테이너를 내리면 모든 것이 재설정됩니다. 그러므로 먼저 백업하십시오.
$ 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: 디스크 공간을 확보하십시오.
$ docker-compose build
Building init
ERROR: Couldn't connect to Docker daemon at http+docker://localunixsocket - is it running?
A: 사용자가 docker 그룹에 속해 있지 않거나 docker 서비스가 실행 중이 아닐 수 있습니다. sudo usermod -a -G docker pwn3, id로 확인. 또는 service docker restart.
아카이브가 손상되었는지 확인
$ md5sum pwn3.tar.gz
d3f296461fa57996018ce0e4e5a653ee pwn3.tar.gz
$ sha1sum pwn3.tar.gz
022bd5174286fd78cd113bc6da6d37ae9af1ae8e pwn3.tar.gz
연결 오류: 마스터 서버에 연결할 수 없음
이는 MasterServer에 연결할 수 없음을 의미합니다.
server.ini에서 [MasterServer] 항목을 확인하십시오.master.pwn3에 ping이 되는지 확인하십시오?/etc/hosts 파일의 IP가 올바른가요?3333에서 수신하지 않나요?sudo netstat -tulpn으로 확인
tcp6 0 0 :::3333 :::* LISTEN 31913/docker-proxydocker ps로 두 컨테이너가 실행 중인지 확인
880f93374070 pwn3server "/opt/pwn3/setup/mas…" 0.0.0.0:3333->3333/tcp, 5432/tcp pwnadventure3_master_1연결 대기열에서 대기 중...
이는 MasterServer에 연결할 수 있고 현재 클라이언트에 할당할 수 있는 여유 GameServer를 기다리고 있음을 의미합니다. 이는 아마도 GameServer가 실행 중이 아니거나 MasterServer에 연결할 수 없었음을 의미합니다.
3000-3005에서 수신 중인가?sudo netstat -tulpn으로 수신 프로세스 확인
tcp6 0 0 :::3000 :::* LISTEN 32160/docker-proxypwnadventure3_game_1 컨테이너가 실행 중인가? 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
다음 버전은 호스트로 테스트 중에 사용되었습니다:
$ 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
진정한 영웅은 게임을 만든 사람들입니다 <3
Pwn Adventure 3는 Rusty Wagner의 아이디어입니다. 그는 아이디어, 계획 및 거의 모든 실행(프로그래밍, 레벨 디자인, 퀘스트 등)을 담당했습니다. 그가 없었다면 게임은 없었을 것입니다! 또한 개발 및 테스트 중 지원을 해준 Ghost in the Shellcode 운영자에게 특별히 감사드립니다.
Vector35 제공 - https://vector35.com/ (인기 있는 디스어셈블러 Binary Ninja의 회사)