Files
Kubok-Regionov/Caplag-Crackme-Reverse/solve/solve.md
2025-12-22 05:19:38 +03:00

53 lines
2.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
Разбор, исходя только из `caplag-crackme.apk`
## 1. Достаём логин из ресурсов
1. Распаковать APK или открыть в jadx: в `res/values/strings.xml` лежат строки `p0..p9`.
2. Склеиваем их: `EBUUBQ5JHhYGHQwOXREBERIMHV0N`.
3. Это Base64. Декодируем → байты.
4. В Java-коде (видно через jadx) эти байты XOR-ятся с ключом `"stdio.h"`. XOR даёт логин:
```
caplagveryeasyreverse
```
Быстрая проверка в консоли (при наличии python):
```bash
python - <<'PY'
import base64
chunks = ["EBU","UBQ","5JH","hYG","HQw","OXR","EBE","RIM","HV","0N"]
data = base64.b64decode("".join(chunks))
key = b"stdio.h"
print(bytes(b ^ key[i % len(key)] for i, b in enumerate(data)).decode())
PY
```
## 2. Реверс native-проверки (libcrack.so)
В `lib/*/libcrack.so` JNI-функция `checkAndGetFlag` выполняет:
1. `expected_pwd_raw = SHA256(login + "cryptoanalyzator")`
2. `key = SHA256(login + "s3cr3t_s@lt_42")`
3. `enc = AES-256-CBC(no padding, IV = 00 11 22 ... EE FF)`, шифрует `expected_pwd_raw`.
4. Сравнивает `enc` с константой `CIPHER_PASS`; сходится только при правильном логине.
5. Проверяет, что введённый пароль — hex(expected_pwd_raw) длиной 64 (регистр не важен).
6. Флаг: `caplag{ SHA256("Console.Readline();" + login + password_hex) }`.
Нужные константы все видны в дизасме/строках `.so`.
## 3. Считаем пароль и флаг
Используем найденный логин:
```bash
python - <<'PY'
import hashlib
login = "caplagveryeasyreverse"
pwd_hex = hashlib.sha256((login + "cryptoanalyzator").encode()).hexdigest()
print("login :", login)
print("pass :", pwd_hex)
flag = hashlib.sha256((b"Console.Readline();" + login.encode() + pwd_hex.encode())).hexdigest()
print("flag :", f"caplag{{{flag}}}")
PY
```
Итоговые значения:
- Логин: `caplagveryeasyreverse`
- Пароль: `7dc1b259bd1ad518e41cca334fca14bd03139a2c0b3566036efe6d2bbb43df4c`
- Флаг: `caplag{ae98661c54fb5d0d2e769d21a23d4802c7a24eb98741680949ddb6ed9d8f3e53}`