├── .docker ├── api │ ├── Dockerfile │ ├── openapi.json │ ├── requirements.txt │ └── src │ │ └── main.py ├── frontend │ ├── Dockerfile │ ├── requirements.txt │ └── src │ │ ├── main.py │ │ ├── static │ │ ├── img │ │ │ ├── 65ced3ba75cae2ba6fec0caf_Screenshot 2024-02-15 at 22.04.44.png │ │ │ ├── favicon.ico │ │ │ ├── glitch-background.png │ │ │ └── glitch-name.png │ │ ├── js │ │ │ └── apexcharts.js │ │ └── style │ │ │ └── style.css │ │ └── templates │ │ ├── documentation.html │ │ ├── loading.html │ │ └── scoreboard.html ├── rangemaster │ └── Dockerfile ├── registry │ └── config.yml └── ticker │ ├── Dockerfile │ ├── requirements.txt │ └── src │ ├── checkerclient.py │ └── main.py ├── .gitignore ├── LICENSE ├── README.md ├── checkers ├── .templates │ ├── cini │ │ └── .docker │ │ │ ├── Dockerfile │ │ │ ├── adapter.py │ │ │ └── checkerserver.py │ ├── forcad │ │ └── .docker │ │ │ ├── Dockerfile │ │ │ ├── checkerserver.py │ │ │ └── requirements.txt │ └── simple │ │ └── .docker │ │ ├── Dockerfile │ │ ├── checkerserver.py │ │ └── requirements.txt ├── CyberUni │ ├── .docker │ │ ├── Dockerfile │ │ └── checkerserver.py │ ├── authlib.cpython-39-x86_64-linux-gnu.so │ ├── checker.py │ ├── checklib.py │ ├── service2_client.py │ └── setup.sh ├── EncryptedNotes │ ├── .docker │ │ ├── Dockerfile │ │ └── checkerserver.py │ ├── authlib.cpython-39-x86_64-linux-gnu.so │ ├── checker.py │ ├── checklib.py │ ├── service2_client.py │ └── setup.sh ├── ExamNotes │ ├── .docker │ │ ├── Dockerfile │ │ └── checkerserver.py │ ├── authlib.cpython-39-x86_64-linux-gnu.so │ ├── checker.py │ ├── checklib.py │ ├── service2_client.py │ └── setup.sh ├── ExamPortal │ ├── .docker │ │ ├── Dockerfile │ │ └── checkerserver.py │ ├── authlib.cpython-39-x86_64-linux-gnu.so │ ├── checker.py │ ├── checklib.py │ ├── service2_client.py │ ├── setup.sh │ └── user_agents.txt ├── README.md ├── SeaOfHackerz │ ├── .docker │ │ ├── Dockerfile │ │ ├── adapter.py │ │ └── checkerserver.py │ ├── checker.json │ ├── checker.py │ ├── checklib.py │ └── setup.sh ├── UberPendragon │ ├── .docker │ │ ├── Dockerfile │ │ ├── adapter.py │ │ └── checkerserver.py │ ├── .gitignore │ ├── checker.json │ ├── checker.py │ ├── checklib.py │ ├── client.py │ └── setup.sh ├── alienchefs │ ├── .docker │ │ ├── Dockerfile │ │ ├── checkerserver.py │ │ └── requirements.txt │ └── checkserver.py ├── cell │ ├── .docker │ │ ├── Dockerfile │ │ ├── checkerserver.py │ │ └── requirements.txt │ ├── cell_lib.py │ ├── checker.py │ └── requirements.txt ├── conveyor │ ├── .docker │ │ ├── Dockerfile │ │ ├── checkerserver.py │ │ └── requirements.txt │ ├── checker.py │ ├── conveyorlib.py │ └── requirements.txt ├── docker-compose.yaml ├── exoplanet │ ├── .docker │ │ ├── Dockerfile │ │ ├── checkerserver.py │ │ └── requirements.txt │ ├── checker.py │ ├── constellations.txt │ ├── exo_lib.py │ ├── generators.py │ └── planets.txt ├── martian │ ├── .docker │ │ ├── Dockerfile │ │ ├── checkerserver.py │ │ └── requirements.txt │ ├── checker.py │ └── martian_lib.py ├── nop │ └── .docker │ │ ├── Dockerfile │ │ └── checkerserver.py ├── nugget │ ├── .docker │ │ ├── Dockerfile │ │ ├── checkerserver.py │ │ └── requirements.txt │ ├── checker-priv.pem │ ├── checker.py │ ├── nuggetlib.py │ └── requirements.txt ├── simple-latency │ └── .docker │ │ ├── Dockerfile │ │ ├── checkerserver.py │ │ └── requirements.txt └── simple │ └── .docker │ ├── Dockerfile │ ├── checkerserver.py │ └── requirements.txt ├── docker-compose.yaml ├── sample.env ├── scripts ├── clear.sh ├── down.sh ├── install.sh ├── rangemaster.sh ├── rebuild-checkers.sh └── up.sh └── services ├── .docker ├── Dockerfile └── entrypoint.sh ├── CyberUni ├── README.md ├── auth_service │ ├── Dockerfile │ ├── authlib.cpython-310-x86_64-linux-gnu.so │ ├── authlib.cpython-311-x86_64-linux-gnu.so │ ├── authlib.cpython-38-x86_64-linux-gnu.so │ ├── authlib.cpython-39-x86_64-linux-gnu.so │ ├── client.py │ ├── server.py │ └── user_handlers.py ├── deploy.sh ├── docker-compose.yml ├── encryptednotes │ ├── Dockerfile │ ├── __init__.py │ ├── app │ │ ├── aes_128.txt │ │ ├── auth.py │ │ ├── gates.py │ │ ├── ot.py │ │ ├── requirements.txt │ │ └── server.py │ └── client.py ├── examnotes │ ├── Dockerfile │ └── app │ │ ├── auth.py │ │ ├── requirements.txt │ │ └── server.py └── examportal │ ├── .gitignore │ ├── Dockerfile │ ├── app │ ├── classes │ │ ├── database.php │ │ ├── exam.php │ │ └── user.php │ ├── exam.php │ ├── exam_create.php │ ├── exam_list.php │ ├── exam_submit.php │ ├── exam_view.php │ ├── index.php │ ├── login.php │ ├── logout.php │ └── utils.php │ └── db │ └── init │ └── init.sql ├── README.md ├── SeaOfHackerz ├── backend │ ├── .gitignore │ ├── Dockerfile │ ├── app.py │ └── requirements.txt ├── default.conf ├── docker-compose.yml ├── frontend │ ├── .dockerignore │ ├── .gitignore │ ├── Dockerfile │ ├── package-lock.json │ ├── package.json │ ├── public │ │ ├── favicon.ico │ │ ├── img │ │ │ ├── bg-1.jpg │ │ │ ├── bg-2.jpg │ │ │ ├── bg-2.png │ │ │ ├── bg-3.jpg │ │ │ ├── bg-4-full.jpg │ │ │ ├── bg-4.jpg │ │ │ ├── bg-scroll.png │ │ │ ├── boat │ │ │ │ ├── btn-hull-0.png │ │ │ │ ├── btn-hull-1.png │ │ │ │ ├── btn-hull-2.png │ │ │ │ ├── btn-porthole-0.png │ │ │ │ ├── btn-porthole-1.png │ │ │ │ ├── btn-porthole-2.png │ │ │ │ ├── btn-sails-0.png │ │ │ │ ├── btn-sails-1.png │ │ │ │ ├── btn-sails-2.png │ │ │ │ ├── btn-sails-3.png │ │ │ │ ├── flags-0.png │ │ │ │ ├── flags-1.png │ │ │ │ ├── flags-2.png │ │ │ │ ├── flags-3.png │ │ │ │ ├── flags-4.png │ │ │ │ ├── flags-5.png │ │ │ │ ├── flags-6.png │ │ │ │ ├── flags-7.png │ │ │ │ ├── hull-0.png │ │ │ │ ├── hull-1.png │ │ │ │ ├── hull-2.png │ │ │ │ ├── portholes-0.png │ │ │ │ ├── portholes-1.png │ │ │ │ ├── portholes-2.png │ │ │ │ ├── sails-0-0.png │ │ │ │ ├── sails-0-1.png │ │ │ │ ├── sails-0-2.png │ │ │ │ ├── sails-0-3.png │ │ │ │ ├── sails-0-4.png │ │ │ │ ├── sails-0-5.png │ │ │ │ ├── sails-0-6.png │ │ │ │ ├── sails-0-7.png │ │ │ │ ├── sails-1-0.png │ │ │ │ ├── sails-1-1.png │ │ │ │ ├── sails-1-2.png │ │ │ │ ├── sails-1-3.png │ │ │ │ ├── sails-1-4.png │ │ │ │ ├── sails-1-5.png │ │ │ │ ├── sails-1-6.png │ │ │ │ ├── sails-1-7.png │ │ │ │ ├── sails-2-0.png │ │ │ │ ├── sails-2-1.png │ │ │ │ ├── sails-2-2.png │ │ │ │ ├── sails-2-3.png │ │ │ │ ├── sails-2-4.png │ │ │ │ ├── sails-2-5.png │ │ │ │ ├── sails-2-6.png │ │ │ │ ├── sails-2-7.png │ │ │ │ ├── sails-3-0.png │ │ │ │ ├── sails-3-1.png │ │ │ │ ├── sails-3-2.png │ │ │ │ ├── sails-3-3.png │ │ │ │ ├── sails-3-4.png │ │ │ │ ├── sails-3-5.png │ │ │ │ ├── sails-3-6.png │ │ │ │ └── sails-3-7.png │ │ │ ├── bottom-1.png │ │ │ ├── color-inv.png │ │ │ ├── footer.png │ │ │ ├── hr-short.png │ │ │ ├── hr-white.png │ │ │ ├── hr.png │ │ │ ├── inventory │ │ │ │ ├── inv-0.png │ │ │ │ ├── inv-1.png │ │ │ │ ├── inv-10.png │ │ │ │ ├── inv-11.png │ │ │ │ ├── inv-12.png │ │ │ │ ├── inv-13.png │ │ │ │ ├── inv-14.png │ │ │ │ ├── inv-15.png │ │ │ │ ├── inv-2.png │ │ │ │ ├── inv-3.png │ │ │ │ ├── inv-4.png │ │ │ │ ├── inv-5.png │ │ │ │ ├── inv-6.png │ │ │ │ ├── inv-7.png │ │ │ │ ├── inv-8.png │ │ │ │ └── inv-9.png │ │ │ ├── scroll-body.png │ │ │ ├── scroll-bottom.png │ │ │ ├── scroll-top.png │ │ │ ├── scroll.png │ │ │ ├── sea-1.png │ │ │ ├── sea-2.png │ │ │ ├── ship-1.png │ │ │ ├── ship-2.png │ │ │ ├── ship-3.png │ │ │ ├── smoke.png │ │ │ ├── treasure.png │ │ │ └── wave.png │ │ ├── index.html │ │ ├── logo.png │ │ ├── manifest.json │ │ ├── metshige.ttf │ │ ├── nav_bg.png │ │ ├── robots.txt │ │ └── style.css │ └── src │ │ ├── App.js │ │ ├── App.test.js │ │ ├── Attack.js │ │ ├── Boat.js │ │ ├── Footer.js │ │ ├── HomePage.js │ │ ├── Login.js │ │ ├── NavigationBar.js │ │ ├── StartAttack.js │ │ ├── ViewBoat.js │ │ ├── index.css │ │ ├── index.js │ │ ├── logo.svg │ │ ├── reportWebVitals.js │ │ └── setupTests.js └── initdb.sql ├── UberPendragon ├── .gitignore ├── Cochin Regular.otf ├── backend │ ├── Dockerfile │ ├── app.py │ ├── common.py │ ├── crypto.py │ ├── places.py │ ├── requirements.txt │ ├── rides.py │ └── users.py ├── client.py ├── docker-compose.yml ├── frontend │ ├── .gitignore │ ├── Dockerfile │ ├── README.md │ ├── package-lock.json │ ├── package.json │ ├── public │ │ ├── clientMap.png │ │ ├── doorbell.png │ │ ├── dragon0.svg │ │ ├── dragon1.svg │ │ ├── dragon2.svg │ │ ├── dragon3.svg │ │ ├── favicon.ico │ │ ├── index.html │ │ ├── logo.png │ │ ├── manifest.json │ │ ├── monitorMap.png │ │ └── robots.txt │ └── src │ │ ├── App.css │ │ ├── App.js │ │ ├── App.test.js │ │ ├── Cochin Regular.otf │ │ ├── FlightMonitor.js │ │ ├── HomePage.js │ │ ├── NavigationBar.js │ │ ├── index.css │ │ ├── index.js │ │ ├── logo.svg │ │ ├── reportWebVitals.js │ │ └── setupTests.js ├── initdb.sql └── requirements.txt ├── alienchefs ├── .init │ └── schema.sql ├── app │ ├── Dockerfile │ ├── accountMgmt.php │ ├── admin.php │ ├── alien.css │ ├── config.php │ ├── getimg.php │ ├── index.php │ ├── login.php │ ├── logout.php │ ├── putFlag.php │ ├── register.php │ ├── static │ │ ├── alien_hecker.jpg │ │ ├── aliens.js │ │ └── cookin_with_cryptids.jpg │ ├── updateRecipe.php │ └── upload.php └── docker-compose.yml ├── cell ├── .dockerignore ├── backend-entry.sh ├── backend.Dockerfile ├── backend │ ├── .editorconfig │ ├── .env.sample │ ├── .gitignore │ ├── .styleci.yml │ ├── README.md │ ├── app.php │ ├── app │ │ ├── config │ │ │ ├── auth.php │ │ │ ├── cache.php │ │ │ ├── centrifugo.php │ │ │ ├── scaffolder.php │ │ │ ├── session.php │ │ │ └── views │ │ │ │ └── stempler.php │ │ ├── src │ │ │ ├── Application │ │ │ │ ├── Bootloader │ │ │ │ │ ├── AppBootloader.php │ │ │ │ │ ├── ExceptionHandlerBootloader.php │ │ │ │ │ ├── LoggingBootloader.php │ │ │ │ │ └── RoutesBootloader.php │ │ │ │ ├── Exception │ │ │ │ │ ├── Handler.php │ │ │ │ │ └── Renderer │ │ │ │ │ │ └── ViewRenderer.php │ │ │ │ └── Kernel.php │ │ │ ├── Auth │ │ │ │ └── Storage │ │ │ │ │ ├── CacheTokenStorage.php │ │ │ │ │ └── Token.php │ │ │ ├── Endpoint │ │ │ │ ├── Centrifugo │ │ │ │ │ └── Handler │ │ │ │ │ │ ├── RPCHandler.php │ │ │ │ │ │ └── SubscribeHandler.php │ │ │ │ ├── Console │ │ │ │ │ └── DoNothing.php │ │ │ │ └── Web │ │ │ │ │ ├── AuthController.php │ │ │ │ │ └── SheetController.php │ │ │ └── Service │ │ │ │ ├── SheetService.php │ │ │ │ └── UserService.php │ │ └── views │ │ │ └── .keep │ ├── composer.json │ ├── composer.lock │ ├── functions.php │ ├── phpunit.xml │ ├── psalm.xml │ └── public │ │ └── .keep ├── conf │ ├── backend.env │ ├── centrifugo.json │ ├── nginx.conf │ └── rr.yml ├── docker-compose.yml └── front │ ├── _app │ ├── immutable │ │ ├── assets │ │ │ ├── 0.f54ae1c3.css │ │ │ ├── 4.fe5a5a52.css │ │ │ ├── _layout.33736ff6.css │ │ │ ├── _page.5d0ae743.css │ │ │ ├── edit.cc61a753.png │ │ │ ├── file-upload.156694fe.png │ │ │ ├── gold.ca6d08fd.png │ │ │ ├── share.f4c802a8.png │ │ │ ├── spreadsheet.69959a69.png │ │ │ └── world.bab3a2dd.png │ │ ├── chunks │ │ │ ├── LockClosed.62f18369.js │ │ │ ├── each.e59479a4.js │ │ │ ├── index.25bfcd07.js │ │ │ ├── index.bce4ad42.js │ │ │ ├── navigation.cb5fd4ff.js │ │ │ ├── navigation.fbbcb2c9.js │ │ │ ├── paths.9c20ae3a.js │ │ │ ├── paths.9f99ae0b.js │ │ │ ├── public.aa8ed6af.js │ │ │ ├── scheduler.3f07874a.js │ │ │ ├── singletons.1689c519.js │ │ │ ├── singletons.d880c1fc.js │ │ │ └── storage.8c515f7d.js │ │ ├── entry │ │ │ ├── app.2ae83628.js │ │ │ ├── app.332bfc31.js │ │ │ ├── start.2aa3b092.js │ │ │ └── start.74f2bc7c.js │ │ └── nodes │ │ │ ├── 0.cfae675d.js │ │ │ ├── 1.3dd283f3.js │ │ │ ├── 1.d8610ad9.js │ │ │ ├── 2.793fb0ff.js │ │ │ ├── 2.b621026c.js │ │ │ ├── 3.378c64a9.js │ │ │ ├── 3.d9e2a2a3.js │ │ │ ├── 4.73bbe35a.js │ │ │ ├── 4.8f2859bc.js │ │ │ ├── 5.c4d32190.js │ │ │ ├── 5.f431fc60.js │ │ │ ├── 6.27b3ed2d.js │ │ │ └── 6.f60b038d.js │ └── version.json │ ├── favicon.png │ ├── index.html │ └── robots.txt ├── conveyor ├── .tool-versions ├── README.md ├── conveyor │ ├── __init__.py │ ├── config.py │ ├── data.py │ ├── model.py │ ├── remote.py │ ├── service.py │ └── storage.py ├── deploy │ ├── Dockerfile │ └── redis.conf ├── docker-compose.yml ├── poetry.lock ├── pyproject.toml └── scripts │ ├── client.py │ └── server.py ├── docker-compose.yaml ├── exoplanet ├── .gitignore ├── Dockerfile ├── docker-compose.yml └── exoplanet │ ├── Authentication │ ├── Authenticator.cs │ ├── Hasher.cs │ ├── Token.cs │ └── TokenInfo.cs │ ├── Controllers │ ├── Error.cs │ ├── PlanetsController.cs │ └── StarsController.cs │ ├── Crypto │ ├── Ciphers │ │ ├── Cipher.cs │ │ └── ICipher.cs │ ├── Combiners │ │ ├── Combiner.cs │ │ └── ICombiner.cs │ ├── Multiplicators │ │ ├── IMultiplicator.cs │ │ └── Multiplicator.cs │ ├── Transformers │ │ ├── ITransformer.cs │ │ └── Transformer.cs │ └── Utils.cs │ ├── Models │ ├── DatabaseSettings.cs │ ├── Planet.cs │ ├── Secret.cs │ └── Star.cs │ ├── Program.cs │ ├── Services │ ├── ExoplanetService.cs │ └── SecretService.cs │ ├── Startup.cs │ ├── appsettings.json │ ├── exoplanet.csproj │ ├── obj │ ├── Debug │ │ └── netcoreapp3.0 │ │ │ ├── .NETCoreApp,Version=v3.0.AssemblyAttributes.cs │ │ │ ├── exoplanet.AssemblyInfo.cs │ │ │ ├── exoplanet.AssemblyInfoInputs.cache │ │ │ ├── exoplanet.GeneratedMSBuildEditorConfig.editorconfig │ │ │ ├── exoplanet.assets.cache │ │ │ └── exoplanet.csproj.AssemblyReference.cache │ ├── exoplanet.csproj.nuget.dgspec.json │ ├── exoplanet.csproj.nuget.g.props │ ├── exoplanet.csproj.nuget.g.targets │ ├── project.assets.json │ └── project.nuget.cache │ └── wwwroot │ ├── index.html │ ├── scripts.js │ └── styles.css ├── martian ├── .gitignore ├── docker-compose.yml └── service │ ├── Dockerfile │ ├── entrypoint.sh │ ├── items.txt │ ├── libstdc++.so.6 │ └── martian ├── nop ├── docker-compose.yaml └── src │ └── index.html ├── nugget ├── .dockerignore ├── .gitignore ├── Dockerfile ├── cmd │ ├── captcha │ │ └── main.go │ └── nugget │ │ └── main.go ├── docker-compose.yml ├── go.mod ├── go.sum └── internal │ ├── captcha │ ├── captcha.go │ ├── checker-pub.pem │ ├── solver.go │ └── solver_test.go │ ├── cleaner │ └── cleaner.go │ ├── logging │ └── init.go │ ├── service │ ├── captcha.go │ ├── connection.go │ ├── crypto.go │ ├── dispatch.go │ ├── models.go │ ├── sanitize.go │ └── utils.go │ ├── uploads │ ├── combined.go │ └── reader.go │ └── utils │ ├── compression.go │ └── files.go ├── simple-latency ├── Dockerfile ├── app │ └── main.py ├── docker-compose.yaml └── requirements.txt └── simple ├── Dockerfile ├── app └── main.py ├── docker-compose.yaml └── requirements.txt /.docker/api/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM python:latest 2 | 3 | WORKDIR /code 4 | 5 | COPY ./requirements.txt /code/requirements.txt 6 | 7 | RUN pip install --no-cache-dir --upgrade -r /code/requirements.txt 8 | 9 | CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "80"] 10 | -------------------------------------------------------------------------------- /.docker/api/requirements.txt: -------------------------------------------------------------------------------- 1 | fastapi 2 | pydantic 3 | uvicorn 4 | pymongo 5 | python-dateutil 6 | -------------------------------------------------------------------------------- /.docker/frontend/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM python:latest 2 | 3 | WORKDIR /code 4 | 5 | COPY ./requirements.txt /code/requirements.txt 6 | 7 | RUN pip install --no-cache-dir --upgrade -r /code/requirements.txt 8 | 9 | CMD ["python3", "/app/main.py"] -------------------------------------------------------------------------------- /.docker/frontend/requirements.txt: -------------------------------------------------------------------------------- 1 | pymongo 2 | flask -------------------------------------------------------------------------------- /.docker/frontend/src/static/img/65ced3ba75cae2ba6fec0caf_Screenshot 2024-02-15 at 22.04.44.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/.docker/frontend/src/static/img/65ced3ba75cae2ba6fec0caf_Screenshot 2024-02-15 at 22.04.44.png -------------------------------------------------------------------------------- /.docker/frontend/src/static/img/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/.docker/frontend/src/static/img/favicon.ico -------------------------------------------------------------------------------- /.docker/frontend/src/static/img/glitch-background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/.docker/frontend/src/static/img/glitch-background.png -------------------------------------------------------------------------------- /.docker/frontend/src/static/img/glitch-name.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/.docker/frontend/src/static/img/glitch-name.png -------------------------------------------------------------------------------- /.docker/rangemaster/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM alpine:latest 2 | 3 | RUN apk update 4 | RUN apk upgrade 5 | 6 | # Install curl and jq 7 | RUN apk add curl jq python3 nano bash -------------------------------------------------------------------------------- /.docker/registry/config.yml: -------------------------------------------------------------------------------- 1 | version: 0.1 2 | log: 3 | fields: 4 | service: registry 5 | storage: 6 | cache: 7 | blobdescriptor: inmemory 8 | filesystem: 9 | rootdirectory: /cache 10 | http: 11 | addr: :5000 12 | headers: 13 | X-Content-Type-Options: [nosniff] 14 | health: 15 | storagedriver: 16 | enabled: true 17 | interval: 10s 18 | threshold: 3 19 | proxy: 20 | remoteurl: https://registry-1.docker.io 21 | -------------------------------------------------------------------------------- /.docker/ticker/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM python:latest 2 | 3 | WORKDIR /code 4 | 5 | COPY ./requirements.txt /code/requirements.txt 6 | 7 | RUN pip install --no-cache-dir --upgrade -r /code/requirements.txt 8 | 9 | CMD ["python", "main.py"] 10 | -------------------------------------------------------------------------------- /.docker/ticker/requirements.txt: -------------------------------------------------------------------------------- 1 | pymongo 2 | python-dateutil -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .docker/registry/cache 2 | .docker/api/teamdata 3 | .docker/vpn/** 4 | pcaps 5 | .env 6 | .env.live 7 | .DS_Store 8 | debug.log 9 | teamdata.txt 10 | **/__pycache__/ 11 | -------------------------------------------------------------------------------- /checkers/.templates/cini/.docker/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM python:latest 2 | 3 | RUN apt update 4 | RUN apt install -y iproute2 5 | 6 | WORKDIR /checker 7 | 8 | COPY . /checker 9 | COPY ./.docker/adapter.py /checker/adapter.py 10 | COPY ./.docker/checkerserver.py /checker/checkerserver.py 11 | 12 | RUN bash ./setup.sh 13 | 14 | CMD ["python3", "checkerserver.py"] -------------------------------------------------------------------------------- /checkers/.templates/cini/.docker/adapter.py: -------------------------------------------------------------------------------- 1 | import os 2 | import sys 3 | 4 | # Because the checklib expects to send flagids back to a server, we have to run that server locally to avoid needing to modify the checklib 5 | os.environ['FLAGID_SERVICE'] = 'http://127.0.0.1' 6 | os.environ['ACTION'] = 'check' 7 | os.environ['TEAM_ID'] = '0' 8 | os.environ['VULNBOX_ID'] = '0' 9 | os.environ['ROUND'] = '0' 10 | os.environ['FLAGID_TOKEN'] = '' 11 | 12 | import checker 13 | 14 | 15 | 16 | def check(params: list): 17 | host = params[0] 18 | checker.team_ip = host 19 | checker.base_url = f'http://{host}:{checker.PORT}' 20 | checker.check_sla() 21 | 22 | def put(params: list): 23 | host = params[0] 24 | flag = params[1] 25 | flag_id = params[2] 26 | callback_url = params[3] 27 | checker.team_ip = host 28 | checker.base_url = f'http://{host}:{checker.PORT}' 29 | checker.flag = flag 30 | os.environ['FLAGID_SERVICE'] = callback_url 31 | checker.put_flag() 32 | 33 | def get(params: list): 34 | host = params[0] 35 | flag = params[1] 36 | checker.team_ip = host 37 | checker.base_url = f'http://{host}:{checker.PORT}' 38 | checker.flag = flag 39 | checker.get_flag() 40 | 41 | 42 | actions = { 43 | 'check': check, 44 | 'put': put, 45 | 'get': get 46 | } 47 | 48 | if __name__ == '__main__': 49 | action = sys.argv[1] 50 | params = sys.argv[2:] 51 | actions[action](params) 52 | 53 | -------------------------------------------------------------------------------- /checkers/.templates/forcad/.docker/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM python:latest 2 | 3 | RUN apt update 4 | RUN apt install -y iproute2 5 | 6 | COPY ./.docker/requirements.txt ./requirements.txt 7 | 8 | RUN pip3 install -r requirements.txt 9 | 10 | COPY ./.docker/requirements.txt ./requirements.txt ./ 11 | 12 | RUN pip3 install -r requirements.txt 13 | 14 | WORKDIR /checker 15 | 16 | COPY . /checker 17 | COPY ./.docker/checkerserver.py /checker/checkerserver.py 18 | 19 | CMD ["python3", "checkerserver.py"] -------------------------------------------------------------------------------- /checkers/.templates/forcad/.docker/requirements.txt: -------------------------------------------------------------------------------- 1 | checklib 2 | requests 3 | protobuf 4 | gevent 5 | bs4 6 | lxml 7 | pwntools 8 | grpcio -------------------------------------------------------------------------------- /checkers/.templates/simple/.docker/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM python:latest 2 | 3 | RUN apt update 4 | RUN apt install -y iproute2 5 | 6 | COPY ./.docker/requirements.txt /tmp/requirements.txt 7 | 8 | RUN pip install --no-cache-dir --upgrade -r /tmp/requirements.txt 9 | 10 | WORKDIR /checker 11 | 12 | COPY ./.docker/checkerserver.py /checker/checkerserver.py 13 | 14 | CMD ["python3", "checkerserver.py"] -------------------------------------------------------------------------------- /checkers/.templates/simple/.docker/requirements.txt: -------------------------------------------------------------------------------- 1 | requests -------------------------------------------------------------------------------- /checkers/CyberUni/.docker/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM python:latest 2 | 3 | RUN apt update 4 | RUN apt install -y iproute2 5 | 6 | WORKDIR /checker 7 | 8 | COPY . /checker 9 | COPY ./.docker/checkerserver.py /checker/checkerserver.py 10 | 11 | RUN bash ./setup.sh 12 | 13 | CMD ["python3", "checkerserver.py"] -------------------------------------------------------------------------------- /checkers/CyberUni/authlib.cpython-39-x86_64-linux-gnu.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/checkers/CyberUni/authlib.cpython-39-x86_64-linux-gnu.so -------------------------------------------------------------------------------- /checkers/CyberUni/checklib.py: -------------------------------------------------------------------------------- 1 | import sys 2 | from enum import Enum 3 | import requests 4 | import os 5 | 6 | TOKEN = 'PRIVATE-TOKEN' 7 | 8 | 9 | class Status(Enum): 10 | OK = 101 11 | DOWN = 104 12 | ERROR = 110 13 | 14 | 15 | class Action(Enum): 16 | CHECK_SLA = 'CHECK_SLA' 17 | PUT_FLAG = 'PUT_FLAG' 18 | GET_FLAG = 'GET_FLAG' 19 | 20 | def __str__(self): 21 | return str(self.value) 22 | 23 | 24 | def get_data(): 25 | data = { 26 | 'action': os.environ['ACTION'], 27 | 'host': os.environ['HOST'], 28 | } 29 | 30 | if data['action'] == Action.PUT_FLAG.name or data['action'] == Action.GET_FLAG.name: 31 | data['flag'] = os.environ['FLAG'] 32 | 33 | return data 34 | 35 | 36 | def quit(exit_code, comment='', debug=''): 37 | if isinstance(exit_code, Status): 38 | exit_code = exit_code.value 39 | 40 | print(comment) 41 | print(debug, file=sys.stderr) 42 | exit(exit_code) 43 | 44 | 45 | def post_flag_id(service_id, team_id, flag_id): 46 | flagEndpoint = os.environ['FLAGID_SERVICE'] 47 | requests.post(flagEndpoint + '/postFlagId', json={ 48 | 'token': TOKEN, 49 | 'serviceId': service_id, 50 | 'teamId': team_id, 51 | 'flagId': flag_id 52 | }) 53 | -------------------------------------------------------------------------------- /checkers/CyberUni/setup.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | pip3 install pwntools -------------------------------------------------------------------------------- /checkers/EncryptedNotes/.docker/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM python:latest 2 | 3 | RUN apt update 4 | RUN apt install -y iproute2 5 | 6 | WORKDIR /checker 7 | 8 | COPY . /checker 9 | COPY ./.docker/checkerserver.py /checker/checkerserver.py 10 | 11 | RUN bash ./setup.sh 12 | 13 | CMD ["python3", "checkerserver.py"] -------------------------------------------------------------------------------- /checkers/EncryptedNotes/authlib.cpython-39-x86_64-linux-gnu.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/checkers/EncryptedNotes/authlib.cpython-39-x86_64-linux-gnu.so -------------------------------------------------------------------------------- /checkers/EncryptedNotes/checklib.py: -------------------------------------------------------------------------------- 1 | import sys 2 | from enum import Enum 3 | import requests 4 | import os 5 | 6 | TOKEN = 'PRIVATE-TOKEN' 7 | 8 | 9 | class Status(Enum): 10 | OK = 101 11 | DOWN = 104 12 | ERROR = 110 13 | 14 | 15 | class Action(Enum): 16 | CHECK_SLA = 'CHECK_SLA' 17 | PUT_FLAG = 'PUT_FLAG' 18 | GET_FLAG = 'GET_FLAG' 19 | 20 | def __str__(self): 21 | return str(self.value) 22 | 23 | 24 | def get_data(): 25 | data = { 26 | 'action': os.environ['ACTION'], 27 | 'host': os.environ['HOST'], 28 | } 29 | 30 | if data['action'] == Action.PUT_FLAG.name or data['action'] == Action.GET_FLAG.name: 31 | data['flag'] = os.environ['FLAG'] 32 | 33 | return data 34 | 35 | 36 | def quit(exit_code, comment='', debug=''): 37 | if isinstance(exit_code, Status): 38 | exit_code = exit_code.value 39 | 40 | print(comment) 41 | print(debug, file=sys.stderr) 42 | exit(exit_code) 43 | 44 | 45 | def post_flag_id(service_id, team_id, flag_id): 46 | flagEndpoint = os.environ['FLAGID_SERVICE'] 47 | requests.post(flagEndpoint + '/postFlagId', json={ 48 | 'token': TOKEN, 49 | 'serviceId': service_id, 50 | 'teamId': team_id, 51 | 'flagId': flag_id 52 | }) 53 | -------------------------------------------------------------------------------- /checkers/EncryptedNotes/setup.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | pip3 install pwntools 4 | pip3 install pycrypto -------------------------------------------------------------------------------- /checkers/ExamNotes/.docker/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM python:latest 2 | 3 | RUN apt update 4 | RUN apt install -y iproute2 5 | 6 | WORKDIR /checker 7 | 8 | COPY . /checker 9 | COPY ./.docker/checkerserver.py /checker/checkerserver.py 10 | 11 | RUN bash ./setup.sh 12 | 13 | CMD ["python3", "checkerserver.py"] -------------------------------------------------------------------------------- /checkers/ExamNotes/authlib.cpython-39-x86_64-linux-gnu.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/checkers/ExamNotes/authlib.cpython-39-x86_64-linux-gnu.so -------------------------------------------------------------------------------- /checkers/ExamNotes/checklib.py: -------------------------------------------------------------------------------- 1 | import sys 2 | from enum import Enum 3 | import requests 4 | import os 5 | 6 | TOKEN = 'PRIVATE-TOKEN' 7 | 8 | 9 | class Status(Enum): 10 | OK = 101 11 | DOWN = 104 12 | ERROR = 110 13 | 14 | 15 | class Action(Enum): 16 | CHECK_SLA = 'CHECK_SLA' 17 | PUT_FLAG = 'PUT_FLAG' 18 | GET_FLAG = 'GET_FLAG' 19 | 20 | def __str__(self): 21 | return str(self.value) 22 | 23 | 24 | def get_data(): 25 | data = { 26 | 'action': os.environ['ACTION'], 27 | 'host': os.environ['HOST'], 28 | } 29 | 30 | if data['action'] == Action.PUT_FLAG.name or data['action'] == Action.GET_FLAG.name: 31 | data['flag'] = os.environ['FLAG'] 32 | 33 | return data 34 | 35 | 36 | def quit(exit_code, comment='', debug=''): 37 | if isinstance(exit_code, Status): 38 | exit_code = exit_code.value 39 | 40 | print(comment) 41 | print(debug, file=sys.stderr) 42 | exit(exit_code) 43 | 44 | 45 | def post_flag_id(service_id, team_id, flag_id): 46 | flagEndpoint = os.environ['FLAGID_SERVICE'] 47 | requests.post(flagEndpoint + '/postFlagId', json={ 48 | 'token': TOKEN, 49 | 'serviceId': service_id, 50 | 'teamId': team_id, 51 | 'flagId': flag_id 52 | }) 53 | -------------------------------------------------------------------------------- /checkers/ExamNotes/setup.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | pip3 install pwntools -------------------------------------------------------------------------------- /checkers/ExamPortal/.docker/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM python:latest 2 | 3 | RUN apt update 4 | RUN apt install -y iproute2 5 | 6 | WORKDIR /checker 7 | 8 | COPY . /checker 9 | COPY ./.docker/checkerserver.py /checker/checkerserver.py 10 | 11 | RUN bash ./setup.sh 12 | 13 | CMD ["python3", "checkerserver.py"] -------------------------------------------------------------------------------- /checkers/ExamPortal/authlib.cpython-39-x86_64-linux-gnu.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/checkers/ExamPortal/authlib.cpython-39-x86_64-linux-gnu.so -------------------------------------------------------------------------------- /checkers/ExamPortal/checklib.py: -------------------------------------------------------------------------------- 1 | import sys 2 | from enum import Enum 3 | import requests 4 | import os 5 | 6 | TOKEN = 'PRIVATE-TOKEN' 7 | 8 | 9 | class Status(Enum): 10 | OK = 101 11 | DOWN = 104 12 | ERROR = 110 13 | 14 | 15 | class Action(Enum): 16 | CHECK_SLA = 'CHECK_SLA' 17 | PUT_FLAG = 'PUT_FLAG' 18 | GET_FLAG = 'GET_FLAG' 19 | 20 | def __str__(self): 21 | return str(self.value) 22 | 23 | 24 | def get_data(): 25 | data = { 26 | 'action': os.environ['ACTION'], 27 | 'host': os.environ['HOST'], 28 | } 29 | 30 | if data['action'] == Action.PUT_FLAG.name or data['action'] == Action.GET_FLAG.name: 31 | data['flag'] = os.environ['FLAG'] 32 | 33 | return data 34 | 35 | 36 | def quit(exit_code, comment='', debug=''): 37 | if isinstance(exit_code, Status): 38 | exit_code = exit_code.value 39 | 40 | print(comment) 41 | print(debug, file=sys.stderr) 42 | exit(exit_code) 43 | 44 | 45 | def post_flag_id(service_id, team_id, flag_id): 46 | flagEndpoint = os.environ['FLAGID_SERVICE'] 47 | requests.post(flagEndpoint + '/postFlagId', json={ 48 | 'token': TOKEN, 49 | 'serviceId': service_id, 50 | 'teamId': team_id, 51 | 'flagId': flag_id 52 | }) 53 | -------------------------------------------------------------------------------- /checkers/ExamPortal/setup.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | pip3 install pwntools 4 | pip3 install requests 5 | pip3 install bs4 -------------------------------------------------------------------------------- /checkers/ExamPortal/user_agents.txt: -------------------------------------------------------------------------------- 1 | python-requests/2.28.0 2 | -------------------------------------------------------------------------------- /checkers/README.md: -------------------------------------------------------------------------------- 1 | # Checkers 2 | 3 | Place each checker in its own directory, with the name of the directory equal to the name of the service which the checker checks. Only checkers matching names in the list of services in the top level `.env` file will be deployed. 4 | 5 | Each checker must have a `deploy.sh`, `docker-compose.yaml`, or `Dockerfile` which starts the checker (searched for in that order) 6 | 7 | Templates for checker interfaces are in [`.templates`](.templates). Some tweaking may be required depending on the checker implementation, but ideally most are plug-and-play. 8 | 9 | To use a template, copy the .docker directory from the template into the checker directory, alongside the checker source code. The checker will be run inside a docker container defined by `Dockerfile`, using an XML-RPC wrapper handled in `checkeradapter.py`, and called periodically by the ticker. Additionally, an `adapter.py` may be necessary to interface with the checker and set the options properly. 10 | -------------------------------------------------------------------------------- /checkers/SeaOfHackerz/.docker/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM python:latest 2 | 3 | RUN apt update 4 | RUN apt install -y iproute2 5 | 6 | WORKDIR /checker 7 | 8 | COPY . /checker 9 | COPY ./.docker/adapter.py /checker/adapter.py 10 | COPY ./.docker/checkerserver.py /checker/checkerserver.py 11 | 12 | RUN bash ./setup.sh 13 | 14 | CMD ["python3", "checkerserver.py"] -------------------------------------------------------------------------------- /checkers/SeaOfHackerz/.docker/adapter.py: -------------------------------------------------------------------------------- 1 | import os 2 | import sys 3 | 4 | # Because the checklib expects to send flagids back to a server, we have to run that server locally to avoid needing to modify the checklib 5 | os.environ['FLAGID_SERVICE'] = 'http://127.0.0.1' 6 | os.environ['ACTION'] = 'check' 7 | os.environ['TEAM_ID'] = '0' 8 | os.environ['VULNBOX_ID'] = '0' 9 | os.environ['ROUND'] = '0' 10 | os.environ['FLAGID_TOKEN'] = '' 11 | 12 | import checker 13 | 14 | 15 | 16 | def check(params: list): 17 | host = params[0] 18 | checker.team_ip = host 19 | checker.base_url = f'http://{host}:{checker.PORT}' 20 | checker.check_sla() 21 | 22 | def put(params: list): 23 | host = params[0] 24 | flag = params[1] 25 | flag_id = params[2] 26 | callback_url = params[3] 27 | checker.team_ip = host 28 | checker.base_url = f'http://{host}:{checker.PORT}' 29 | checker.flag = flag 30 | os.environ['FLAGID_SERVICE'] = callback_url 31 | checker.put_flag() 32 | 33 | def get(params: list): 34 | host = params[0] 35 | flag = params[1] 36 | checker.team_ip = host 37 | checker.base_url = f'http://{host}:{checker.PORT}' 38 | checker.flag = flag 39 | checker.get_flag() 40 | 41 | 42 | actions = { 43 | 'check': check, 44 | 'put': put, 45 | 'get': get 46 | } 47 | 48 | if __name__ == '__main__': 49 | action = sys.argv[1] 50 | params = sys.argv[2:] 51 | actions[action](params) 52 | 53 | -------------------------------------------------------------------------------- /checkers/SeaOfHackerz/checker.json: -------------------------------------------------------------------------------- 1 | { 2 | "command": "python3 ./checker.py", 3 | "timeout": { 4 | "CHECK_SLA": 40000, 5 | "PUT_FLAG": 15000, 6 | "GET_FLAG": 15000 7 | } 8 | } -------------------------------------------------------------------------------- /checkers/SeaOfHackerz/checklib.py: -------------------------------------------------------------------------------- 1 | import sys 2 | from enum import Enum 3 | import requests 4 | import os 5 | 6 | 7 | class Status(Enum): 8 | OK = 101 9 | DOWN = 104 10 | CHECKER_DISABLED = 109 11 | ERROR = 110 12 | 13 | 14 | class Action(Enum): 15 | CHECK_SLA = 'CHECK_SLA' 16 | PUT_FLAG = 'PUT_FLAG' 17 | GET_FLAG = 'GET_FLAG' 18 | 19 | def __str__(self): 20 | return str(self.value) 21 | 22 | 23 | def get_data(): 24 | data = { 25 | 'action': os.environ['ACTION'], 26 | 'teamId': os.environ['TEAM_ID'], 27 | 'vulnboxId': os.environ['VULNBOX_ID'], 28 | 'round': os.environ['ROUND'] 29 | } 30 | 31 | if data['action'] == Action.PUT_FLAG.name or data['action'] == Action.GET_FLAG.name: 32 | data['flag'] = os.environ['FLAG'] 33 | else: 34 | data['flag'] = None 35 | 36 | return data 37 | 38 | 39 | def quit(exit_code, comment='', debug=''): 40 | if isinstance(exit_code, Status): 41 | exit_code = exit_code.value 42 | 43 | print(comment) 44 | print(debug, file=sys.stderr) 45 | exit(exit_code) 46 | 47 | 48 | def post_flag_id(service_id, team_id, flag_id): 49 | r = requests.post(os.environ['FLAGID_SERVICE'] + '/postFlagId', json={ 50 | 'token': os.environ['FLAGID_TOKEN'], 51 | 'serviceId': service_id, 52 | 'teamId': team_id, 53 | 'round': int(os.environ['ROUND']), 54 | 'flagId': flag_id 55 | }) 56 | r.raise_for_status() 57 | -------------------------------------------------------------------------------- /checkers/SeaOfHackerz/setup.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | pip3 install pycryptodome==3.16.0 4 | pip3 install requests==2.31.0 -------------------------------------------------------------------------------- /checkers/UberPendragon/.docker/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM python:3.12 2 | 3 | RUN apt update 4 | RUN apt install -y iproute2 5 | 6 | WORKDIR /checker 7 | 8 | COPY . /checker 9 | COPY ./.docker/adapter.py /checker/adapter.py 10 | COPY ./.docker/checkerserver.py /checker/checkerserver.py 11 | 12 | RUN bash ./setup.sh 13 | 14 | CMD ["python3", "checkerserver.py"] 15 | -------------------------------------------------------------------------------- /checkers/UberPendragon/.docker/adapter.py: -------------------------------------------------------------------------------- 1 | import os 2 | import sys 3 | 4 | # Because the checklib expects to send flagids back to a server, we have to run that server locally to avoid needing to modify the checklib 5 | os.environ['FLAGID_SERVICE'] = 'http://127.0.0.1' 6 | os.environ['ACTION'] = 'check' 7 | os.environ['TEAM_ID'] = '0' 8 | os.environ['VULNBOX_ID'] = '0' 9 | os.environ['ROUND'] = '0' 10 | os.environ['FLAGID_TOKEN'] = '' 11 | 12 | import checker 13 | 14 | 15 | 16 | def check(params: list): 17 | host = params[0] 18 | checker.team_ip = host 19 | checker.base_url = f'http://{host}:{checker.PORT}' 20 | checker.check_sla() 21 | 22 | def put(params: list): 23 | host = params[0] 24 | flag = params[1] 25 | flag_id = params[2] 26 | callback_url = params[3] 27 | checker.team_ip = host 28 | checker.base_url = f'http://{host}:{checker.PORT}' 29 | checker.flag = flag 30 | os.environ['FLAGID_SERVICE'] = callback_url 31 | checker.put_flag() 32 | 33 | def get(params: list): 34 | host = params[0] 35 | flag = params[1] 36 | checker.team_ip = host 37 | checker.base_url = f'http://{host}:{checker.PORT}' 38 | checker.flag = flag 39 | checker.get_flag() 40 | 41 | 42 | actions = { 43 | 'check': check, 44 | 'put': put, 45 | 'get': get 46 | } 47 | 48 | if __name__ == '__main__': 49 | action = sys.argv[1] 50 | params = sys.argv[2:] 51 | actions[action](params) 52 | 53 | -------------------------------------------------------------------------------- /checkers/UberPendragon/.gitignore: -------------------------------------------------------------------------------- 1 | __pycache__ 2 | batch_test_checker.py -------------------------------------------------------------------------------- /checkers/UberPendragon/checker.json: -------------------------------------------------------------------------------- 1 | { 2 | "command": "python3 ./checker.py", 3 | "timeout": { 4 | "CHECK_SLA": 30000, 5 | "PUT_FLAG": 10000, 6 | "GET_FLAG": 20000 7 | } 8 | } -------------------------------------------------------------------------------- /checkers/UberPendragon/checklib.py: -------------------------------------------------------------------------------- 1 | import sys 2 | from enum import Enum 3 | import requests 4 | import os 5 | 6 | 7 | class Status(Enum): 8 | OK = 101 9 | DOWN = 104 10 | CHECKER_DISABLED = 109 11 | ERROR = 110 12 | 13 | 14 | class Action(Enum): 15 | CHECK_SLA = 'CHECK_SLA' 16 | PUT_FLAG = 'PUT_FLAG' 17 | GET_FLAG = 'GET_FLAG' 18 | 19 | def __str__(self): 20 | return str(self.value) 21 | 22 | 23 | def get_data(): 24 | data = { 25 | 'action': os.environ['ACTION'], 26 | 'teamId': os.environ['TEAM_ID'], 27 | 'vulnboxId': os.environ['VULNBOX_ID'], 28 | 'round': os.environ['ROUND'] 29 | } 30 | 31 | if data['action'] == Action.PUT_FLAG.name or data['action'] == Action.GET_FLAG.name: 32 | data['flag'] = os.environ['FLAG'] 33 | else: 34 | data['flag'] = None 35 | 36 | return data 37 | 38 | 39 | def quit(exit_code, comment='', debug=''): 40 | if isinstance(exit_code, Status): 41 | exit_code = exit_code.value 42 | 43 | print(comment) 44 | print(debug, file=sys.stderr) 45 | exit(exit_code) 46 | 47 | 48 | def post_flag_id(service_id, team_id, flag_id): 49 | r = requests.post(os.environ['FLAGID_SERVICE'] + '/postFlagId', json={ 50 | 'token': os.environ['FLAGID_TOKEN'], 51 | 'serviceId': service_id, 52 | 'teamId': team_id, 53 | 'round': int(os.environ['ROUND']), 54 | 'flagId': flag_id 55 | }) 56 | r.raise_for_status() 57 | -------------------------------------------------------------------------------- /checkers/UberPendragon/setup.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | pip3 install cryptography==39.0.2 4 | pip3 install pycryptodome==3.16.0 5 | pip3 install fastecdsa==2.2.3 6 | pip3 install requests==2.31.0 7 | pip3 install Pillow==9.5.0 -------------------------------------------------------------------------------- /checkers/alienchefs/.docker/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM python:3.9 2 | 3 | RUN apt update 4 | RUN apt install -y iproute2 5 | 6 | COPY ./.docker/requirements.txt /tmp/requirements.txt 7 | 8 | RUN pip install --no-cache-dir --upgrade -r /tmp/requirements.txt 9 | 10 | WORKDIR /checker 11 | 12 | COPY ./.docker/checkerserver.py /checker/checkerserver.py 13 | 14 | CMD ["python3", "checkerserver.py"] -------------------------------------------------------------------------------- /checkers/alienchefs/.docker/requirements.txt: -------------------------------------------------------------------------------- 1 | requests -------------------------------------------------------------------------------- /checkers/cell/.docker/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM python:latest 2 | 3 | RUN apt update 4 | RUN apt install -y iproute2 5 | 6 | COPY ./.docker/requirements.txt ./requirements.txt 7 | 8 | RUN pip3 install -r requirements.txt 9 | 10 | COPY ./.docker/requirements.txt ./requirements.txt ./ 11 | 12 | RUN pip3 install -r requirements.txt 13 | 14 | WORKDIR /checker 15 | 16 | COPY . /checker 17 | COPY ./.docker/checkerserver.py /checker/checkerserver.py 18 | 19 | CMD ["python3", "checkerserver.py"] -------------------------------------------------------------------------------- /checkers/cell/.docker/requirements.txt: -------------------------------------------------------------------------------- 1 | checklib 2 | requests 3 | protobuf 4 | gevent 5 | bs4 6 | lxml 7 | pwntools 8 | grpcio -------------------------------------------------------------------------------- /checkers/cell/requirements.txt: -------------------------------------------------------------------------------- 1 | checklib 2 | rpyc==5.3.1 3 | pandas==2.2.0 4 | pyarrow==15.0.0 5 | pycryptodome 6 | pydantic 7 | openpyxl 8 | websocket-client 9 | websockets 10 | -------------------------------------------------------------------------------- /checkers/conveyor/.docker/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM python:latest 2 | 3 | RUN apt update 4 | RUN apt install -y iproute2 5 | 6 | COPY ./.docker/requirements.txt ./requirements.txt 7 | 8 | RUN pip3 install -r requirements.txt 9 | 10 | COPY ./.docker/requirements.txt ./requirements.txt ./ 11 | 12 | RUN pip3 install -r requirements.txt 13 | 14 | WORKDIR /checker 15 | 16 | COPY . /checker 17 | COPY ./.docker/checkerserver.py /checker/checkerserver.py 18 | 19 | CMD ["python3", "checkerserver.py"] -------------------------------------------------------------------------------- /checkers/conveyor/.docker/requirements.txt: -------------------------------------------------------------------------------- 1 | checklib 2 | requests 3 | protobuf 4 | gevent 5 | bs4 6 | lxml 7 | pwntools 8 | grpcio -------------------------------------------------------------------------------- /checkers/conveyor/requirements.txt: -------------------------------------------------------------------------------- 1 | checklib 2 | rpyc==5.3.1 3 | pandas==2.2.0 4 | pyarrow==15.0.0 5 | pycryptodome 6 | pydantic 7 | openpyxl 8 | websocket-client 9 | websockets 10 | -------------------------------------------------------------------------------- /checkers/docker-compose.yaml: -------------------------------------------------------------------------------- 1 | services: 2 | checker: 3 | build: 4 | context: ${SERVICE_NAME} 5 | dockerfile: .docker/Dockerfile 6 | args: 7 | - SERVICE_NAME=${SERVICE_NAME} 8 | container_name: ${HOSTNAME} 9 | hostname: ${HOSTNAME} 10 | privileged: true 11 | restart: always 12 | stop_signal: SIGINT 13 | working_dir: /checker 14 | environment: 15 | - GATEWAY=${GATEWAY} 16 | - HOSTNAME=${HOSTNAME} 17 | - SERVICE_ID=${SERVICE_ID} 18 | - SERVICE_NAME=${SERVICE_NAME} 19 | - TICK_SECONDS=${TICK_SECONDS} 20 | networks: 21 | glitch_checker: 22 | ipv4_address: ${IP} 23 | 24 | networks: 25 | glitch_checker: 26 | driver: bridge 27 | external: true 28 | -------------------------------------------------------------------------------- /checkers/exoplanet/.docker/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM python:latest 2 | 3 | RUN apt update 4 | RUN apt install -y iproute2 5 | 6 | COPY ./.docker/requirements.txt ./requirements.txt 7 | 8 | RUN pip3 install -r requirements.txt 9 | 10 | WORKDIR /checker 11 | 12 | COPY . /checker 13 | COPY ./.docker/checkerserver.py /checker/checkerserver.py 14 | 15 | CMD ["python3", "checkerserver.py"] -------------------------------------------------------------------------------- /checkers/exoplanet/.docker/requirements.txt: -------------------------------------------------------------------------------- 1 | checklib 2 | requests 3 | protobuf 4 | gevent 5 | bs4 6 | lxml 7 | pwntools 8 | grpcio -------------------------------------------------------------------------------- /checkers/exoplanet/constellations.txt: -------------------------------------------------------------------------------- 1 | Andromeda 2 | Antlia 3 | Apus 4 | Aquarius 5 | Aquila 6 | Ara 7 | Aries 8 | Auriga 9 | Boötes 10 | Caelum 11 | Camelopardalis 12 | Cancer 13 | Canes 14 | Canis 15 | Canis 16 | Capricornus 17 | Carina 18 | Cassiopeia 19 | Centaurus 20 | Cepheus 21 | Cetus 22 | Chamaeleon 23 | Circinus 24 | Columba 25 | Coma 26 | Corona 27 | Corona 28 | Corvus 29 | Crater 30 | Crux 31 | Cygnus 32 | Delphinus 33 | Dorado 34 | Draco 35 | Equuleus 36 | Eridanus 37 | Fornax 38 | Gemini 39 | Grus 40 | Hercules 41 | Horologium 42 | Hydra 43 | Hydrus 44 | Indus 45 | Lacerta 46 | Leo 47 | Leo 48 | Lepus 49 | Libra 50 | Lupus 51 | Lynx 52 | Lyra 53 | Mensa 54 | Microscopium 55 | Monoceros 56 | Musca 57 | Norma 58 | Octans 59 | Ophiuchus 60 | Orion 61 | Pavo 62 | Pegasus 63 | Perseus 64 | Phoenix 65 | Pictor 66 | Pisces 67 | Piscis 68 | Puppis 69 | Pyxis 70 | Reticulum 71 | Sagitta 72 | Sagittarius 73 | Scorpius 74 | Sculptor 75 | Scutum 76 | Serpens 77 | Sextans 78 | Taurus 79 | Telescopium 80 | Triangulum 81 | Triangulum 82 | Tucana 83 | Ursa 84 | Ursa 85 | Vela 86 | Virgo 87 | Volans 88 | Vulpecula -------------------------------------------------------------------------------- /checkers/martian/.docker/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM python:latest 2 | 3 | ENV TERM=xterm 4 | ENV TERMINFO=/etc/terminfo 5 | 6 | RUN apt update 7 | RUN apt install -y iproute2 8 | 9 | COPY ./.docker/requirements.txt ./requirements.txt 10 | 11 | RUN pip3 install -r requirements.txt 12 | 13 | WORKDIR /checker 14 | 15 | COPY . /checker 16 | COPY ./.docker/checkerserver.py /checker/checkerserver.py 17 | 18 | CMD ["python3", "checkerserver.py"] -------------------------------------------------------------------------------- /checkers/martian/.docker/requirements.txt: -------------------------------------------------------------------------------- 1 | checklib 2 | requests 3 | protobuf 4 | gevent 5 | bs4 6 | lxml 7 | pwntools 8 | grpcio -------------------------------------------------------------------------------- /checkers/nop/.docker/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM python:latest 2 | 3 | RUN apt update 4 | RUN apt install -y iproute2 5 | 6 | WORKDIR /checker 7 | 8 | COPY ./.docker/checkerserver.py /checker/checkerserver.py 9 | 10 | CMD ["python3", "checkerserver.py"] -------------------------------------------------------------------------------- /checkers/nop/.docker/checkerserver.py: -------------------------------------------------------------------------------- 1 | import os 2 | import enum 3 | import socket 4 | import xmlrpc.server 5 | 6 | 7 | class StatusCode(enum.Enum): 8 | OK = 101 9 | CORRUPT = 102 10 | MUMBLE = 103 11 | DOWN = 104 12 | ERROR = 110 13 | 14 | def __bool__(self): 15 | return self.value == self.OK or self.value == self.ERROR 16 | 17 | def __int__(self): 18 | return self.value 19 | 20 | 21 | 22 | def check(host: str, timeout: int) -> dict: 23 | status = {'action': 'check', 'host': host, 'code': int(StatusCode.OK), 'comment': '', 'latency': 0} 24 | print(status, flush=True) 25 | return status 26 | 27 | def put(host: str, flag: str, flag_id: str, timeout: int) -> dict: 28 | status = {'action': 'put', 'host': host, 'code': int(StatusCode.OK), 'comment': '', 'latency': 0, 'flag': flag, 'flag_id': flag_id} 29 | print(status, flush=True) 30 | return status 31 | 32 | def get(host: str, flag: str, flag_id: str, private: str, timeout: int) -> dict: 33 | status = {'action': 'get', 'host': host, 'code': int(StatusCode.OK), 'comment': '', 'latency':0, 'flag': flag, 'flag_id': flag_id} 34 | print(status, flush=True) 35 | return status 36 | 37 | 38 | 39 | # Set up routing correctly 40 | if os.environ.get('GATEWAY'): 41 | os.system('ip route delete default') 42 | os.system('ip route add default via ' + os.environ.get('GATEWAY')) 43 | 44 | # Start the xmlrpc server 45 | socket.setdefaulttimeout(600) 46 | server = xmlrpc.server.SimpleXMLRPCServer(('0.0.0.0', 5000), allow_none=True, logRequests=False) 47 | server.register_function(check, 'check') 48 | server.register_function(put, 'put') 49 | server.register_function(get, 'get') 50 | server.serve_forever() -------------------------------------------------------------------------------- /checkers/nugget/.docker/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM python:latest 2 | 3 | RUN apt update 4 | RUN apt install -y iproute2 5 | 6 | COPY ./.docker/requirements.txt ./requirements.txt 7 | 8 | RUN pip3 install -r requirements.txt 9 | 10 | COPY ./.docker/requirements.txt ./requirements.txt ./ 11 | 12 | RUN pip3 install -r requirements.txt 13 | 14 | WORKDIR /checker 15 | 16 | COPY . /checker 17 | COPY ./.docker/checkerserver.py /checker/checkerserver.py 18 | 19 | CMD ["python3", "checkerserver.py"] -------------------------------------------------------------------------------- /checkers/nugget/.docker/requirements.txt: -------------------------------------------------------------------------------- 1 | checklib 2 | requests 3 | protobuf 4 | gevent 5 | bs4 6 | lxml 7 | pwntools 8 | grpcio -------------------------------------------------------------------------------- /checkers/nugget/checker-priv.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN PRIVATE KEY----- 2 | MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBALW5Y4LqLqPOkM2e 3 | 7gy+avv61tD1plfgXMK16XpbJQbxNGcP1XuaHYdlgLJAoAwIyPqaYhm495DkKtFo 4 | 2++noosLXo/mahqA7JS9GcAo//PFVNMsQwvnLxMUAvVYPsDAht0kbuHYTIpgbtOE 5 | fOMFy/IIN4aCaudqNWyFhCJch3H5AgMBAAECgYA9ZA/WHj77X8FTdal97KY/0hHY 6 | LeSwMz+jF8l0aG4t1jaZyqOYSgxHvWao0WRALIeZAaa6gd5AuJQugnoqkDs8pDM5 7 | m5AnbwSlyOPn8MDpXNgqaUzVnRzduYes+lt2DoiJ7NN0eEe6lIl0XNpKjIlO3tGk 8 | 1Grxtv/6ZD+seuyqwQJBANgr/pvrzUKM2uQ9rDEIbnhZp2PuOek4SwHHTQl4mlJQ 9 | VD+XhWoRAu8QQwWpoz6CeYPe/pUEZmFqNCHCNuQKIx0CQQDXNKDAvLTDZCgjZZ6H 10 | hUGFwoWhrJI8SCaUsPeyiFqUJ7qk89Y2f2SFKhrx0jE5EQFHtGPICDg2bJMKDXxY 11 | bJeNAkATQoAxxiWIi2IpObFwwO6OvHYkeiIgvEo6g1ZCxMMDGHMZI1fYpmFbiVhf 12 | VcjcleVbsW9/OWAhx8OTSml3kculAkEAoIjpwd0DGx6DsqQDdiS5lAZfmRMao01P 13 | Omwo2k1NBGf+mz4p9c1iNtQJ9YpOnbtJsSuno3g+NpsXtNAKigu3oQJAUoCPVE8N 14 | p4PoWgtYnd2ji29kCOzlqsBlx7uhsBE7nhtHbaYwXV65kpUWMkUExZpeyYh5ZG2+ 15 | 4JMqp7vnrJHvOA== 16 | -----END PRIVATE KEY----- 17 | -------------------------------------------------------------------------------- /checkers/nugget/requirements.txt: -------------------------------------------------------------------------------- 1 | checklib 2 | rpyc==5.3.1 3 | pandas==2.2.0 4 | pyarrow==15.0.0 5 | pycryptodome 6 | pydantic 7 | openpyxl 8 | websocket-client 9 | websockets 10 | -------------------------------------------------------------------------------- /checkers/simple-latency/.docker/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM python:latest 2 | 3 | RUN apt update 4 | RUN apt install -y iproute2 5 | 6 | COPY ./.docker/requirements.txt /tmp/requirements.txt 7 | 8 | RUN pip install --no-cache-dir --upgrade -r /tmp/requirements.txt 9 | 10 | WORKDIR /checker 11 | 12 | COPY ./.docker/checkerserver.py /checker/checkerserver.py 13 | 14 | CMD ["python3", "checkerserver.py"] -------------------------------------------------------------------------------- /checkers/simple-latency/.docker/requirements.txt: -------------------------------------------------------------------------------- 1 | requests -------------------------------------------------------------------------------- /checkers/simple/.docker/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM python:latest 2 | 3 | RUN apt update 4 | RUN apt install -y iproute2 5 | 6 | COPY ./.docker/requirements.txt /tmp/requirements.txt 7 | 8 | RUN pip install --no-cache-dir --upgrade -r /tmp/requirements.txt 9 | 10 | WORKDIR /checker 11 | 12 | COPY ./.docker/checkerserver.py /checker/checkerserver.py 13 | 14 | CMD ["python3", "checkerserver.py"] -------------------------------------------------------------------------------- /checkers/simple/.docker/requirements.txt: -------------------------------------------------------------------------------- 1 | requests -------------------------------------------------------------------------------- /scripts/down.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Check if cwd is range 4 | if [[ ! -d "./checkers" && -d "./services" && -d "./.docker" ]]; then 5 | echo "Please run this script from the range directory (i.e. sh scripts/down.sh))" 6 | exit 1 7 | fi 8 | 9 | API_KEY="" 10 | TEAM_COUNT=2 11 | VPN_PER_TEAM=1 12 | SERVER_URL="localhost" 13 | VPN_PORT=0 14 | API_PORT=0 15 | TEAM_TOKENS="" 16 | 17 | source .env set 18 | source .env.live set 19 | 20 | SERVICE_LIST=$(echo $SERVICES | tr ',' '\n') 21 | CHECKER_LIST=$(echo $CHECKERS | tr ',' '\n') 22 | 23 | # If checker list is empty, default to all services 24 | if [ -z "$CHECKERS" ]; then 25 | CHECKERS=$SERVICES 26 | CHECKER_LIST=$SERVICE_LIST 27 | fi 28 | 29 | for SERVICE_NAME in $CHECKER_LIST; do 30 | dir="./checkers/$SERVICE_NAME" 31 | # If the file is a directory 32 | if [ -d "$dir" ]; then 33 | # Generate a random root password 34 | HOSTNAME=$(echo "checker-$SERVICE_NAME" | tr '[:upper:]' '[:lower:]') 35 | echo "Stopping $HOSTNAME..." 36 | docker stop $HOSTNAME -t 1 >/dev/null & 37 | fi 38 | done 39 | 40 | # Loop from 1 to $TEAM_COUNT 41 | for TEAM_ID in $(seq 1 $TEAM_COUNT); do 42 | for SERVICE_NAME in $SERVICE_LIST; do 43 | dir="./services/$SERVICE_NAME" 44 | # If the file is a directory 45 | if [ -d "$dir" ]; then 46 | # Generate a random root password 47 | HOSTNAME=$(echo "team$TEAM_ID-$SERVICE_NAME" | tr '[:upper:]' '[:lower:]') 48 | echo "Stopping $HOSTNAME..." 49 | docker stop $HOSTNAME -t 1 >/dev/null & 50 | fi 51 | done 52 | done 53 | 54 | sleep 2 55 | 56 | echo "Stopping range services..." 57 | API_KEY="" PEERS="" TEAM_TOKENS="" START_TIME_PATH="" CHECKERS=$CHECKERS docker compose down -t 2 >/dev/null 58 | -------------------------------------------------------------------------------- /scripts/install.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # Check if script is run as root 4 | if [ "$(id -u)" != "0" ]; then 5 | echo "Please run this script as root (i.e. sudo sh scripts/install.sh)" 6 | exit 1 7 | fi 8 | 9 | # Add Docker's official GPG key: 10 | sudo apt-get update 11 | sudo apt-get install -y ca-certificates curl 12 | sudo install -m 0755 -d /etc/apt/keyrings 13 | sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc 14 | sudo chmod a+r /etc/apt/keyrings/docker.asc 15 | 16 | # Add the repository to Apt sources: 17 | echo \ 18 | "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \ 19 | $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | 20 | sudo tee /etc/apt/sources.list.d/docker.list >/dev/null 21 | sudo apt-get update 22 | 23 | # Install docker 24 | sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin 25 | 26 | echo -e '{ "experimental": true, "ip6tables": true, "dns" : [ "8.8.8.8" , "8.8.4.4" ] }' >/etc/docker/daemon.json 27 | 28 | systemctl enable docker 29 | systemctl restart docker 30 | 31 | # Install zip 32 | sudo apt-get install -y zip 33 | 34 | # Copy sample.env to .env if it doesn't already exist 35 | cp -n sample.env .env 36 | -------------------------------------------------------------------------------- /scripts/rangemaster.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Check if cwd is range 4 | if [[ ! -d "./checkers" && -d "./services" && -d "./.docker" ]]; then 5 | echo "Please run this script from the range directory (i.e. sh scripts/rangemaster.sh))" 6 | exit 1 7 | fi 8 | 9 | docker exec -it rangemaster /bin/sh 10 | -------------------------------------------------------------------------------- /services/.docker/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM docker:latest 2 | 3 | # Update apk 4 | RUN apk update 5 | RUN apk upgrade 6 | 7 | # Install ssh server 8 | RUN apk add openssh-server 9 | 10 | # Generate host keys 11 | RUN ssh-keygen -A 12 | 13 | # Install curl 14 | RUN apk add curl 15 | 16 | ARG SERVICE_NAME 17 | 18 | # Copy service directory 19 | COPY ./$SERVICE_NAME /service 20 | 21 | # Copy entrypoint script 22 | COPY ./.docker/entrypoint.sh /entrypoint.sh 23 | 24 | # Set the entrypoint 25 | ENTRYPOINT ["/bin/sh", "/entrypoint.sh"] -------------------------------------------------------------------------------- /services/CyberUni/README.md: -------------------------------------------------------------------------------- 1 | # CyberUniversity infrastructure 2 | 3 | The modern CyberUni has adopted a Single Sign-On authentication model for all of its applications! 4 | 5 | In order to interact with each of the three applications you will need a token, which can be obtained from the central Authentication Service. 6 | 7 | ## Authentication Service 8 | 9 | The central AuthService lets you register users and get login tokens for all the other applications. There is an example client for reference using the pwntools Python's library, but you are free to create your own. 10 | 11 | The core library for authentication is authlib, provided for all python versions from 3.8 to 3.11. 12 | 13 | ## ExamNotes 14 | 15 | This application, after authentication with the token, let you save, read and list plaintext notes, that will be accessible only to you. 16 | 17 | ## EncryptedNotes 18 | 19 | This is an application that lets you run functions on encrypted data. After logging in, you can set some private keyword and data, or run functions with other users' keywords as input. 20 | 21 | You can find an example client that sets up a user, or evaluates the two functions. 22 | 23 | ## ExamPortal 24 | 25 | This is the website where online exams are graded. After logging in with the token, you can take part in an exam and answer its questions; the exam will be passed only if you answer correctly to all the questions. 26 | -------------------------------------------------------------------------------- /services/CyberUni/auth_service/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:20.04 2 | 3 | RUN apt update \ 4 | && apt install -y python3 python3-dev socat python3-pip gcc g++ make libffi-dev 5 | 6 | RUN useradd --no-create-home --shell /bin/false --uid 1000 --user-group srv 7 | 8 | ADD authlib.cpython-38-x86_64-linux-gnu.so /service/server/ 9 | ADD server.py user_handlers.py /service/server/ 10 | 11 | WORKDIR /service/server 12 | RUN mkdir users 13 | RUN chmod +x server.py 14 | RUN chmod -R 777 users 15 | 16 | USER srv 17 | ENV MasterKey="AuthenticationSystemMasterKey000" 18 | ENV ExamNotesKey="ExamNotesAppDefaultKey0000000000" 19 | ENV EncryptedNotesKey="EncryptedNotesAppDefaultKey00000" 20 | ENV ExamPortalKey="ExamPortalAppDefaultKey000000000" 21 | 22 | ENTRYPOINT socat -d TCP-LISTEN:8000,reuseaddr,fork EXEC:'timeout -k 5 30 python3 -u server.py' 23 | -------------------------------------------------------------------------------- /services/CyberUni/auth_service/authlib.cpython-310-x86_64-linux-gnu.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/services/CyberUni/auth_service/authlib.cpython-310-x86_64-linux-gnu.so -------------------------------------------------------------------------------- /services/CyberUni/auth_service/authlib.cpython-311-x86_64-linux-gnu.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/services/CyberUni/auth_service/authlib.cpython-311-x86_64-linux-gnu.so -------------------------------------------------------------------------------- /services/CyberUni/auth_service/authlib.cpython-38-x86_64-linux-gnu.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/services/CyberUni/auth_service/authlib.cpython-38-x86_64-linux-gnu.so -------------------------------------------------------------------------------- /services/CyberUni/auth_service/authlib.cpython-39-x86_64-linux-gnu.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/services/CyberUni/auth_service/authlib.cpython-39-x86_64-linux-gnu.so -------------------------------------------------------------------------------- /services/CyberUni/auth_service/user_handlers.py: -------------------------------------------------------------------------------- 1 | import os 2 | import authlib 3 | 4 | base_path = "users" 5 | 6 | def add_user(username, password): 7 | try: 8 | secret = authlib.get_secret(password) 9 | with open(os.path.join(base_path, username), "x") as f: 10 | f.write(secret) 11 | return True 12 | except FileExistsError: 13 | return False 14 | 15 | def retrieve_secret_by_username(username): 16 | try: 17 | with open(os.path.join(base_path, username), "r") as f: 18 | return f.read().strip() 19 | return True 20 | except FileNotFoundError: 21 | return False 22 | -------------------------------------------------------------------------------- /services/CyberUni/deploy.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -e; 4 | DB_PASS=$(hexdump -vn16 -e'4/4 "%08X" 1 "\n"' /dev/urandom); 5 | 6 | if [[ ! -f ".env" ]] 7 | then 8 | echo "DB_PASS=${DB_PASS}" > .env 9 | fi 10 | 11 | docker-compose up --build --remove-orphans -d 12 | -------------------------------------------------------------------------------- /services/CyberUni/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: "3" 2 | 3 | services: 4 | examportal-db: 5 | image: mysql 6 | container_name: "examportal-db" 7 | environment: 8 | MYSQL_ROOT_PASSWORD: "${DB_PASS}" 9 | MYSQL_DATABASE: examportal 10 | MYSQL_ROOT_HOST: "%" 11 | command: ["--default-authentication-plugin=mysql_native_password"] 12 | restart: unless-stopped 13 | volumes: 14 | - ./examportal/db/init:/docker-entrypoint-initdb.d 15 | - ./examportal/db/data:/var/lib/mysql 16 | 17 | auth_service: 18 | build: ./auth_service 19 | container_name: "auth_service" 20 | ports: 21 | - "0.0.0.0:1234:8000" 22 | restart: unless-stopped 23 | 24 | examnotes: 25 | build: ./examnotes 26 | container_name: "examnotes" 27 | ports: 28 | - "0.0.0.0:1235:8000" 29 | restart: unless-stopped 30 | 31 | encryptednotes: 32 | build: ./encryptednotes 33 | container_name: "encryptednotes" 34 | ports: 35 | - "0.0.0.0:1236:8000" 36 | restart: unless-stopped 37 | 38 | examportal: 39 | build: ./examportal 40 | container_name: "examportal" 41 | environment: 42 | DBHOST: examportal-db 43 | DBUSER: root 44 | DBPASS: "${DB_PASS}" 45 | DBNAME: examportal 46 | ports: 47 | - "0.0.0.0:1237:80" 48 | restart: unless-stopped 49 | depends_on: 50 | - examportal-db 51 | -------------------------------------------------------------------------------- /services/CyberUni/encryptednotes/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:20.04 2 | 3 | RUN apt-get update && apt-get install -y python3 python3-dev socat python3-pip 4 | 5 | WORKDIR /service/server 6 | COPY app/requirements.txt . 7 | RUN pip install -r ./requirements.txt 8 | 9 | COPY app . 10 | RUN mkdir -p /service/server/data && chown -R nobody /service/server 11 | USER nobody 12 | ENV EncryptedNotesKey="EncryptedNotesAppDefaultKey00000" 13 | 14 | ENTRYPOINT socat -d TCP-LISTEN:8000,reuseaddr,fork EXEC:'python3 server.py' 15 | -------------------------------------------------------------------------------- /services/CyberUni/encryptednotes/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/services/CyberUni/encryptednotes/__init__.py -------------------------------------------------------------------------------- /services/CyberUni/encryptednotes/app/auth.py: -------------------------------------------------------------------------------- 1 | import json 2 | from Crypto.Cipher import AES 3 | import sys 4 | import time 5 | import string 6 | import os 7 | 8 | APP_KEY = os.environ["EncryptedNotesKey"].encode() 9 | 10 | ALPH = string.ascii_letters + string.digits 11 | 12 | def validate_string(s): 13 | return all([c in ALPH for c in s]) and len(s) > 7 and len(s) < 65 14 | 15 | def handle_token(token): 16 | try: 17 | app_token, service_token = [bytes.fromhex(x) for x in token.split(".")] 18 | cipher = AES.new(APP_KEY, AES.MODE_CTR, nonce = service_token[:8], initial_value = service_token[8:16]) 19 | service_token = json.loads(cipher.decrypt(service_token[16:])) 20 | user1 = bytes.fromhex(service_token["user"]) 21 | key = bytes.fromhex(service_token["key"]) 22 | cipher = AES.new(key, AES.MODE_CTR, nonce = app_token[:8], initial_value = app_token[8:16]) 23 | app_token = json.loads(cipher.decrypt(app_token[16:])) 24 | user2 = bytes.fromhex(app_token["user"]) 25 | cur_time = int(time.time()) 26 | assert service_token["type"] == "SERVICE_TOKEN" 27 | assert app_token["type"] == "APP_TOKEN" 28 | assert abs(cur_time-int(app_token["ts"]))<120 and abs(cur_time-int(service_token["ts"]))<120 29 | assert user1 == user2 30 | assert validate_string(user1.decode()) 31 | return user1.decode() 32 | except: 33 | return None 34 | -------------------------------------------------------------------------------- /services/CyberUni/encryptednotes/app/ot.py: -------------------------------------------------------------------------------- 1 | from Crypto.Util.number import getPrime, inverse 2 | from Crypto.Random import random 3 | import gmpy2 4 | 5 | 6 | class Sender: 7 | def __init__(self, m): 8 | self.m = m 9 | p, q = getPrime(512), getPrime(512) 10 | e, N = 65537, p*q 11 | phi = (p-1)*(q-1) 12 | d = inverse(e, phi) 13 | 14 | self.N = N 15 | self.e = e 16 | self.d = d 17 | 18 | def round1(self): 19 | x = [(random.randrange(1 << 128), random.randrange(1 << 128))]*len(self.m) 20 | self.x = x 21 | return (self.N, self.e), x 22 | 23 | def round3(self, v): 24 | n = len(v) 25 | assert n == len(self.m) 26 | c = [] 27 | for i in range(n): 28 | k = [int(gmpy2.powmod(v[i]-t, self.d, self.N)) for t in self.x[i]] 29 | cc = [(kk+mm) % self.N for kk, mm in zip(k, self.m[i])] 30 | c.append(cc) 31 | return c 32 | 33 | 34 | class Receiver: 35 | def __init__(self, b): 36 | self.b = b 37 | 38 | def round2(self, pk, x): 39 | N, e = pk 40 | n = len(x) 41 | assert n == len(self.b) 42 | 43 | v = [] 44 | k = [] 45 | for i in range(n): 46 | kk = random.randrange(1 << 2048) 47 | k.append(kk) 48 | cur = x[i][self.b[i]] + pow(kk, e, N) 49 | v.append(cur % N) 50 | self.k = k 51 | self.N = N 52 | return v 53 | 54 | def decode(self, c): 55 | n = len(c) 56 | assert n == len(self.b) 57 | 58 | m = [] 59 | for i in range(n): 60 | mm = (c[i][self.b[i]]-self.k[i]) % self.N 61 | m.append(mm) 62 | return m 63 | -------------------------------------------------------------------------------- /services/CyberUni/encryptednotes/app/requirements.txt: -------------------------------------------------------------------------------- 1 | gmpy2==2.1.2 2 | pycryptodome==3.14.1 3 | -------------------------------------------------------------------------------- /services/CyberUni/examnotes/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:20.04 2 | 3 | RUN apt update \ 4 | && apt install -y python3 python3-dev socat python3-pip gcc g++ make libffi-dev 5 | 6 | WORKDIR /service/server 7 | ADD app/requirements.txt . 8 | RUN pip3 install -r requirements.txt 9 | 10 | RUN useradd --no-create-home --shell /bin/false --uid 1000 --user-group app1 11 | 12 | ADD app . 13 | RUN mkdir data 14 | RUN chmod +x server.py 15 | RUN chmod -R 777 data 16 | 17 | USER app1 18 | ENV ExamNotesKey="ExamNotesAppDefaultKey0000000000" 19 | 20 | ENTRYPOINT socat -d TCP-LISTEN:8000,reuseaddr,fork EXEC:'timeout -k 5 30 python3 -u server.py' 21 | -------------------------------------------------------------------------------- /services/CyberUni/examnotes/app/auth.py: -------------------------------------------------------------------------------- 1 | import json 2 | from Crypto.Cipher import AES 3 | import sys 4 | import time 5 | import string 6 | import os 7 | 8 | APP_KEY = os.environ["ExamNotesKey"].encode() 9 | 10 | ALPH = string.ascii_letters + string.digits 11 | 12 | def validate_string(s): 13 | return all([c in ALPH for c in s]) and len(s) > 7 and len(s) < 65 14 | 15 | def handle_token(token): 16 | try: 17 | app_token, service_token = [bytes.fromhex(x) for x in token.split(".")] 18 | cipher = AES.new(APP_KEY, AES.MODE_CTR, nonce = service_token[:8], initial_value = service_token[8:16]) 19 | service_token = json.loads(cipher.decrypt(service_token[16:])) 20 | user1 = bytes.fromhex(service_token["user"]) 21 | key = bytes.fromhex(service_token["key"]) 22 | cipher = AES.new(key, AES.MODE_CTR, nonce = app_token[:8], initial_value = app_token[8:16]) 23 | app_token = json.loads(cipher.decrypt(app_token[16:])) 24 | user2 = bytes.fromhex(app_token["user"]) 25 | cur_time = int(time.time()) 26 | assert service_token["type"] == "SERVICE_TOKEN" 27 | assert app_token["type"] == "APP_TOKEN" 28 | assert abs(cur_time-int(app_token["ts"]))<120 and abs(cur_time-int(service_token["ts"]))<120 29 | assert user1 == user2 30 | assert validate_string(user1.decode()) 31 | return user1 32 | except: 33 | return None 34 | -------------------------------------------------------------------------------- /services/CyberUni/examnotes/app/requirements.txt: -------------------------------------------------------------------------------- 1 | pycryptodome==3.14.1 -------------------------------------------------------------------------------- /services/CyberUni/examportal/.gitignore: -------------------------------------------------------------------------------- 1 | db/data/* -------------------------------------------------------------------------------- /services/CyberUni/examportal/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM php:7.2-apache 2 | RUN docker-php-ext-install mysqli 3 | 4 | COPY app /var/www/html 5 | 6 | ENV ExamPortalKey="ExamPortalAppDefaultKey000000000" 7 | -------------------------------------------------------------------------------- /services/CyberUni/examportal/app/classes/user.php: -------------------------------------------------------------------------------- 1 | username = $username; 12 | } 13 | 14 | public function do_login($tfa) { 15 | $db_user = get_user($this->username); 16 | if ($db_user === false) { 17 | // add the user, trusting the login token 18 | if ($tfa === "") $tfa = NULL; 19 | $res = add_user($this->username, $tfa); 20 | if ($res === -1) return false; 21 | $this->id = $res; 22 | $this->tfa = $tfa; 23 | return true; 24 | } 25 | if (($db_user["2fa"] !== NULL) && ($db_user["2fa"] !== $tfa)) return false; 26 | $this->id = $db_user["id"]; 27 | $this->tfa = $db_user["2fa"]; 28 | return true; 29 | } 30 | 31 | public function getId() { 32 | return $this->id; 33 | } 34 | 35 | public function getUsername() { 36 | return $this->username; 37 | } 38 | 39 | public function has2fa() { 40 | return ($this->tfa !== NULL); 41 | } 42 | } 43 | 44 | ?> 45 | -------------------------------------------------------------------------------- /services/CyberUni/examportal/app/exam_submit.php: -------------------------------------------------------------------------------- 1 | "Login is required"])); 8 | 9 | if (isset($_POST)) { 10 | $obj = json_decode(file_get_contents("php://input"), true); 11 | $id = $obj["id"]; 12 | $exam = Exam::fromId($id); 13 | if ($exam->DB_get() == false) die("No such exam"); 14 | $correct = $exam->getCorrect(); 15 | $num = count($correct); 16 | $score = 0; 17 | foreach($correct as $i=>$corr_ans) { 18 | $given_ans = $obj["answers"][$i]; 19 | if ($corr_ans == $given_ans) $score++; 20 | } 21 | if ($score == $num) $message = $exam->getPrize(); 22 | else $message = "Better luck next time!"; 23 | 24 | echo json_encode(["msg" => $message]); 25 | } 26 | ?> 27 | -------------------------------------------------------------------------------- /services/CyberUni/examportal/app/logout.php: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /services/CyberUni/examportal/app/utils.php: -------------------------------------------------------------------------------- 1 | 7) and (strlen($s)<65); 11 | } 12 | 13 | function decode_token($token) { 14 | $app_key = getenv("ExamPortalKey"); 15 | try { 16 | $pieces = explode(".", $token); 17 | $app_token = $pieces[0]; 18 | $service_token = $pieces[1]; 19 | 20 | $st_nonce = substr($service_token, 0, 32); 21 | $st_enc = substr($service_token, 32); 22 | 23 | $st_val = decrypt($st_enc, $app_key, $st_nonce); 24 | $st = json_decode($st_val, true); 25 | if ($st === false) return false; 26 | 27 | $user1 = hex2bin($st["user"]); 28 | $key = hex2bin($st["key"]); 29 | $at_nonce = substr($app_token, 0, 32); 30 | $at_enc = substr($app_token, 32); 31 | $at_val = decrypt($at_enc, $key, $at_nonce); 32 | $at = json_decode($at_val, true); 33 | if ($at === false) return false; 34 | 35 | $user2 = hex2bin($at["user"]); 36 | if ($st["type"] !== "SERVICE_TOKEN") return false; 37 | if ($at["type"] !== "APP_TOKEN") return false; 38 | if ($user1 !== $user2) return false; 39 | if (validate_username($user1)) return $user1; 40 | else return false; 41 | } catch (Exception $e) { 42 | echo 'Caught exception: ', $e->getMessage(), "\n"; 43 | return false; 44 | } 45 | } 46 | 47 | 48 | ?> 49 | -------------------------------------------------------------------------------- /services/CyberUni/examportal/db/init/init.sql: -------------------------------------------------------------------------------- 1 | USE examportal; 2 | 3 | CREATE TABLE users ( 4 | id INT PRIMARY KEY AUTO_INCREMENT, 5 | username VARCHAR(30) NOT NULL UNIQUE, 6 | 2fa VARCHAR(10) 7 | ); 8 | 9 | CREATE TABLE exams( 10 | id INT PRIMARY KEY AUTO_INCREMENT, 11 | owner INT NOT NULL, 12 | name VARCHAR(100), 13 | questions TEXT, 14 | answers TEXT, 15 | correct VARCHAR(500), 16 | prize VARCHAR(32), 17 | FOREIGN KEY (owner) REFERENCES users(id) 18 | ); 19 | -------------------------------------------------------------------------------- /services/README.md: -------------------------------------------------------------------------------- 1 | # Services 2 | 3 | Place each service in its own directory, with the name of the directory equal to the name of the service. 4 | 5 | Each service must have a `docker-compose.yml` file that defines the service, or a `deploy.sh` which starts the service. If both exist, only the `deploy.sh` script will be run. 6 | 7 | Do not touch [`docker-compose.yml`](../docker-compose.yml) or [`.docker`](.docker). These are used to generate the host containers for each service. 8 | 9 | Do not place anything in this directory that is not a directory containing a service - it will break the service generation. 10 | -------------------------------------------------------------------------------- /services/SeaOfHackerz/backend/.gitignore: -------------------------------------------------------------------------------- 1 | __pycache__ -------------------------------------------------------------------------------- /services/SeaOfHackerz/backend/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM python:3.11-slim-buster 2 | 3 | WORKDIR /code 4 | COPY ./requirements.txt /code/requirements.txt 5 | RUN pip install --no-cache-dir --upgrade -r /code/requirements.txt 6 | 7 | COPY ./app.py /code/app.py 8 | 9 | CMD ["gunicorn", "--workers=32", "--bind", "0.0.0.0:5000", "app:app", "--log-level", "debug"] -------------------------------------------------------------------------------- /services/SeaOfHackerz/backend/requirements.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/services/SeaOfHackerz/backend/requirements.txt -------------------------------------------------------------------------------- /services/SeaOfHackerz/default.conf: -------------------------------------------------------------------------------- 1 | limit_conn_zone $binary_remote_addr zone=addr:10m; 2 | 3 | server { 4 | limit_conn addr 4096; 5 | 6 | limit_conn_log_level error; 7 | listen 80; 8 | server_name _; 9 | 10 | location / { 11 | proxy_pass http://backend:5000; 12 | proxy_set_header Host $host; 13 | proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 14 | proxy_set_header X-Scheme $scheme; 15 | } 16 | } -------------------------------------------------------------------------------- /services/SeaOfHackerz/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: "3.7" 2 | 3 | services: 4 | postgres: 5 | container_name: postgres 6 | image: postgres:15.3 7 | restart: unless-stopped 8 | environment: 9 | - POSTGRES_USER=postgres 10 | - POSTGRES_PASSWORD=postgres 11 | volumes: 12 | - ./initdb.sql:/docker-entrypoint-initdb.d/initdb.sql:ro 13 | networks: 14 | - service_network 15 | 16 | backend: 17 | container_name: backend 18 | build: ./backend 19 | restart: unless-stopped 20 | environment: 21 | - POSTGRES_HOST=postgres 22 | - POSTGRES_PORT=5432 23 | - POSTGRES_USERNAME=postgres 24 | - POSTGRES_PASSWORD=postgres 25 | - POSTGRES_STATEMENT_TIMEOUT=7000 26 | networks: 27 | - service_network 28 | 29 | nginx: 30 | image: nginx:latest 31 | restart: unless-stopped 32 | ports: 33 | - "5000:80" 34 | networks: 35 | - service_network 36 | volumes: 37 | - ./default.conf:/etc/nginx/conf.d/default.conf:ro 38 | 39 | frontend: 40 | container_name: frontend 41 | build: ./frontend 42 | restart: unless-stopped 43 | links: 44 | - backend 45 | ports: 46 | - "80:3000" 47 | networks: 48 | - service_network 49 | 50 | networks: 51 | service_network: 52 | driver: bridge 53 | -------------------------------------------------------------------------------- /services/SeaOfHackerz/frontend/.dockerignore: -------------------------------------------------------------------------------- 1 | **/node_modules/ -------------------------------------------------------------------------------- /services/SeaOfHackerz/frontend/.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | 8 | # testing 9 | /coverage 10 | 11 | # production 12 | /build 13 | 14 | # misc 15 | .DS_Store 16 | .env.local 17 | .env.development.local 18 | .env.test.local 19 | .env.production.local 20 | 21 | npm-debug.log* 22 | yarn-debug.log* 23 | yarn-error.log* 24 | -------------------------------------------------------------------------------- /services/SeaOfHackerz/frontend/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM node:20 2 | 3 | WORKDIR /app 4 | 5 | COPY . . 6 | 7 | RUN npm i 8 | RUN npm i serve 9 | RUN npm run build 10 | ENV NODE_ENV production 11 | 12 | EXPOSE 3000 13 | 14 | CMD [ "npx", "serve", "-s", "build" ] -------------------------------------------------------------------------------- /services/SeaOfHackerz/frontend/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "frontend", 3 | "version": "0.1.0", 4 | "private": true, 5 | "dependencies": { 6 | "@testing-library/jest-dom": "^5.16.5", 7 | "@testing-library/react": "^13.4.0", 8 | "@testing-library/user-event": "^13.5.0", 9 | "bootstrap": "^5.3.0", 10 | "react": "^18.2.0", 11 | "react-bootstrap": "^2.8.0", 12 | "react-dom": "^18.2.0", 13 | "react-router-dom": "^6.14.1", 14 | "react-scripts": "5.0.1", 15 | "web-vitals": "^2.1.4" 16 | }, 17 | "scripts": { 18 | "start": "react-scripts start", 19 | "build": "react-scripts build", 20 | "test": "react-scripts test", 21 | "eject": "react-scripts eject" 22 | }, 23 | "eslintConfig": { 24 | "extends": [ 25 | "react-app", 26 | "react-app/jest" 27 | ] 28 | }, 29 | "browserslist": { 30 | "production": [ 31 | ">0.2%", 32 | "not dead", 33 | "not op_mini all" 34 | ], 35 | "development": [ 36 | "last 1 chrome version", 37 | "last 1 firefox version", 38 | "last 1 safari version" 39 | ] 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /services/SeaOfHackerz/frontend/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/services/SeaOfHackerz/frontend/public/favicon.ico -------------------------------------------------------------------------------- /services/SeaOfHackerz/frontend/public/img/bg-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/services/SeaOfHackerz/frontend/public/img/bg-1.jpg -------------------------------------------------------------------------------- /services/SeaOfHackerz/frontend/public/img/bg-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/services/SeaOfHackerz/frontend/public/img/bg-2.jpg -------------------------------------------------------------------------------- /services/SeaOfHackerz/frontend/public/img/bg-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/services/SeaOfHackerz/frontend/public/img/bg-2.png -------------------------------------------------------------------------------- /services/SeaOfHackerz/frontend/public/img/bg-3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/services/SeaOfHackerz/frontend/public/img/bg-3.jpg -------------------------------------------------------------------------------- /services/SeaOfHackerz/frontend/public/img/bg-4-full.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/services/SeaOfHackerz/frontend/public/img/bg-4-full.jpg -------------------------------------------------------------------------------- /services/SeaOfHackerz/frontend/public/img/bg-4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/services/SeaOfHackerz/frontend/public/img/bg-4.jpg -------------------------------------------------------------------------------- /services/SeaOfHackerz/frontend/public/img/bg-scroll.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/services/SeaOfHackerz/frontend/public/img/bg-scroll.png -------------------------------------------------------------------------------- /services/SeaOfHackerz/frontend/public/img/boat/btn-hull-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/services/SeaOfHackerz/frontend/public/img/boat/btn-hull-0.png -------------------------------------------------------------------------------- /services/SeaOfHackerz/frontend/public/img/boat/btn-hull-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/services/SeaOfHackerz/frontend/public/img/boat/btn-hull-1.png -------------------------------------------------------------------------------- /services/SeaOfHackerz/frontend/public/img/boat/btn-hull-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/services/SeaOfHackerz/frontend/public/img/boat/btn-hull-2.png -------------------------------------------------------------------------------- /services/SeaOfHackerz/frontend/public/img/boat/btn-porthole-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/services/SeaOfHackerz/frontend/public/img/boat/btn-porthole-0.png -------------------------------------------------------------------------------- /services/SeaOfHackerz/frontend/public/img/boat/btn-porthole-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/services/SeaOfHackerz/frontend/public/img/boat/btn-porthole-1.png -------------------------------------------------------------------------------- /services/SeaOfHackerz/frontend/public/img/boat/btn-porthole-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/services/SeaOfHackerz/frontend/public/img/boat/btn-porthole-2.png -------------------------------------------------------------------------------- /services/SeaOfHackerz/frontend/public/img/boat/btn-sails-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/services/SeaOfHackerz/frontend/public/img/boat/btn-sails-0.png -------------------------------------------------------------------------------- /services/SeaOfHackerz/frontend/public/img/boat/btn-sails-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/services/SeaOfHackerz/frontend/public/img/boat/btn-sails-1.png -------------------------------------------------------------------------------- /services/SeaOfHackerz/frontend/public/img/boat/btn-sails-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/services/SeaOfHackerz/frontend/public/img/boat/btn-sails-2.png -------------------------------------------------------------------------------- /services/SeaOfHackerz/frontend/public/img/boat/btn-sails-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/services/SeaOfHackerz/frontend/public/img/boat/btn-sails-3.png -------------------------------------------------------------------------------- /services/SeaOfHackerz/frontend/public/img/boat/flags-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/services/SeaOfHackerz/frontend/public/img/boat/flags-0.png -------------------------------------------------------------------------------- /services/SeaOfHackerz/frontend/public/img/boat/flags-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/services/SeaOfHackerz/frontend/public/img/boat/flags-1.png -------------------------------------------------------------------------------- /services/SeaOfHackerz/frontend/public/img/boat/flags-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/services/SeaOfHackerz/frontend/public/img/boat/flags-2.png -------------------------------------------------------------------------------- /services/SeaOfHackerz/frontend/public/img/boat/flags-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/services/SeaOfHackerz/frontend/public/img/boat/flags-3.png -------------------------------------------------------------------------------- /services/SeaOfHackerz/frontend/public/img/boat/flags-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/services/SeaOfHackerz/frontend/public/img/boat/flags-4.png -------------------------------------------------------------------------------- /services/SeaOfHackerz/frontend/public/img/boat/flags-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/services/SeaOfHackerz/frontend/public/img/boat/flags-5.png -------------------------------------------------------------------------------- /services/SeaOfHackerz/frontend/public/img/boat/flags-6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/services/SeaOfHackerz/frontend/public/img/boat/flags-6.png -------------------------------------------------------------------------------- /services/SeaOfHackerz/frontend/public/img/boat/flags-7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/services/SeaOfHackerz/frontend/public/img/boat/flags-7.png -------------------------------------------------------------------------------- /services/SeaOfHackerz/frontend/public/img/boat/hull-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/services/SeaOfHackerz/frontend/public/img/boat/hull-0.png -------------------------------------------------------------------------------- /services/SeaOfHackerz/frontend/public/img/boat/hull-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/services/SeaOfHackerz/frontend/public/img/boat/hull-1.png -------------------------------------------------------------------------------- /services/SeaOfHackerz/frontend/public/img/boat/hull-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/services/SeaOfHackerz/frontend/public/img/boat/hull-2.png -------------------------------------------------------------------------------- /services/SeaOfHackerz/frontend/public/img/boat/portholes-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/services/SeaOfHackerz/frontend/public/img/boat/portholes-0.png -------------------------------------------------------------------------------- /services/SeaOfHackerz/frontend/public/img/boat/portholes-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/services/SeaOfHackerz/frontend/public/img/boat/portholes-1.png -------------------------------------------------------------------------------- /services/SeaOfHackerz/frontend/public/img/boat/portholes-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/services/SeaOfHackerz/frontend/public/img/boat/portholes-2.png -------------------------------------------------------------------------------- /services/SeaOfHackerz/frontend/public/img/boat/sails-0-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/services/SeaOfHackerz/frontend/public/img/boat/sails-0-0.png -------------------------------------------------------------------------------- /services/SeaOfHackerz/frontend/public/img/boat/sails-0-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/services/SeaOfHackerz/frontend/public/img/boat/sails-0-1.png -------------------------------------------------------------------------------- /services/SeaOfHackerz/frontend/public/img/boat/sails-0-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/services/SeaOfHackerz/frontend/public/img/boat/sails-0-2.png -------------------------------------------------------------------------------- /services/SeaOfHackerz/frontend/public/img/boat/sails-0-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/services/SeaOfHackerz/frontend/public/img/boat/sails-0-3.png -------------------------------------------------------------------------------- /services/SeaOfHackerz/frontend/public/img/boat/sails-0-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/services/SeaOfHackerz/frontend/public/img/boat/sails-0-4.png -------------------------------------------------------------------------------- /services/SeaOfHackerz/frontend/public/img/boat/sails-0-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/services/SeaOfHackerz/frontend/public/img/boat/sails-0-5.png -------------------------------------------------------------------------------- /services/SeaOfHackerz/frontend/public/img/boat/sails-0-6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/services/SeaOfHackerz/frontend/public/img/boat/sails-0-6.png -------------------------------------------------------------------------------- /services/SeaOfHackerz/frontend/public/img/boat/sails-0-7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/services/SeaOfHackerz/frontend/public/img/boat/sails-0-7.png -------------------------------------------------------------------------------- /services/SeaOfHackerz/frontend/public/img/boat/sails-1-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/services/SeaOfHackerz/frontend/public/img/boat/sails-1-0.png -------------------------------------------------------------------------------- /services/SeaOfHackerz/frontend/public/img/boat/sails-1-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/services/SeaOfHackerz/frontend/public/img/boat/sails-1-1.png -------------------------------------------------------------------------------- /services/SeaOfHackerz/frontend/public/img/boat/sails-1-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/services/SeaOfHackerz/frontend/public/img/boat/sails-1-2.png -------------------------------------------------------------------------------- /services/SeaOfHackerz/frontend/public/img/boat/sails-1-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/services/SeaOfHackerz/frontend/public/img/boat/sails-1-3.png -------------------------------------------------------------------------------- /services/SeaOfHackerz/frontend/public/img/boat/sails-1-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/services/SeaOfHackerz/frontend/public/img/boat/sails-1-4.png -------------------------------------------------------------------------------- /services/SeaOfHackerz/frontend/public/img/boat/sails-1-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/services/SeaOfHackerz/frontend/public/img/boat/sails-1-5.png -------------------------------------------------------------------------------- /services/SeaOfHackerz/frontend/public/img/boat/sails-1-6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/services/SeaOfHackerz/frontend/public/img/boat/sails-1-6.png -------------------------------------------------------------------------------- /services/SeaOfHackerz/frontend/public/img/boat/sails-1-7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/services/SeaOfHackerz/frontend/public/img/boat/sails-1-7.png -------------------------------------------------------------------------------- /services/SeaOfHackerz/frontend/public/img/boat/sails-2-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/services/SeaOfHackerz/frontend/public/img/boat/sails-2-0.png -------------------------------------------------------------------------------- /services/SeaOfHackerz/frontend/public/img/boat/sails-2-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/services/SeaOfHackerz/frontend/public/img/boat/sails-2-1.png -------------------------------------------------------------------------------- /services/SeaOfHackerz/frontend/public/img/boat/sails-2-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/services/SeaOfHackerz/frontend/public/img/boat/sails-2-2.png -------------------------------------------------------------------------------- /services/SeaOfHackerz/frontend/public/img/boat/sails-2-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/services/SeaOfHackerz/frontend/public/img/boat/sails-2-3.png -------------------------------------------------------------------------------- /services/SeaOfHackerz/frontend/public/img/boat/sails-2-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/services/SeaOfHackerz/frontend/public/img/boat/sails-2-4.png -------------------------------------------------------------------------------- /services/SeaOfHackerz/frontend/public/img/boat/sails-2-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/services/SeaOfHackerz/frontend/public/img/boat/sails-2-5.png -------------------------------------------------------------------------------- /services/SeaOfHackerz/frontend/public/img/boat/sails-2-6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/services/SeaOfHackerz/frontend/public/img/boat/sails-2-6.png -------------------------------------------------------------------------------- /services/SeaOfHackerz/frontend/public/img/boat/sails-2-7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/services/SeaOfHackerz/frontend/public/img/boat/sails-2-7.png -------------------------------------------------------------------------------- /services/SeaOfHackerz/frontend/public/img/boat/sails-3-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/services/SeaOfHackerz/frontend/public/img/boat/sails-3-0.png -------------------------------------------------------------------------------- /services/SeaOfHackerz/frontend/public/img/boat/sails-3-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/services/SeaOfHackerz/frontend/public/img/boat/sails-3-1.png -------------------------------------------------------------------------------- /services/SeaOfHackerz/frontend/public/img/boat/sails-3-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/services/SeaOfHackerz/frontend/public/img/boat/sails-3-2.png -------------------------------------------------------------------------------- /services/SeaOfHackerz/frontend/public/img/boat/sails-3-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/services/SeaOfHackerz/frontend/public/img/boat/sails-3-3.png -------------------------------------------------------------------------------- /services/SeaOfHackerz/frontend/public/img/boat/sails-3-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/services/SeaOfHackerz/frontend/public/img/boat/sails-3-4.png -------------------------------------------------------------------------------- /services/SeaOfHackerz/frontend/public/img/boat/sails-3-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/services/SeaOfHackerz/frontend/public/img/boat/sails-3-5.png -------------------------------------------------------------------------------- /services/SeaOfHackerz/frontend/public/img/boat/sails-3-6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/services/SeaOfHackerz/frontend/public/img/boat/sails-3-6.png -------------------------------------------------------------------------------- /services/SeaOfHackerz/frontend/public/img/boat/sails-3-7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/services/SeaOfHackerz/frontend/public/img/boat/sails-3-7.png -------------------------------------------------------------------------------- /services/SeaOfHackerz/frontend/public/img/bottom-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/services/SeaOfHackerz/frontend/public/img/bottom-1.png -------------------------------------------------------------------------------- /services/SeaOfHackerz/frontend/public/img/color-inv.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/services/SeaOfHackerz/frontend/public/img/color-inv.png -------------------------------------------------------------------------------- /services/SeaOfHackerz/frontend/public/img/footer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/services/SeaOfHackerz/frontend/public/img/footer.png -------------------------------------------------------------------------------- /services/SeaOfHackerz/frontend/public/img/hr-short.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/services/SeaOfHackerz/frontend/public/img/hr-short.png -------------------------------------------------------------------------------- /services/SeaOfHackerz/frontend/public/img/hr-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/services/SeaOfHackerz/frontend/public/img/hr-white.png -------------------------------------------------------------------------------- /services/SeaOfHackerz/frontend/public/img/hr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/services/SeaOfHackerz/frontend/public/img/hr.png -------------------------------------------------------------------------------- /services/SeaOfHackerz/frontend/public/img/inventory/inv-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/services/SeaOfHackerz/frontend/public/img/inventory/inv-0.png -------------------------------------------------------------------------------- /services/SeaOfHackerz/frontend/public/img/inventory/inv-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/services/SeaOfHackerz/frontend/public/img/inventory/inv-1.png -------------------------------------------------------------------------------- /services/SeaOfHackerz/frontend/public/img/inventory/inv-10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/services/SeaOfHackerz/frontend/public/img/inventory/inv-10.png -------------------------------------------------------------------------------- /services/SeaOfHackerz/frontend/public/img/inventory/inv-11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/services/SeaOfHackerz/frontend/public/img/inventory/inv-11.png -------------------------------------------------------------------------------- /services/SeaOfHackerz/frontend/public/img/inventory/inv-12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/services/SeaOfHackerz/frontend/public/img/inventory/inv-12.png -------------------------------------------------------------------------------- /services/SeaOfHackerz/frontend/public/img/inventory/inv-13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/services/SeaOfHackerz/frontend/public/img/inventory/inv-13.png -------------------------------------------------------------------------------- /services/SeaOfHackerz/frontend/public/img/inventory/inv-14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/services/SeaOfHackerz/frontend/public/img/inventory/inv-14.png -------------------------------------------------------------------------------- /services/SeaOfHackerz/frontend/public/img/inventory/inv-15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/services/SeaOfHackerz/frontend/public/img/inventory/inv-15.png -------------------------------------------------------------------------------- /services/SeaOfHackerz/frontend/public/img/inventory/inv-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/services/SeaOfHackerz/frontend/public/img/inventory/inv-2.png -------------------------------------------------------------------------------- /services/SeaOfHackerz/frontend/public/img/inventory/inv-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/services/SeaOfHackerz/frontend/public/img/inventory/inv-3.png -------------------------------------------------------------------------------- /services/SeaOfHackerz/frontend/public/img/inventory/inv-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/services/SeaOfHackerz/frontend/public/img/inventory/inv-4.png -------------------------------------------------------------------------------- /services/SeaOfHackerz/frontend/public/img/inventory/inv-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/services/SeaOfHackerz/frontend/public/img/inventory/inv-5.png -------------------------------------------------------------------------------- /services/SeaOfHackerz/frontend/public/img/inventory/inv-6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/services/SeaOfHackerz/frontend/public/img/inventory/inv-6.png -------------------------------------------------------------------------------- /services/SeaOfHackerz/frontend/public/img/inventory/inv-7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/services/SeaOfHackerz/frontend/public/img/inventory/inv-7.png -------------------------------------------------------------------------------- /services/SeaOfHackerz/frontend/public/img/inventory/inv-8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/services/SeaOfHackerz/frontend/public/img/inventory/inv-8.png -------------------------------------------------------------------------------- /services/SeaOfHackerz/frontend/public/img/inventory/inv-9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/services/SeaOfHackerz/frontend/public/img/inventory/inv-9.png -------------------------------------------------------------------------------- /services/SeaOfHackerz/frontend/public/img/scroll-body.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/services/SeaOfHackerz/frontend/public/img/scroll-body.png -------------------------------------------------------------------------------- /services/SeaOfHackerz/frontend/public/img/scroll-bottom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/services/SeaOfHackerz/frontend/public/img/scroll-bottom.png -------------------------------------------------------------------------------- /services/SeaOfHackerz/frontend/public/img/scroll-top.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/services/SeaOfHackerz/frontend/public/img/scroll-top.png -------------------------------------------------------------------------------- /services/SeaOfHackerz/frontend/public/img/scroll.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/services/SeaOfHackerz/frontend/public/img/scroll.png -------------------------------------------------------------------------------- /services/SeaOfHackerz/frontend/public/img/sea-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/services/SeaOfHackerz/frontend/public/img/sea-1.png -------------------------------------------------------------------------------- /services/SeaOfHackerz/frontend/public/img/sea-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/services/SeaOfHackerz/frontend/public/img/sea-2.png -------------------------------------------------------------------------------- /services/SeaOfHackerz/frontend/public/img/ship-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/services/SeaOfHackerz/frontend/public/img/ship-1.png -------------------------------------------------------------------------------- /services/SeaOfHackerz/frontend/public/img/ship-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/services/SeaOfHackerz/frontend/public/img/ship-2.png -------------------------------------------------------------------------------- /services/SeaOfHackerz/frontend/public/img/ship-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/services/SeaOfHackerz/frontend/public/img/ship-3.png -------------------------------------------------------------------------------- /services/SeaOfHackerz/frontend/public/img/smoke.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/services/SeaOfHackerz/frontend/public/img/smoke.png -------------------------------------------------------------------------------- /services/SeaOfHackerz/frontend/public/img/treasure.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/services/SeaOfHackerz/frontend/public/img/treasure.png -------------------------------------------------------------------------------- /services/SeaOfHackerz/frontend/public/img/wave.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/services/SeaOfHackerz/frontend/public/img/wave.png -------------------------------------------------------------------------------- /services/SeaOfHackerz/frontend/public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 12 | 13 | 14 | 15 | SeaOfHackerz 16 | 17 | 18 | 19 |
20 | 21 | 22 | -------------------------------------------------------------------------------- /services/SeaOfHackerz/frontend/public/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/services/SeaOfHackerz/frontend/public/logo.png -------------------------------------------------------------------------------- /services/SeaOfHackerz/frontend/public/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "short_name": "React App", 3 | "name": "Create React App Sample", 4 | "icons": [ 5 | { 6 | "src": "favicon.ico", 7 | "sizes": "64x64 32x32 24x24 16x16", 8 | "type": "image/x-icon" 9 | } 10 | ], 11 | "start_url": ".", 12 | "display": "standalone", 13 | "theme_color": "#000000", 14 | "background_color": "#ffffff" 15 | } 16 | -------------------------------------------------------------------------------- /services/SeaOfHackerz/frontend/public/metshige.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/services/SeaOfHackerz/frontend/public/metshige.ttf -------------------------------------------------------------------------------- /services/SeaOfHackerz/frontend/public/nav_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blackslashtech/glitch/353479267f5c221e1907b2d1d5e3fa426c1b42a9/services/SeaOfHackerz/frontend/public/nav_bg.png -------------------------------------------------------------------------------- /services/SeaOfHackerz/frontend/public/robots.txt: -------------------------------------------------------------------------------- 1 | # https://www.robotstxt.org/robotstxt.html 2 | User-agent: * 3 | Disallow: 4 | -------------------------------------------------------------------------------- /services/SeaOfHackerz/frontend/src/App.js: -------------------------------------------------------------------------------- 1 | import { Container } from 'react-bootstrap'; 2 | import { HashRouter, Routes, Route } from 'react-router-dom'; 3 | import { useState } from 'react'; 4 | import NavigationBar from './NavigationBar'; 5 | import HomePage from './HomePage'; 6 | import 'bootstrap/dist/css/bootstrap.min.css'; 7 | import Footer from './Footer'; 8 | import Login from './Login'; 9 | import Attack from './Attack'; 10 | import StartAttack from './StartAttack'; 11 | import Boat from './Boat'; 12 | import ViewBoat from './ViewBoat'; 13 | 14 | function App() { 15 | 16 | const [logged, setLogged] = useState(false); 17 | const [username, setUsername] = useState(''); 18 | const [id, setId] = useState(-1); 19 | 20 | return ( 21 | <> 22 | 23 | 24 | 25 | 26 | } /> 27 | } /> 28 | } /> 29 | } /> 30 | } /> 31 | } /> 32 | 33 | 34 |