SortKey Station
Складская станция сортирует этикетки и поддерживает старый формат ключей `+POS.C`. В ELF `sortkey-station` находим приведение позиции к знаковому 16-битному числу. Большая положительная позиция после него превращается в отрицательное смещение.
## Решение
При проверке старого ключа сервис обращается к `key_buf + (int16_t)pos` и сравнивает строку по этому адресу с `SORT-EXPORT`. Если подобрать `pos`, чтение уйдёт перед началом ключа — в профиль партии, содержимое которого можно задать.
Нужная область находится за 32 байта до `key_buf`. В 16-битной арифметике:
$$65504 - 65536 = -32.$$
Значит, подходит ключ `+65504.0`. Теперь размещаем строку допуска в профиле:
```python
profile = b"A" * 64 + b"SORT-EXPORT"
legacy_key = b"+65504.0"
```
Строка допуска начинается после 64 байт заполнения в профиле, по смещению `-32` от начала `key_buf`.
В `1) set batch profile` отправляем профиль, затем в `2) set legacy sort key` задаём `+65504.0`. Вызываем `3) dry-run sort`, чтобы сервис проверил допуск, и забираем результат через `4) export station batch`.
Проверка читает `SORT-EXPORT` из подставленного профиля и принимает его за разрешение на экспорт. В ответе получаем флаг.
[Солвер](solve/solve.py).
## Флаг
`caplag{legacy_sort_pointer_found_the_batch_grant}`