From cbe65e88bd7f55a331dc64ed36da28aead4deeb3 Mon Sep 17 00:00:00 2001 From: itoid Date: Sat, 11 Oct 2025 22:45:20 +0700 Subject: [PATCH] Delete services/sheesh directory --- services/sheesh/Dockerfile | 32 -------- services/sheesh/chall.py | 116 ----------------------------- services/sheesh/dist/chall.py | 116 ----------------------------- services/sheesh/docker-compose.yml | 16 ---- services/sheesh/requirements.txt | 1 - services/sheesh/run.sh | 3 - services/sheesh/start.sh | 24 ------ 7 files changed, 308 deletions(-) delete mode 100644 services/sheesh/Dockerfile delete mode 100644 services/sheesh/chall.py delete mode 100644 services/sheesh/dist/chall.py delete mode 100644 services/sheesh/docker-compose.yml delete mode 100644 services/sheesh/requirements.txt delete mode 100644 services/sheesh/run.sh delete mode 100644 services/sheesh/start.sh diff --git a/services/sheesh/Dockerfile b/services/sheesh/Dockerfile deleted file mode 100644 index 073dd6a..0000000 --- a/services/sheesh/Dockerfile +++ /dev/null @@ -1,32 +0,0 @@ -FROM python:3.12-slim - -ARG PASSWORD=root -ENV DEBIAN_FRONTEND=noninteractive -ENV HOME=/home/ctf -WORKDIR /home/ctf/chall - -RUN apt-get update && apt-get install -y --no-install-recommends \ - openssh-server \ - build-essential \ - libffi-dev \ - libssl-dev \ - python3-dev \ - bash \ - && rm -rf /var/lib/apt/lists/* - -RUN useradd -m -d /home/ctf -s /bin/bash ctf && \ - echo "ctf:${PASSWORD}" | chpasswd - -RUN mkdir -p /var/run/sshd - -COPY requirements.txt /tmp/requirements.txt -RUN pip install --no-cache-dir -r /tmp/requirements.txt - -COPY ./src /home/ctf/chall/src -COPY ./start.sh /start.sh -RUN chmod +x /start.sh /home/ctf/chall/src/run.sh - -RUN chown -R root:root /home/ctf/chall && chmod -R 555 /home/ctf/chall - -EXPOSE 8000 22 -CMD ["/start.sh"] diff --git a/services/sheesh/chall.py b/services/sheesh/chall.py deleted file mode 100644 index 1b507bf..0000000 --- a/services/sheesh/chall.py +++ /dev/null @@ -1,116 +0,0 @@ -#!/usr/bin/env python3 - -import os, sys, json, random, hashlib, hmac -from Crypto.Cipher import AES -from Crypto.Util.Padding import pad -with open("/flag.txt", "rb") as f: - flag = f.read() - -B = 16 -opts = ( - "1) encrypt\n" - "2) profit\n" - "3) nyerah\n" - ">> " -) - -def exp(prk: bytes, info: bytes, L: int) -> bytes: - return hmac.new(prk, info + b"\x01", hashlib.sha256).digest()[:L] - -def enc(k: bytes, data: bytes): - iv = os.urandom(B) - ct = AES.new(k, AES.MODE_CBC, iv).encrypt(pad(data, B)) - return iv, ct - -def inp_hex(prompt: str) -> bytes: - print(prompt, end="", flush=True) - s = sys.stdin.readline() - if not s: - raise EOFError - return bytes.fromhex(s.strip()) - -def rand(rng, d, lo, hi): - while True: - v = [rng.randint(lo, hi) for _ in range(d)] - if any(v): - return v - -def syst(rng): - d = rng.choice([2, 3]) - m = rng.randint(5, 8) - x = rand(rng, d, -3, 3) - rows = [] - for _ in range(m): - base = rand(rng, d, -3, 3) - r = rng.randint(1, 7) - scaled = [r * a for a in base] - e = rng.randint(0, 1) - bi = sum(ai * xi for ai, xi in zip(scaled, x)) + e - rows.append((scaled, bi)) - rng.shuffle(rows) - A = [row for (row, _) in rows] - B = [b for (_, b) in rows] - pub = {"dim": d, "A": A, "b": B} - return pub, tuple(x) - -def bundle(): - rng = random.Random(os.urandom(16)) - systems = [] - hidden = [] - for _ in range(4): - pub, x = syst(rng) - systems.append(pub) - hidden.append(x) - return {"systems": systems}, tuple(hidden) - -def get_key(saltx: bytes, salty: bytes, b): - parts = [] - for x in b: - parts.append(",".join(str(t) for t in x)) - material = "|".join(parts).encode() - prk = hashlib.pbkdf2_hmac("sha256", material, saltx, 131072, dklen=32) - return exp(prk, b"g3m4zzzt1q" + salty, 16) - -def main(): - a, b = bundle() - print(json.dumps(a, separators=(",", ":")), flush=True) - saltx = os.urandom(16) - salty = os.urandom(16) - key = get_key(saltx, salty, b) - iv, ct = enc(key, flag) - while True: - try: - print(opts, end="", flush=True) - line = sys.stdin.readline() - if not line: - break - try: - choice = int(line.strip()) - except ValueError: - print("sheesh") - continue - - if choice == 1: - data = inp_hex("data: ") - iv, ct = enc(key, data) - print(iv.hex()) - print(ct.hex()) - - elif choice == 2: - print(iv.hex()) - print(ct.hex()) - print(saltx.hex()) - print(salty.hex()) - - elif choice == 3: - print("bubay") - return - - else: - print("when you feel like quitting, remember why you started :v (yapping)") - - except Exception: - print("zzz") - -if __name__ == "__main__": - main() diff --git a/services/sheesh/dist/chall.py b/services/sheesh/dist/chall.py deleted file mode 100644 index 1b507bf..0000000 --- a/services/sheesh/dist/chall.py +++ /dev/null @@ -1,116 +0,0 @@ -#!/usr/bin/env python3 - -import os, sys, json, random, hashlib, hmac -from Crypto.Cipher import AES -from Crypto.Util.Padding import pad -with open("/flag.txt", "rb") as f: - flag = f.read() - -B = 16 -opts = ( - "1) encrypt\n" - "2) profit\n" - "3) nyerah\n" - ">> " -) - -def exp(prk: bytes, info: bytes, L: int) -> bytes: - return hmac.new(prk, info + b"\x01", hashlib.sha256).digest()[:L] - -def enc(k: bytes, data: bytes): - iv = os.urandom(B) - ct = AES.new(k, AES.MODE_CBC, iv).encrypt(pad(data, B)) - return iv, ct - -def inp_hex(prompt: str) -> bytes: - print(prompt, end="", flush=True) - s = sys.stdin.readline() - if not s: - raise EOFError - return bytes.fromhex(s.strip()) - -def rand(rng, d, lo, hi): - while True: - v = [rng.randint(lo, hi) for _ in range(d)] - if any(v): - return v - -def syst(rng): - d = rng.choice([2, 3]) - m = rng.randint(5, 8) - x = rand(rng, d, -3, 3) - rows = [] - for _ in range(m): - base = rand(rng, d, -3, 3) - r = rng.randint(1, 7) - scaled = [r * a for a in base] - e = rng.randint(0, 1) - bi = sum(ai * xi for ai, xi in zip(scaled, x)) + e - rows.append((scaled, bi)) - rng.shuffle(rows) - A = [row for (row, _) in rows] - B = [b for (_, b) in rows] - pub = {"dim": d, "A": A, "b": B} - return pub, tuple(x) - -def bundle(): - rng = random.Random(os.urandom(16)) - systems = [] - hidden = [] - for _ in range(4): - pub, x = syst(rng) - systems.append(pub) - hidden.append(x) - return {"systems": systems}, tuple(hidden) - -def get_key(saltx: bytes, salty: bytes, b): - parts = [] - for x in b: - parts.append(",".join(str(t) for t in x)) - material = "|".join(parts).encode() - prk = hashlib.pbkdf2_hmac("sha256", material, saltx, 131072, dklen=32) - return exp(prk, b"g3m4zzzt1q" + salty, 16) - -def main(): - a, b = bundle() - print(json.dumps(a, separators=(",", ":")), flush=True) - saltx = os.urandom(16) - salty = os.urandom(16) - key = get_key(saltx, salty, b) - iv, ct = enc(key, flag) - while True: - try: - print(opts, end="", flush=True) - line = sys.stdin.readline() - if not line: - break - try: - choice = int(line.strip()) - except ValueError: - print("sheesh") - continue - - if choice == 1: - data = inp_hex("data: ") - iv, ct = enc(key, data) - print(iv.hex()) - print(ct.hex()) - - elif choice == 2: - print(iv.hex()) - print(ct.hex()) - print(saltx.hex()) - print(salty.hex()) - - elif choice == 3: - print("bubay") - return - - else: - print("when you feel like quitting, remember why you started :v (yapping)") - - except Exception: - print("zzz") - -if __name__ == "__main__": - main() diff --git a/services/sheesh/docker-compose.yml b/services/sheesh/docker-compose.yml deleted file mode 100644 index e1eb8ca..0000000 --- a/services/sheesh/docker-compose.yml +++ /dev/null @@ -1,16 +0,0 @@ -version: "3.8" - -services: - sheesh: - container_name: sheesh_container - hostname: sheesh - restart: always - build: - context: . - args: - - PASSWORD=root - ports: - - "12000:8000" - - "12022:22" - environment: - - FLAG=GEMASTIK{local_flag} diff --git a/services/sheesh/requirements.txt b/services/sheesh/requirements.txt deleted file mode 100644 index c21b6ec..0000000 --- a/services/sheesh/requirements.txt +++ /dev/null @@ -1 +0,0 @@ -pycryptodome \ No newline at end of file diff --git a/services/sheesh/run.sh b/services/sheesh/run.sh deleted file mode 100644 index 6ae49cb..0000000 --- a/services/sheesh/run.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh - -exec socat tcp-l:8000,reuseaddr,fork exec:"python3 ./chall.py" diff --git a/services/sheesh/start.sh b/services/sheesh/start.sh deleted file mode 100644 index 74ea114..0000000 --- a/services/sheesh/start.sh +++ /dev/null @@ -1,24 +0,0 @@ -#!/bin/bash -set -e - -ssh-keygen -A - -grep -q "^PermitRootLogin" /etc/ssh/sshd_config && \ - sed -i "s/^PermitRootLogin.*/PermitRootLogin no/" /etc/ssh/sshd_config || \ - echo "PermitRootLogin no" >> /etc/ssh/sshd_config - -grep -q "^PasswordAuthentication" /etc/ssh/sshd_config && \ - sed -i "s/^PasswordAuthentication.*/PasswordAuthentication yes/" /etc/ssh/sshd_config || \ - echo "PasswordAuthentication yes" >> /etc/ssh/sshd_config - -echo "AllowUsers ctf" >> /etc/ssh/sshd_config - -/usr/sbin/sshd - -if [ -n "$FLAG" ]; then - echo "$FLAG" > /flag.txt - chmod 644 /flag.txt - chown root:root /flag.txt -fi - -exec su -c "cd /home/ctf/chall/src && ./run.sh" -s /bin/bash ctf