Init. commit

This commit is contained in:
Caplag
2026-04-22 10:42:16 +03:00
commit 98e51ca58b
35 changed files with 2371 additions and 0 deletions

View File

@@ -0,0 +1,30 @@
<h1 align="center">Summer Vacations</h1>
<p align="center">
<img src="https://img.shields.io/badge/category-Stego-blueviolet" alt="Stego"/>
<img src="https://img.shields.io/badge/points-799-yellow" alt="799 pts"/>
</p>
На входе — картинка `vacation.png`. Если провести классический LSB-скан по красному каналу, тогда быстро находится читаемая строка, похожая на флаг — и это ловушка. Настоящий флаг расположен в младшем бите альфа-канала.
## Решение
Открываем картинку в RGBA (принудительно, чтобы гарантированно получить альфа-канал) и проходим по пикселям в растровом порядке (слева направо, сверху вниз). Для каждого пикселя проверяем условие:
```text
(R * G * B) % 7 == 3
```
Только те, что прошли фильтр, несут бит данных — и из них забираем младший бит альфа-канала:
```python
if (r * g * b) % 7 == 3:
bits.append(a & 1)
```
Накопленные биты группируем по 8 (старший бит первым) и собираем в байты. Нулевой байт — маркер конца данных, аналог `\0`-терминатора в C. Принимаем только печатаемые ASCII (`0x20``0x7E`); всё остальное — либо конец флага, либо мусор.
Готовый солвер — [`solve/solver.py`](solve/solver.py).
## Флаг
`caplag{p4t13nc3_r3v34ls_truth}`