Git Product home page Git Product logo

pwnadventure3's People

Contributors

bennieboj avatar liveoverflow avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

pwnadventure3's Issues

Game client stuck in checking updates

When I start the game launcher, it freezes in the screen checking for updates and I don't know how to fix that. Anyone has been able to runnig the game

How to backup game progress

Hi everyone, I set up my private server successful, but I lose my game progress every time i stop the docker compose, I want to know how can i backup the game progress

error while loading shared libraries: libssl.so.1.0.0 and libcrypto.so.1.0.0

Screenshot from 2020-01-07 16-09-04
Steps to reproduce:

  1. Download client ( main game file ) http://www.pwnadventure.com/PwnAdventure3_Linux.zip
  2. Download launcher ( hidden inside webpage ) [http://www.pwnadventure.com/PwnAdventure3_Launcher_Linux.zip
  3. Extract both into seperate folders and copy PwnAdventure3 from client to PwnAdventure3_data folder
    Screenshot from 2020-01-07 16-15-11
  4. Starting with the launcher keeps waiting in 'Checking for update' ( forever)
    Screenshot from 2020-01-07 16-16-29
  5. Starting the game manually from inside the folder gives this error.

Notes:
I researched about this and found out "libssl.so.1.0.0" has security issues thats why it has been removed.

My system:
Linux pop-os 5.3.0-20-generic #21+system76157230485419.10~8caa3e6-Ubuntu SMP Tue Oct 29 00:4 x86_64 x86_64 x86_64 GNU/Linux

failed to build: Unknown flag: chown

Step 6/7 : ADD --chown=pwn3 server/MasterServer/initdb.sql $PWN3/initdb.sql ERROR: compose.cli.main.main: Service 'init' failed to build: Unknown flag: chown

I haven't looked into this issue but anyone wanting a quick work around just remove --chown from the dockerfile.

My quick test allows it to work and doesn't appear to have any permission errors.

Docker on Windows: exec user process caused "no such file or directory"

I followed the instructions on Windows.. I had to use 7zip to extract the .tar.gz, and initially I put it in a folder named pwn3 but that failed to build. So I moved the contents (client/server folders) up to the main folder and now I get this:

PS M:\Games\PwnAdventure3\DockerServer> docker-compose.exe up
Starting dockerserver_init_1 ... done
Starting dockerserver_master_1 ... done
Starting dockerserver_game_1   ... done
Attaching to dockerserver_init_1, dockerserver_master_1, dockerserver_game_1
: No such file or directory
game_1    | standard_init_linux.go:190: exec user process caused "no such file or directory"
dockerserver_master_1 exited with code 127
dockerserver_init_1 exited with code 0
dockerserver_game_1 exited with code 1

I'll post back if I figure out what's up, but I thought it worth having here in case others hit the same issue. There are lots of suggestions online about what this might be (from missing Bash, to Linux newlines) but I don't think any of those are it.

filname error

the setup directory should be renamed to postgres-data to be able to run docker-compose up,

SIGSEGV: invalid attempt to access memory at address 0x00001011 on ArchLinux

part5_walking_speed_test.cpp.txt

fails with

Thread 1 "PwnAdventure3-L" received signal SIGSEGV, Segmentation fault.
0x00007ffff7bd674c in World::Tick (this=0x7acb950, f=0.0305555463) at part5_walking_speed.cpp:22
22 player->m_walkingSpeed = 999;
(gdb) bt
#0 0x00007ffff7bd674c in World::Tick (this=0x7acb950, f=0.0305555463) at part5_walking_speed.cpp:22
#1 0x00007ffff7461345 in GameAPI::Tick (this=0xbc49bd8, deltaTime=0.0305555463) at GameLogic.cpp:743
#2 0x0000000001405919 in ?? ()
#3 0x0000000000531a09 in ?? ()
#4 0x0000000000531045 in ?? ()
#5 0x000000000053126e in ?? ()
#6 0x00000000005d86e5 in ?? ()
#7 0x0000000001407762 in ?? ()
#8 0x0000000001406d93 in ?? ()
#9 0x000000000120839b in ?? ()
#10 0x000000000115a730 in ?? ()
#11 0x000000000049242a in ?? ()
#12 0x00000000004969da in ?? ()
#13 0x00007ffff61ba06b in __libc_start_main () from /usr/lib/libc.so.6
#14 0x000000000048f4cc in ?? ()
#15 0x00007fffffffdd28 in ?? ()
#16 0x000000000000001c in ?? ()
#17 0x0000000000000001 in ?? ()
#18 0x00007fffffffe0af in ?? ()
#19 0x0000000000000000 in ?? ()

Running 4 x86_64 processors (8 logical cores)
Exception was "SIGSEGV: invalid attempt to access memory at address 0x00001011"

Unknown!./PwnAdventure3-Linux-Shipping() [0x550162] + some bytes Unknown!./PwnAdventure3-Linux-Shipping() [0x496110] + some bytes Unknown!./PwnAdventure3-Linux-Shipping() [0x551d4c] + some bytes Unknown!/usr/lib/libpthread.so.0(+0x11a80) [0x7f9416e4ea80] + some bytes Unknown!World::Tick(float) + some bytes Unknown!GameAPI::Tick(float) + some bytes Unknown!./PwnAdventure3-Linux-Shipping() [0x1405919] + some bytes Unknown!./PwnAdventure3-Linux-Shipping() [0x531a09] + some bytes Unknown!./PwnAdventure3-Linux-Shipping() [0x531045] + some bytes Unknown!./PwnAdventure3-Linux-Shipping() [0x53126e] + some bytes Unknown!./PwnAdventure3-Linux-Shipping() [0x5d86e5] + some bytes Unknown!./PwnAdventure3-Linux-Shipping() [0x1407762] + some bytes Unknown!./PwnAdventure3-Linux-Shipping() [0x1406d93] + some bytes Unknown!./PwnAdventure3-Linux-Shipping() [0x120839b] + some bytes Unknown!./PwnAdventure3-Linux-Shipping() [0x115a730] + some bytes Unknown!./PwnAdventure3-Linux-Shipping() [0x49242a] + some bytes Unknown!./PwnAdventure3-Linux-Shipping() [0x4969da] + some bytes Unknown!/usr/lib/libc.so.6(__libc_start_main+0xeb) [0x7f941563f06b] + some bytes Unknown!./PwnAdventure3-Linux-Shipping() [0x48f4cc] + some bytes 0 loaded modules Report end!

Sorry if I should add more information this is my first time sending a bug report

error when docker compose

I get this error after docker compose anyone can help me ?

~/PwnAdventure3$ docker-compose build
/usr/lib/python3/dist-packages/requests/init.py:87: RequestsDependencyWarning: urllib3 (2.0.5) or chardet (5.2.0) doesn't match a supported version!
warnings.warn("urllib3 ({}) or chardet ({}) doesn't match a supported "
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/docker/api/client.py", line 214, in _retrieve_server_version
return self.version(api_version=False)["ApiVersion"]
File "/usr/lib/python3/dist-packages/docker/api/daemon.py", line 181, in version
return self._result(self._get(url), json=True)
File "/usr/lib/python3/dist-packages/docker/utils/decorators.py", line 46, in inner
return f(self, *args, **kwargs)
File "/usr/lib/python3/dist-packages/docker/api/client.py", line 237, in _get
return self.get(url, **self._set_request_timeout(kwargs))
File "/usr/lib/python3/dist-packages/requests/sessions.py", line 557, in get
return self.request('GET', url, **kwargs)
File "/usr/lib/python3/dist-packages/requests/sessions.py", line 544, in request
resp = self.send(prep, **send_kwargs)
File "/usr/lib/python3/dist-packages/requests/sessions.py", line 657, in send
r = adapter.send(request, **kwargs)
File "/usr/lib/python3/dist-packages/requests/adapters.py", line 439, in send
resp = conn.urlopen(
File "/home/xoxo/.local/lib/python3.10/site-packages/urllib3/connectionpool.py", line 790, in urlopen
response = self._make_request(
File "/home/xoxo/.local/lib/python3.10/site-packages/urllib3/connectionpool.py", line 496, in _make_request
conn.request(
TypeError: HTTPConnection.request() got an unexpected keyword argument 'chunked'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/usr/bin/docker-compose", line 33, in
sys.exit(load_entry_point('docker-compose==1.29.2', 'console_scripts', 'docker-compose')())
File "/usr/lib/python3/dist-packages/compose/cli/main.py", line 81, in main
command_func()
File "/usr/lib/python3/dist-packages/compose/cli/main.py", line 200, in perform_command
project = project_from_options('.', options)
File "/usr/lib/python3/dist-packages/compose/cli/command.py", line 60, in project_from_options
return get_project(
File "/usr/lib/python3/dist-packages/compose/cli/command.py", line 152, in get_project
client = get_client(
File "/usr/lib/python3/dist-packages/compose/cli/docker_client.py", line 41, in get_client
client = docker_client(
File "/usr/lib/python3/dist-packages/compose/cli/docker_client.py", line 170, in docker_client
client = APIClient(use_ssh_client=not use_paramiko_ssh, **kwargs)
File "/usr/lib/python3/dist-packages/docker/api/client.py", line 197, in init
self._version = self._retrieve_server_version()
File "/usr/lib/python3/dist-packages/docker/api/client.py", line 221, in _retrieve_server_version
raise DockerException(
docker.errors.DockerException: Error while fetching server API version: HTTPConnection.request() got an unexpected keyword argument 'chunked'

Linux client not working

Has anyone else problems with the Linux client ? I've tried to make it work with several Ubuntu version (14.04, 18.04, 19.04) and with two hypervisors (VMware and VirtualBox) and I couldn't. Depending on the hypervisor chosen, either it causes a crash or a freeze.

I've also tried to use the old client version provided in this guide, but it freezes in the "Checking for updates" part.

The Windows client works well at least, but it seems harder to exploit the VM.

master_1 | bash: ./MasterServer: cannot execute binary file: Exec format error

When I run the command docker-compose up after building successfully I get the error:
master_1 | bash: ./MasterServer: cannot execute binary file: Exec format error
I'm trying to setup this Pwn Adventure 3 server on a Raspberry Pi 4 with 4GB of RAM.
I of course looked at the internet for answers and what I found out was that you apparently can't run the Pwn Server on the RPi's ARM64 architecture?
Is there no way to run the server successfully on RPi?
Here is the whole output:

pwn3@ubuntu:~/PwnAdventure3$ docker-compose up Creating pwnadventure3_init_1 ... done Creating pwnadventure3_master_1 ... done Creating pwnadventure3_game_1 ... done Attaching to pwnadventure3_init_1, pwnadventure3_master_1, pwnadventure3_game_1 pwnadventure3_init_1 exited with code 0 master_1 | * Starting PostgreSQL 9.3 database server game_1 | bash: ./PwnAdventure3Server: cannot execute binary file: Exec format error pwnadventure3_game_1 exited with code 126 master_1 | ...done. master_1 | CREATE ROLE master_1 | CREATE DATABASE master_1 | GRANT master_1 | rm: cannot remove '/opt/pwn3/client/PwnAdventure3_Data/PwnAdventure3/PwnAdventure3/Saved/Logs/*': No such file or directory master_1 | No backup data found! master_1 | psql:/opt/pwn3/initdb.sql:1: NOTICE: table "users" does not exist, skipping master_1 | DROP TABLE master_1 | DROP TABLE master_1 | DROP TABLE master_1 | DROP TABLE master_1 | psql:/opt/pwn3/initdb.sql:2: NOTICE: table "teams" does not exist, skipping master_1 | psql:/opt/pwn3/initdb.sql:3: NOTICE: table "team_state" does not exist, skipping master_1 | DROP TABLE master_1 | psql:/opt/pwn3/initdb.sql:4: NOTICE: table "characters" does not exist, skipping master_1 | psql:/opt/pwn3/initdb.sql:5: NOTICE: table "char_items" does not exist, skipping master_1 | psql:/opt/pwn3/initdb.sql:6: NOTICE: table "char_slots" does not exist, skipping master_1 | DROP TABLE master_1 | psql:/opt/pwn3/initdb.sql:7: NOTICE: table "char_quests" does not exist, skipping master_1 | DROP TABLE master_1 | psql:/opt/pwn3/initdb.sql:8: NOTICE: table "char_pickups" does not exist, skipping master_1 | DROP TABLE master_1 | psql:/opt/pwn3/initdb.sql:9: NOTICE: table "names" does not exist, skipping master_1 | DROP TABLE master_1 | psql:/opt/pwn3/initdb.sql:10: NOTICE: table "info" does not exist, skipping master_1 | DROP TABLE master_1 | CREATE TABLE master_1 | CREATE TABLE master_1 | CREATE TABLE master_1 | CREATE TABLE master_1 | CREATE TABLE master_1 | CREATE TABLE master_1 | CREATE TABLE master_1 | CREATE TABLE master_1 | CREATE TABLE master_1 | CREATE TABLE master_1 | CREATE INDEX master_1 | CREATE INDEX master_1 | CREATE INDEX master_1 | CREATE INDEX master_1 | CREATE INDEX master_1 | CREATE INDEX master_1 | CREATE INDEX master_1 | CREATE INDEX master_1 | CREATE INDEX master_1 | CREATE INDEX master_1 | CREATE INDEX master_1 | CREATE INDEX master_1 | CREATE INDEX master_1 | INSERT 0 1 master_1 | INSERT 0 1 master_1 | UPDATE 1 master_1 | UPDATE 1 master_1 | bash: ./MasterServer: cannot execute binary file: Exec format error master_1 | CREATE TABLE master_1 | DELETE 0 master_1 | INSERT 0 0 master_1 | DELETE 0 master_1 | DELETE 0 master_1 | DROP TABLE master_1 | bash: ./MasterServer: cannot execute binary file: Exec format error master_1 | bash: ./MasterServer: cannot execute binary file: Exec format error pwnadventure3_master_1 exited with code 126 pwn3@ubuntu:~/PwnAdventure3$ ls Dockerfile README.md docker-compose.yml server tools LICENSE client postgres-data setup pwn3@ubuntu:~/PwnAdventure3$ cd server/ pwn3@ubuntu:~/PwnAdventure3/server$ ls GameServer MasterServer README creds pwn3@ubuntu:~/PwnAdventure3/server$ cd MasterServer/ pwn3@ubuntu:~/PwnAdventure3/server/MasterServer$ ls MasterServer initdb.sql server.crt server.key pwn3@ubuntu:~/PwnAdventure3/server/MasterServer$ file MasterServer MasterServer: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.24, BuildID[sha1]=0279745823cef309cb0bc9a85ca686abbe61fa3f, with debug_info, not stripped pwn3@ubuntu:~/PwnAdventure3/server/MasterServer$ uname -a Linux ubuntu 5.4.0-1012-raspi #12-Ubuntu SMP Wed May 27 04:08:35 UTC 2020 aarch64 aarch64 aarch64 GNU/Linux pwn3@ubuntu:~/PwnAdventure3/server/MasterServer$ ls MasterServer initdb.sql server.crt server.key pwn3@ubuntu:~/PwnAdventure3/server/MasterServer$

`ERROR: for pwnadventure3_master_1` when doing docker-compose up

Hey there ! 😃

I have tried several times, on different Ubuntu desktop versions : 14 / 16 / 18, and everytime I get an error when doing the command sudo docker-compose up -d.

I've been following the guides : fresh VM with Ubuntu 16, updated, docker & docker-compose installed by doing copypastas from their official guides, then cloned the repo, downloaded pwnadventure3.tar.gz, extracted, ran docker-compose build and then finally docker-compose up.

While the docker-compose build command is running, I have several red notes (but I don't get if it's an error or not) :
error1
error2
and finally :
error3 (but I notice that in the video, @LiveOverflow has the same red note as the one I have in this 3rd picture).

My docker-compose build command ends with :

Successfully built edf9691aef95
Successfully tagged pwn3server:latest

So I went ahead and tried to docker-compose up, resulting in this error :
error4

Having absolutely no idea on how to solve this problem, here am I asking for your help please 😄

OSError: [Errno 28] No space left on device on docker-compose build step

when I issued docker-compose build after a few seconds I got the error below.

$ docker-compose build
Building init
Traceback (most recent call last):
  File "/usr/lib/python3.6/site-packages/docker/utils/build.py", line 180, in create_archive
    t.addfile(i, f)
  File "/usr/lib/python3.6/tarfile.py", line 1978, in addfile
    copyfileobj(fileobj, self.fileobj, tarinfo.size, bufsize=bufsize)
  File "/usr/lib/python3.6/tarfile.py", line 252, in copyfileobj
    dst.write(buf)
  File "/usr/lib/python3.6/tempfile.py", line 483, in func_wrapper
    return func(*args, **kwargs)
OSError: [Errno 28] No space left on device

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/bin/docker-compose", line 11, in <module>
    load_entry_point('docker-compose==1.21.2', 'console_scripts', 'docker-compose')()
  File "/usr/lib/python3.6/site-packages/compose/cli/main.py", line 71, in main
    command()
  File "/usr/lib/python3.6/site-packages/compose/cli/main.py", line 127, in perform_command
    handler(command, command_options)
  File "/usr/lib/python3.6/site-packages/compose/cli/main.py", line 282, in build
    gzip=options.get('--compress', False),
  File "/usr/lib/python3.6/site-packages/compose/project.py", line 373, in build
    service.build(no_cache, pull, force_rm, memory, build_args, gzip)
  File "/usr/lib/python3.6/site-packages/compose/service.py", line 1047, in build
    platform=platform,
  File "/usr/lib/python3.6/site-packages/docker/api/build.py", line 154, in build
    path, exclude=exclude, dockerfile=dockerfile, gzip=gzip
  File "/usr/lib/python3.6/site-packages/docker/utils/build.py", line 31, in tar
    root=root, fileobj=fileobj, gzip=gzip, extra_files=extra_files
  File "/usr/lib/python3.6/site-packages/docker/utils/build.py", line 183, in create_archive
    'Can not read file in context: {}'.format(full_path)
OSError: Can not read file in context: /home/makiftasova/github/PwnAdventure3/pwn3.tar.gz

and

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
dev             3.9G     0  3.9G   0% /dev
run             3.9G  1.2M  3.9G   1% /run
/dev/sda6        40G   26G   12G  70% /
tmpfs           3.9G  6.6M  3.9G   1% /dev/shm
tmpfs           3.9G     0  3.9G   0% /sys/fs/cgroup
tmpfs           3.9G  332K  3.9G   1% /tmp
/dev/sda3       2.0G   60M  1.8G   4% /boot
/dev/sda5       439G  150G  267G  36% /home
tmpfs           789M   20K  789M   1% /run/user/120
tmpfs           789M   16K  789M   1% /run/user/1000

After some digging, I find out docker-compose complains about the size of temp directory (which is mounted to /tmp and RAM backed in my case) (see: https://stackoverflow.com/q/38619286 )

also # mount -o remount,size=7G,noatime /tmp was enough to solve the issue in my case. (I beleive docker-compose tries to create a temporary archive around 5GB and my default tmpfs size is 4GB)

PS. onening this issue for future reference only, I've managed to run server on my old Asus k53sv with 8GB of RAM

OS: ArchLinux x86_64 (linux 4.17.2-1 & systemd 238.133-4)
Docker Version: 18.05.0-ce build f150324782

bash: /opt/pwn3/server/creds: Permission denied

I installed the docker image for the first time and tried running it by following the step-by-step guid, but
after sending the command docker-compose up there comes this error

bash: /opt/pwn3/server/creds: Permission denied

I tried using sudo but it made no difference.

Full docker-compose up history bevor the error:

Lorem@Ispum:~/PwnAdventure3$ docker-compose up
Starting pwnadventure3_init_1 ... done
Starting pwnadventure3_master_1 ... done
Starting pwnadventure3_game_1 ... done
Attaching to pwnadventure3_init_1, pwnadventure3_master_1, pwnadventure3_game_1
master_1 | * Starting PostgreSQL 9.3 database server
pwnadventure3_init_1 exited with code 0
game_1 | FMallocCrash overhead is 3780608 bytes
game_1 | bash: line 1: 9 Segmentation fault ./PwnAdventure3Server
pwnadventure3_game_1 exited with code 139
master_1 | ...done.
master_1 | psql:/opt/pwn3/setup/postgres_init.sql:1: ERROR: role "pwn3" already exists
master_1 | psql:/opt/pwn3/setup/postgres_init.sql:2: ERROR: database "master" already exists
master_1 | GRANT
master_1 | rm: cannot remove '/opt/pwn3/client/PwnAdventure3_Data/PwnAdventure3/PwnAdventure3/Saved/Logs/': No such file or directory
master_1 | No backup data found!
master_1 | DROP TABLE
master_1 | DROP TABLE
master_1 | DROP TABLE
master_1 | DROP TABLE
master_1 | DROP TABLE
master_1 | DROP TABLE
master_1 | DROP TABLE
master_1 | DROP TABLE
master_1 | DROP TABLE
master_1 | DROP TABLE
master_1 | CREATE TABLE
master_1 | CREATE TABLE
master_1 | CREATE TABLE
master_1 | CREATE TABLE
master_1 | CREATE TABLE
master_1 | CREATE TABLE
master_1 | CREATE TABLE
master_1 | CREATE TABLE
master_1 | CREATE TABLE
master_1 | CREATE TABLE
master_1 | CREATE INDEX
master_1 | CREATE INDEX
master_1 | CREATE INDEX
master_1 | CREATE INDEX
master_1 | CREATE INDEX
master_1 | CREATE INDEX
master_1 | CREATE INDEX
master_1 | CREATE INDEX
master_1 | CREATE INDEX
master_1 | CREATE INDEX
master_1 | CREATE INDEX
master_1 | CREATE INDEX
master_1 | CREATE INDEX
master_1 | INSERT 0 1
master_1 | INSERT 0 1
master_1 | UPDATE 1
master_1 | UPDATE 1
master_1 | Use the following team hash to join the admin team:
master_1 | 7509750a02d7438bb3ff
***********
master_1 | CREATE TABLE
master_1 | DELETE 0
master_1 | INSERT 0 0
master_1 | DELETE 0
master_1 | DELETE 0
master_1 | DROP TABLE
master_1 | bash: /opt/pwn3/server/creds: Permission denied

Failed to load master server certificate

I've just followed the docker installation, the server is running fine, it connects to the game server and master server.
Now when I try to launch the game and join the server I just get the error Failed to load master server certificate however there is a certificate in both the master server and the client.
I'm a bit lost, thanks for any help!

Error. Docker compose up.

Screenshot_3

Creating pwnadventure3_master_1 ... error
I did everything right, all files are uploaded. Please help me.

Port Forwarding

I'm running the server in my home network. Which ports do I need to forward for it to be accessed from the internet?

Proxy can't connect to the client

So i see and write the code from the tcp proy but i've one issue, i can't establish a connection between my game and the proxy here: self.game, addr = sock.accept() idk from where it comes
Thank you for your help

Circuit Reversing

What processes the circuit's state is the GameAPI::GetCircuitOutputs.
This function is missing from the GameLogic library.
For the offline mode it's implemented in the PwnAdventure3-[Plaform]-Shipping and calls a script in the game.
For online mode it's implemented in the GameServer.
What you are looking for is the CircuitFinalStage::Update function.
If you open it up in IDA this is what you get:

char __fastcall CircuitFinalStage::Update(CircuitFinalStage *this)
{
  char v1; // al
  char v2; // al
  char v3; // al
  char v4; // al
  char v5; // r14
  char v6; // bp
  char v7; // si
  char v8; // al
  char v9; // r15
  char v10; // r8
  char v11; // dl
  char v12; // r12
  char v13; // r9
  char v14; // dl
  char v15; // al
  char v16; // r11
  char v17; // r13
  char v18; // r10
  char v19; // cl
  char v20; // al
  char v21; // r9
  char v22; // al
  char v23; // bl
  char v24; // al
  char v25; // si
  char v26; // cl
  char v27; // al
  char v28; // dl
  char v29; // al
  char v30; // al
  char v31; // al
  char v32; // cl
  char v33; // r11
  char v34; // al
  char v35; // al
  char v36; // r13
  char v37; // al
  char v38; // dl
  char v39; // al
  bool v40; // zf
  char v41; // al
  char v42; // al
  char v43; // al
  char v44; // al
  char v45; // dl
  char v46; // al
  char v47; // r14
  char v48; // al
  char v49; // cl
  char v50; // bl
  char v51; // r9
  char v52; // r8
  char v53; // r13
  char v54; // si
  char v55; // r11
  char v56; // al
  char v57; // cl
  char v58; // dl
  char v59; // r10
  char v60; // al
  bool v61; // r12
  char v62; // bl
  char v63; // r15
  char v64; // al
  char v65; // dl
  char v66; // dl
  char v67; // cl
  char v68; // r9
  char v69; // r14
  char v70; // al
  char v71; // al
  char v72; // si
  char v73; // r13
  char v74; // cl
  char v75; // r8
  char v76; // cl
  char v77; // bp
  bool v78; // r12
  char v79; // bl
  char v80; // bp
  char v81; // dl
  char v82; // bl
  char v83; // al
  bool v84; // dl
  char v85; // r11
  char v86; // r10
  char v87; // cl
  char v88; // r9
  char v89; // al
  char v90; // al
  char v91; // r15
  char v92; // r15
  bool v93; // r8
  char v94; // cl
  bool v95; // r9
  char v96; // al
  char v97; // cl
  char v98; // al
  char v99; // dl
  char v100; // dl
  bool v101; // si
  char v102; // bl
  char v103; // cl
  bool v104; // cl
  char v105; // al
  char v106; // dl
  char v107; // dl
  char v108; // r8
  char v109; // bl
  char v110; // cl
  bool v111; // r8
  char v112; // r14
  char result; // al
  char v114; // dl
  char v115; // bl
  char v116; // cl
  char v117; // [rsp+15h] [rbp-1Bh]
  char v118; // [rsp+16h] [rbp-1Ah]
  char v119; // [rsp+18h] [rbp-18h]
  char v120; // [rsp+1Ah] [rbp-16h]
  char v121; // [rsp+1Bh] [rbp-15h]
  char v122; // [rsp+1Ch] [rbp-14h]
  char v123; // [rsp+1Dh] [rbp-13h]
  char v124; // [rsp+1Eh] [rbp-12h]
  char v125; // [rsp+1Fh] [rbp-11h]
  char v126; // [rsp+1Fh] [rbp-11h]
  char v127; // [rsp+20h] [rbp-10h]
  char v128; // [rsp+20h] [rbp-10h]
  char v129; // [rsp+21h] [rbp-Fh]
  char v130; // [rsp+21h] [rbp-Fh]
  char v131; // [rsp+22h] [rbp-Eh]
  char v132; // [rsp+22h] [rbp-Eh]
  unsigned __int8 v133; // [rsp+23h] [rbp-Dh]
  char v134; // [rsp+24h] [rbp-Ch]
  char v135; // [rsp+24h] [rbp-Ch]
  char v136; // [rsp+25h] [rbp-Bh]
  char v137; // [rsp+25h] [rbp-Bh]
  char v138; // [rsp+26h] [rbp-Ah]
  char v139; // [rsp+27h] [rbp-9h]
  char v140; // [rsp+27h] [rbp-9h]
  char v141; // [rsp+28h] [rbp-8h]
  char v142; // [rsp+29h] [rbp-7h]
  unsigned __int8 v143; // [rsp+29h] [rbp-7h]
  char v144; // [rsp+2Ah] [rbp-6h]
  char v145; // [rsp+2Bh] [rbp-5h]
  char v146; // [rsp+2Bh] [rbp-5h]
  char v147; // [rsp+2Ch] [rbp-4h]
  char v148; // [rsp+2Ch] [rbp-4h]
  char v149; // [rsp+2Dh] [rbp-3h]
  char v150; // [rsp+2Dh] [rbp-3h]
  char v151; // [rsp+2Eh] [rbp-2h]
  char v152; // [rsp+2Eh] [rbp-2h]
  char v153; // [rsp+2Fh] [rbp-1h]
  char v154; // [rsp+2Fh] [rbp-1h]
  char v155; // [rsp+2Fh] [rbp-1h]

  this->m_trace[23] = this->m_input[0];
  this->m_trace[18] = this->m_input[1];
  this->m_trace[13] = this->m_input[2];
  this->m_trace[97] = this->m_input[3];
  this->m_trace[106] = this->m_input[4];
  this->m_trace[117] = this->m_input[5];
  this->m_trace[129] = this->m_input[6];
  this->m_trace[80] = this->m_input[7];
  this->m_trace[76] = this->m_input[8];
  v1 = this->m_input[9];
  v124 = v1;
  this->m_trace[69] = v1;
  v2 = this->m_input[10];
  v125 = v2;
  this->m_trace[62] = v2;
  v3 = this->m_input[11];
  v123 = v3;
  this->m_trace[55] = v3;
  v4 = this->m_input[12];
  v122 = v4;
  this->m_trace[48] = v4;
  v5 = this->m_input[13];
  this->m_trace[42] = v5;
  v6 = this->m_input[14];
  this->m_trace[35] = v6;
  v7 = this->m_input[15];
  this->m_trace[29] = v7;
  v8 = this->m_input[16];
  v147 = v8;
  this->m_trace[44] = v8;
  v9 = this->m_input[17];
  this->m_trace[37] = v9;
  v10 = this->m_input[18];
  this->m_trace[30] = v10;
  v11 = this->m_input[19];
  this->m_trace[25] = v11;
  v12 = this->m_input[20];
  this->m_trace[19] = v12;
  v13 = this->m_input[21];
  this->m_trace[15] = v13;
  this->m_trace[98] = this->m_input[22];
  this->m_trace[107] = this->m_input[23];
  this->m_trace[119] = this->m_input[24];
  this->m_trace[131] = this->m_input[25];
  v13 ^= 1u;
  v14 = v11 ^ 1;
  v15 = this->m_input[26];
  v117 = v15;
  this->m_trace[81] = v15;
  v16 = this->m_input[27];
  this->m_trace[78] = v16;
  v17 = this->m_input[28];
  this->m_trace[71] = v17;
  v18 = this->m_input[29];
  this->m_trace[64] = v18;
  v19 = this->m_input[30];
  this->m_trace[57] = v19;
  v20 = this->m_input[31];
  v153 = v20;
  this->m_trace[50] = v20;
  this->m_trace[14] = v13;
  v21 = this->m_trace[13] ^ v13;
  this->m_trace[12] = v21;
  v22 = this->m_trace[18];
  v119 = v22;
  if ( v22 )
    v22 = v12;
  v121 = v22;
  this->m_trace[17] = v22;
  this->m_trace[24] = v14;
  v23 = this->m_trace[23];
  v118 = v23;
  if ( v23 )
    v23 = v14;
  v145 = v19;
  this->m_trace[22] = v23;
  v24 = v7;
  v120 = v7;
  if ( v7 )
    v24 = v10;
  v136 = v24;
  this->m_trace[28] = v24;
  this->m_trace[34] = v6 ^ 1;
  v25 = 0;
  this->m_trace[36] = v9 ^ 1;
  v26 = 0;
  if ( v6 != 1 )
    v26 = v9 ^ 1;
  this->m_trace[33] = v26;
  this->m_trace[41] = v5 ^ 1;
  this->m_trace[43] = v147 ^ 1;
  v151 = 0;
  if ( v5 != 1 )
    v151 = v147 ^ 1;
  v142 = v14;
  v27 = 0;
  if ( v124 != 1 )
    v27 = v17 ^ 1;
  v134 = v26;
  v149 = 0;
  if ( v125 != 1 )
    v149 = v18 ^ 1;
  v129 = v27;
  v139 = v10;
  v28 = v153 ^ 1;
  v29 = v122;
  if ( v122 )
    v29 = v153 ^ 1;
  v131 = v29;
  this->m_trace[40] = v151;
  this->m_trace[49] = v28;
  v154 = v153 ^ 1;
  this->m_trace[47] = v29;
  v30 = 0;
  if ( v123 != 1 )
    v30 = v145 ^ 1;
  v127 = v30;
  this->m_trace[54] = v123 ^ 1;
  this->m_trace[56] = v145 ^ 1;
  this->m_trace[53] = v30;
  this->m_trace[61] = v125 ^ 1;
  this->m_trace[63] = v18 ^ 1;
  this->m_trace[60] = v149;
  this->m_trace[68] = v124 ^ 1;
  this->m_trace[70] = v17 ^ 1;
  this->m_trace[67] = v129;
  v31 = this->m_trace[76];
  this->m_trace[75] = this->m_trace[76] ^ 1;
  this->m_trace[77] = v16 ^ 1;
  v32 = 0;
  if ( v31 != 1 )
    v32 = v16 ^ 1;
  this->m_trace[74] = v32;
  v33 = v31 ^ v16;
  this->m_trace[82] = v33;
  if ( this->m_trace[80] )
  {
    v34 = v117;
    if ( v117 )
      v34 = v33;
    v25 = v34;
  }
  this->m_trace[79] = v25;
  v35 = 1;
  if ( !v32 )
    v35 = v25 & 1;
  this->m_trace[73] = v35;
  v36 = v124 ^ v17;
  this->m_trace[83] = v36;
  if ( v35 )
    v35 = v36;
  this->m_trace[72] = v35;
  v130 = v35 | v129;
  this->m_trace[66] = v130;
  this->m_trace[84] = v125 ^ v18;
  v37 = v130;
  if ( v130 )
    v37 = v125 ^ v18;
  this->m_trace[65] = v37;
  v150 = v37 | v149;
  v38 = v122 ^ v28;
  this->m_trace[59] = v150;
  this->m_trace[85] = v123 ^ v145;
  v39 = v150;
  if ( v150 )
    v39 = v123 ^ v145;
  this->m_trace[58] = v39;
  v40 = ((unsigned __int8)v39 | (unsigned __int8)v127) == 0;
  v128 = v39 | v127;
  this->m_trace[52] = v128;
  this->m_trace[86] = v38;
  v41 = v128;
  if ( !v40 )
    v41 = v122 ^ v154;
  v133 = v125 ^ v18;
  v155 = v122 ^ v154;
  this->m_trace[51] = v41;
  v40 = ((unsigned __int8)v41 | (unsigned __int8)v131) == 0;
  v132 = v41 | v131;
  this->m_trace[46] = v132;
  this->m_trace[87] = v5 ^ v147;
  v42 = v132;
  if ( !v40 )
    v42 = v5 ^ v147;
  v146 = v123 ^ v145;
  this->m_trace[45] = v42;
  v40 = ((unsigned __int8)v42 | (unsigned __int8)v151) == 0;
  v152 = v42 | v151;
  this->m_trace[39] = v152;
  this->m_trace[88] = v6 ^ v9;
  v43 = v152;
  if ( !v40 )
    v43 = v6 ^ v9;
  this->m_trace[38] = v43;
  v40 = ((unsigned __int8)v43 | (unsigned __int8)v134) == 0;
  v135 = v43 | v134;
  this->m_trace[32] = v135;
  this->m_trace[89] = v120 ^ v10;
  v44 = v135;
  if ( !v40 )
    v44 = v120 ^ v10;
  this->m_trace[31] = v44;
  v45 = v44 | v136;
  this->m_trace[27] = v44 | v136;
  this->m_trace[90] = v118 ^ v142;
  v46 = v45;
  if ( v45 )
    v46 = v118 ^ v142;
  v148 = v5 ^ v147;
  v137 = v45;
  this->m_trace[26] = v46;
  v47 = v46 | v23;
  this->m_trace[21] = v46 | v23;
  this->m_trace[91] = v119 ^ v12;
  v48 = v47;
  if ( v47 )
    v48 = v119 ^ v12;
  v144 = v119 ^ v12;
  v49 = 0;
  this->m_trace[20] = v48;
  v50 = v48 | v121;
  this->m_trace[16] = v48 | v121;
  v51 = (v48 | v121) ^ v21;
  this->m_trace[11] = v51;
  this->m_trace[10] = v51 ^ 1;
  v52 = this->m_trace[37];
  this->m_trace[92] = this->m_trace[37] ^ 1;
  v53 = this->m_trace[97];
  v54 = this->m_trace[98];
  v55 = v53 ^ this->m_trace[98];
  this->m_trace[96] = v55;
  if ( this->m_trace[13] )
    v49 = this->m_trace[14];
  v138 = v6 ^ v9;
  v140 = v120 ^ v139;
  v143 = v118 ^ v142;
  this->m_trace[100] = v49;
  v56 = 0;
  if ( v50 )
    v56 = this->m_trace[12];
  this->m_trace[101] = v56;
  v57 = v56 | v49;
  this->m_trace[99] = v57;
  this->m_trace[95] = v57 ^ v55;
  v58 = v57 ^ v55 ^ 1;
  this->m_trace[94] = v58;
  v59 = this->m_trace[18];
  v60 = this->m_trace[18] ^ 1;
  v61 = 1;
  this->m_trace[102] = v60;
  this->m_trace[93] = v58 | v60;
  if ( v51 == 1 )
    v61 = v57 == v55 || v59 == 0 || v52 == 0;
  this->m_trace[9] = v61;
  v62 = this->m_trace[106];
  v63 = this->m_trace[107];
  v64 = v62 ^ this->m_trace[107];
  this->m_trace[105] = v64;
  v65 = v53;
  if ( v53 )
    v65 = v54;
  this->m_trace[109] = v65;
  if ( v57 )
    v57 = v55;
  this->m_trace[110] = v57;
  v66 = v57 | v65;
  this->m_trace[108] = v66;
  v67 = v66 ^ v64;
  this->m_trace[104] = v66 ^ v64;
  if ( v66 )
    v66 = v64;
  v141 = v47;
  if ( v62 )
    v62 = v63;
  v68 = v66 | v62;
  v69 = v53 ^ 1;
  v70 = this->m_trace[25] ^ 1;
  this->m_trace[111] = v70;
  v71 = v67 | v70;
  this->m_trace[103] = v71;
  v72 = this->m_trace[117];
  v126 = v53;
  v73 = v72 ^ 1;
  this->m_trace[116] = v72 ^ 1;
  v74 = this->m_trace[119];
  v75 = v74 ^ v72;
  v76 = v74 ^ 1;
  v77 = (v66 | v62) ^ v75;
  v40 = !v61;
  this->m_trace[118] = v76;
  this->m_trace[115] = v75;
  this->m_trace[121] = v62;
  this->m_trace[122] = v66;
  this->m_trace[120] = v66 | v62;
  this->m_trace[114] = v77;
  this->m_trace[113] = v77 ^ 1;
  this->m_trace[123] = v69;
  this->m_trace[112] = v77 ^ 1 | v69;
  v78 = 1;
  if ( v40 )
    v78 = v77 != 1 || v126 == 0 || v71 != 0;
  this->m_trace[8] = v78;
  v79 = this->m_trace[129];
  this->m_trace[128] = this->m_trace[129] ^ 1;
  v80 = this->m_trace[131];
  this->m_trace[130] = this->m_trace[131] ^ 1;
  if ( v68 )
    v68 = v75;
  v81 = 0;
  if ( !v72 )
    v81 = v76;
  v82 = v80 ^ v79;
  v83 = (v68 | v81) ^ v82;
  this->m_trace[127] = v82;
  this->m_trace[133] = v81;
  this->m_trace[134] = v68;
  this->m_trace[132] = v68 | v81;
  this->m_trace[126] = v83;
  this->m_trace[125] = v83 ^ 1;
  v40 = v82 == ((unsigned __int8)v68 | (unsigned __int8)v81);
  v84 = 1;
  if ( !v40 )
    v84 = this->m_trace[15] != 0;
  this->m_trace[124] = v84;
  v85 = this->m_trace[80];
  v86 = this->m_trace[81];
  v87 = v85 ^ this->m_trace[81];
  this->m_trace[137] = v87;
  this->m_trace[136] = v87 ^ 1;
  this->m_trace[138] = v73;
  v88 = 1;
  this->m_trace[135] = v73 | v87 ^ 1;
  if ( !v78 )
    v88 = v84 || v87 == 0 || v72 == 0;
  this->m_trace[7] = v88;
  v89 = v85;
  if ( v85 )
    v89 = v86;
  this->m_trace[141] = v89;
  v90 = this->m_trace[82] ^ v89;
  this->m_trace[140] = v90;
  v91 = v63 ^ 1;
  this->m_trace[142] = v91;
  v92 = v90 | v91;
  this->m_trace[139] = v92;
  v93 = 1;
  v94 = this->m_trace[83] ^ this->m_trace[73];
  v40 = v88 == 0;
  this->m_trace[145] = v94;
  this->m_trace[144] = v94 ^ 1;
  this->m_trace[146] = v85 ^ 1;
  this->m_trace[143] = v94 ^ 1 | v85 ^ 1;
  v95 = 1;
  if ( v40 )
    v95 = v94 == 0 || v85 == 0 || v92 != 0;
  this->m_trace[6] = v95;
  this->m_trace[149] = v133 ^ v130;
  this->m_trace[148] = v133 ^ v130 ^ 1;
  this->m_trace[147] = v80 | v133 ^ v130 ^ 1;
  this->m_trace[151] = v146 ^ v150;
  v96 = this->m_trace[69];
  v97 = this->m_trace[69] ^ 1;
  this->m_trace[152] = v97;
  this->m_trace[150] = v97 | v146 ^ v150;
  if ( !v95 )
    v93 = (v133 ^ (unsigned __int8)v130) != 1 || v80 != 0 || v150 != v146 || v96 == 0;
  this->m_trace[5] = v93;
  this->m_trace[155] = v155 ^ v128;
  v98 = v155 ^ v128 ^ 1;
  this->m_trace[154] = v98;
  v99 = this->m_trace[78] ^ 1;
  this->m_trace[156] = v99;
  v100 = v98 | v99;
  this->m_trace[153] = v100;
  v101 = 1;
  this->m_trace[158] = v148 ^ v132;
  v102 = this->m_trace[55];
  v103 = this->m_trace[55] ^ 1;
  this->m_trace[159] = v103;
  this->m_trace[157] = v103 | v148 ^ v132;
  v104 = 1;
  if ( !v93 )
    v104 = v132 != v148 || v102 == 0 || v100 != 0;
  this->m_trace[4] = v104;
  this->m_trace[162] = v138 ^ v152;
  v105 = v138 ^ v152 ^ 1;
  this->m_trace[161] = v105;
  v106 = this->m_trace[64] ^ 1;
  this->m_trace[163] = v106;
  v107 = v105 | v106;
  this->m_trace[160] = v107;
  this->m_trace[165] = v140 ^ v135;
  v108 = this->m_trace[42];
  v109 = this->m_trace[42] ^ 1;
  this->m_trace[166] = v109;
  this->m_trace[164] = v109 | v140 ^ v135;
  if ( !v104 )
    v101 = v135 != v140 || v108 == 0 || v107 != 0;
  this->m_trace[3] = v101;
  this->m_trace[169] = v143 ^ v137;
  this->m_trace[168] = v143 ^ v137 ^ 1;
  v110 = 1;
  v111 = 1;
  if ( (v143 ^ (unsigned __int8)v137) == 1 )
    v111 = this->m_trace[50] != 0;
  this->m_trace[167] = v111;
  v112 = v144 ^ v141;
  this->m_trace[172] = v144 ^ v141;
  result = v144 ^ v141 ^ 1;
  this->m_trace[171] = result;
  v114 = this->m_trace[29];
  v115 = this->m_trace[29] ^ 1;
  this->m_trace[173] = v115;
  this->m_trace[170] = result | v115;
  if ( !v101 )
  {
    result = v112 != 1;
    v110 = v111 || v112 != 1 || v114 == 0;
  }
  this->m_trace[2] = v110;
  v116 = v110 ^ 1;
  this->m_trace[1] = v116;
  this->m_trace[0] = v116;
  return result;
}

Not nice, but can readable.
The CircuitFinalStage::GetOutputIndex tells you what trace to look for in m_trace. It's 0 in all 5 circuits.

Incorrect openssl Dependancies for Ubuntu and Archlinux. Unable to run Private Server (No Docker Method)

I am having an issue with both apt and pacman to get the private server operational. I have checked both apt repositories and pacmans to find openssl 1.0.0 and could not find that version in either. The version I do find is openssl-1.1.1 which has the dependencies:
libcrypto.so.1.1
libssl.so.1.1

I would love if you guys could guide me in the right direction or get this fixed, so more individuals can run a private server instead of using your resources.

  • Did the docker method, worked like a charm, just a quick reminder to add to the README.md

mkdir /pwnadventure3/postgres-data

Problem:

[root@pwnadventure3 MasterServer]# ./MasterServer --create-server-account
./MasterServer: error while loading shared libraries: libcrypto.so.1.0.0: cannot open shared object file: No such file or directory

Fix I tried:

[root@pwnadventure3 MasterServer]# cp /lib/libcrypto.so /lib/libssl.so.1.0.0
libcrypto.so libcrypto.so.1.1 libcrypto.so.3
[root@pwnadventure3 MasterServer]# cp /lib/libcrypto.so.1.1 /lib/libcrypto.so.1.0.0
[root@pwnadventure3 MasterServer]# ./MasterServer --create-server-account
./MasterServer: /usr/lib/libcrypto.so.1.0.0: version OPENSSL_1.0.0' not found (required by ./MasterServer) ./MasterServer: /usr/lib/libssl.so.1.0.0: version OPENSSL_1.0.0' not found (required by ./MasterServer)
[root@pwnadventure3 MasterServer]# pacman -S openssl-1.0
error: target not found: openssl-1.0
[root@pwnadventure3 MasterServer]# pacman -Ss openssl
./MasterServer: /usr/lib/libcrypto.so.1.0.0: version OPENSSL_1.0.0' not found (required by ./MasterServer) ./MasterServer: /usr/lib/libssl.so.1.0.0: version OPENSSL_1.0.0' not found (required by ./MasterServer)

 -----------------------------------------------------

Tried fix on Ubuntu:

sudo apt-get install libssl1.0.0 libssl-dev --reinstall

Outputted same:
./MasterServer: error while loading shared libraries: libssl.so.1.0.0: cannot open shared object file: No such file or directory
./MasterServer: error while loading shared libraries: libcrypto.so.1.0.0: cannot open shared object file: No such file or directory

Backup/restart might overwrite credentials for the game server

Using the current version with a database backup feature that writes the database to data.sql could lead to a mismatch between the game server and master server credentials.

Symptoms:

  • Player is stuck in a queue
  • inside the game container ps will show the server running, but netstat shows no listening server.
  • game server log output will show "Error logging in to master server: Invalid username or password"

During setup the master server creates a server account in the database and dumps the credentials into /opt/pwn3/server/creds. The game server setup then uses these credentials to connect to the master server. So when the account in the postgres database doesn't match the credentials used by the game server, then the player is stuck in the Queue. The game server will show these errors:

[2018.05.23-17.09.59:124][358]LogGameLogic:Display: [Master server connect] Unable to connect to master server.
[2018.05.23-17.09.59:124][358]LogGameLogic:Display: Error connecting to master server: Unable to connect to master server.
[2018.05.23-17.09.59:259][362]LogGameLogic:Display: Error logging in to master server: Invalid username or password
[2018.05.23-17.09.59:286][363]LogGameLogic:Display: Error logging in to master server: Invalid username or password

Workaround:

# on the host system, get a shell for the master server
docker exec -i -t pwnadventure3_master_1 /bin/bash

# in the master container create a new server account. this will write new credentials in the database
cd /opt/pwn3/server/MasterServer/
su pwn3
./MasterServer --create-server-account

# output should show something like this:
Username: server_10520dxxxxxxx
Password: 80bc3de5abbxxxxxxxx

# leave the container now. back on the host:

# edit the creds file to contain these credentials. actually the server.ini is the important one, but let's make sure everything is synced.

cat ./server/creds

Username: server_10520dxxxxxxx
Password: 80bc3de5abbxxxxxxxx

# make sure the server.ini also contains these creds
cat ./client/PwnAdventure3_Data/PwnAdventure3/PwnAdventure3/Content/Server/server.ini

[MasterServer]
Hostname=master.pwn3
Port=3333

[GameServer]
Hostname=game.pwn3
Port=3000
Username=server_10520dxxxxxxx
Password=80bc3de5abbxxxxxxxx
Instances=3

# tear down the game server
docker-compose down game

# restart the game server
docker-compose up -d game 

TODO:
somehow make sure the creds are also backuped and not overwritten or whatever.

document OS setup

What OS did you use?

Also it seems like you extracted everything to /opt/pwn3 which wasn't documented in Readme. Not sure if that's necessary to make this work.

I'm getting segfaults with Ubuntu 16 LTS

Example crash

  • ctrl+f for "core dumped"
user@pwnadventure3:/opt/pwn3$ sudo docker-compose up
Starting pwn3_init_1 ... done
Starting pwn3_master_1 ... done
Starting pwn3_game_1   ... done
Attaching to pwn3_init_1, pwn3_master_1, pwn3_game_1
pwn3_init_1 exited with code 0
master_1  |  * Starting PostgreSQL 9.3 database server
game_1    | FMallocCrash overhead is 3780608 bytes
game_1    | bash: line 1:     7 Segmentation fault      (core dumped) ./PwnAdventure3Server
pwn3_game_1 exited with code 139
master_1  |    ...done.
master_1  | psql:/opt/pwn3/setup/postgres_init.sql:1: ERROR:  role "pwn3" already exists
master_1  | psql:/opt/pwn3/setup/postgres_init.sql:2: ERROR:  database "master" already exists
master_1  | GRANT
master_1  | rm: cannot remove '/opt/pwn3/client/PwnAdventure3_Data/PwnAdventure3/PwnAdventure3/Saved/Logs/*': No such file or directory
master_1  | No backup data found!
master_1  | DROP TABLE
master_1  | DROP TABLE
master_1  | DROP TABLE
master_1  | DROP TABLE
master_1  | DROP TABLE
master_1  | DROP TABLE
master_1  | DROP TABLE
master_1  | DROP TABLE
master_1  | DROP TABLE
master_1  | DROP TABLE
master_1  | CREATE TABLE
master_1  | CREATE TABLE
master_1  | CREATE TABLE
master_1  | CREATE TABLE
master_1  | CREATE TABLE
master_1  | CREATE TABLE
master_1  | CREATE TABLE
master_1  | CREATE TABLE
master_1  | CREATE TABLE
master_1  | CREATE TABLE
master_1  | CREATE INDEX
master_1  | CREATE INDEX
master_1  | CREATE INDEX
master_1  | CREATE INDEX
master_1  | CREATE INDEX
master_1  | CREATE INDEX
master_1  | CREATE INDEX
master_1  | CREATE INDEX
master_1  | CREATE INDEX
master_1  | CREATE INDEX
master_1  | CREATE INDEX
master_1  | CREATE INDEX
master_1  | CREATE INDEX
master_1  | INSERT 0 1
master_1  | INSERT 0 1
master_1  | UPDATE 1
master_1  | UPDATE 1
master_1  | Use the following team hash to join the admin team:
master_1  | [hash_be_here]

Game server fails to start on Debian

Hi! So last night I gathered the relevant files from the repository, pwn3 website, and docker to use docker-compose to setup the repository. Running the docker-compose binary doesn't fail, however there is a problem with the setup scripts that causes the game server to fail to boot, and exit with code 139:

[sudo] password for pwn3: 
Starting pwnadventure3_init_1 ... done`Starting pwnadventure3_master_1 ... done
Starting pwnadventure3_game_1   ... done
Attaching to pwnadventure3_init_1, pwnadventure3_master_1, pwnadventure3_game_1
master_1  |  * Starting PostgreSQL 9.3 database server
pwnadventure3_init_1 exited with code 0
game_1    | FMallocCrash overhead is 3780608 bytes
game_1    | bash: line 1:     7 Segmentation fault      ./PwnAdventure3Server
pwnadventure3_game_1 exited with code 139
master_1  |    ...done.
master_1  | psql:/opt/pwn3/setup/postgres_init.sql:1: ERROR:  role "pwn3" already exists
master_1  | psql:/opt/pwn3/setup/postgres_init.sql:2: ERROR:  database "master" already exists
master_1  | GRANT
master_1  | rm: cannot remove /opt/pwn3/client/PwnAdventure3_Data/PwnAdventure3/PwnAdventure3/Saved/Logs/*': No such file or irectory
master_1  | No backup data found!
master_1  | DROP TABLE
master_1  | DROP TABLE
master_1  | DROP TABLE
master_1  | DROP TABLE
master_1  | DROP TABLE
master_1  | DROP TABLE
master_1  | DROP TABLE
master_1  | DROP TABLE
master_1  | DROP TABLE
master_1  | DROP TABLE
master_1  | CREATE TABLE
master_1  | CREATE TABLE
master_1  | CREATE TABLE
master_1  | CREATE TABLE
master_1  | CREATE TABLE
master_1  | CREATE TABLE
master_1  | CREATE TABLE
master_1  | CREATE TABLE
master_1  | CREATE TABLE
master_1  | CREATE TABLE
master_1  | CREATE INDEX
master_1  | CREATE INDEX
master_1  | CREATE INDEX
master_1  | CREATE INDEX
master_1  | CREATE INDEX
master_1  | CREATE INDEX
master_1  | CREATE INDEX
master_1  | CREATE INDEX
master_1  | CREATE INDEX
master_1  | CREATE INDEX
master_1  | CREATE INDEX
master_1  | CREATE INDEX
master_1  | CREATE INDEX
master_1  | INSERT 0 1
master_1  | INSERT 0 1
master_1  | UPDATE 1
master_1  | UPDATE 1
master_1  | Use the following team hash to join the admin team:
master_1  | [local hash not needed for this issue]
master_1  | bash: /opt/pwn3/server/creds: Permission denied

OSError: [Errno 28] No space left on device

`pwn@pwnie-server:~/PwnAdventure3$ docker-compose build
master uses an image, skipping
game uses an image, skipping
Building init
Traceback (most recent call last):
File "site-packages/docker/utils/build.py", line 97, in create_archive
File "tarfile.py", line 1972, in addfile
File "tarfile.py", line 250, in copyfileobj
File "tempfile.py", line 481, in func_wrapper
OSError: [Errno 28] No space left on device

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "bin/docker-compose", line 6, in
File "compose/cli/main.py", line 72, in main
File "compose/cli/main.py", line 128, in perform_command
File "compose/cli/main.py", line 303, in build
File "compose/project.py", line 403, in build
File "compose/project.py", line 385, in build_service
File "compose/service.py", line 1106, in build
File "site-packages/docker/api/build.py", line 160, in build
File "site-packages/docker/utils/build.py", line 31, in tar
File "site-packages/docker/utils/build.py", line 100, in create_archive
OSError: Can not read file in context: /home/pwn/PwnAdventure3/client/PwnAdventure3_Data/PwnAdventure3/PwnAdventure3/Binaries/Linux/PwnAdventure3Server
[1373] Failed to execute script docker-compose`
this is my problem

stat /opt/pwn3/setup/masterserver.sh: no such file or directory: unknown

Output from docker-compose up: ```
[+] Running 4/4

  • Network pwnadventure3-master_default Created 0.8s
  • Container pwnadventure3-master-init-1 Created 0.2s
  • Container pwnadventure3-master-master-1 Created 0.2s
  • Container pwnadventure3-master-game-1 Created 0.2s
    Attaching to pwnadventure3-master-game-1, pwnadventure3-master-init-1, pwnadventure3-master-master-1
    pwnadventure3-master-init-1 exited with code 0
    Error response from daemon: OCI runtime create failed: container_linux.go:380: starting container process caused: exec: "/opt/pwn3/setup/masterserver.sh": stat /opt/pwn3/setup/masterserver.sh: no such file or directory: unknown
OS: Windows

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.