Есть такое занятный конкурс: "Binary Golf Grand Prix". И в этом 2024 году мне захотелось принять участие в (уже) пятом состязании:
The Binary Golf Grand Prix is a yearly contest to create the smallest file that does a specific thing. Inspired by code golf and file format hacking, Binary Golf is the practice of creating tiny binary files, polyglots, or weird machines.
Задача довольно простая: сформировать файл с минимальным содержимым, который можно как-то запустить. Запущенный файл должен скачать файл `https://binary.golf/5/5` и отобразить его содержимое. Решения принимаются в виде issue к репозиторию на github:
https://github.com/binarygolf/BGGP/issues
Скачать файл по HTTPS, говорите... то есть SSL/TLS поверх HTTP. А кто у нас главный по SSL/TLS? openssl с его командой s_client:
https://www.openssl.org/docs/man3.0/man1/openssl-s_client.html
Команда `openssl s_client -connect binary.golf:443` установит SSL/TLS-соединение с сервером. А затем нам нужно подсунуть в установленное соединение HTTP GET запрос. Минимальный запрос, который пришёл мне в голову, выглядит так:
GET /5/5 HTTP/1.0 Host: binary.golf
С тремя однобайтовыми переводами строк (последняя пустая строка обязательна) такой запрос занимает 37 байт. Вот его я и предложил в качестве решения. Пишем текстовое содержимое запроса в файл, например с именем bggp5. Содержимое bggp5 читаем командой cat и перенаправляем в стандартный поток ввода утилиты openssl s_client. Откинем для красоты служебную информацию и получится что-то вроде:
$ cat bggp5 | openssl s_client -quiet -connect binary.golf:443 2> /dev/null | tail -n 1 Another #BGGP5 download!! @binarygolf https://binary.golf
Комментарии через ActivityPub (Fediverse) можно оставить здесь: