Пишем DM, не привлекая внимания санитаров | ходы игроков | Совершенно необязательная комната

 
DungeonMaster derasoft
21.06.2026 19:43
  =  
Да, у меня пока сильно спала активность... По разным причинам. Работа и не только.
Так что, ну... мне пока особо нечего писать по проекту. Поэтому, почему бы не потравить баек. "Раз в месяц" это как раз переодичность, с которой у меня в среднем происходит в жизни что-то, о чём можно рассказать.

Короче, я тут волей случая купил себе в одном сервисном центре Asus EEE PC 1025c. Короче, очень древняя, хреновина, процессор 32-битный, два гига оперативки, CMOS батарейка отвалилась где-то на уровне проводов, идущих к шлейфу, зато стоит всего 3к. Ну я смотрю на это чудо и думаю - "это ведь отличный шанс попробовать каков линукс в работе и оживлении старых компов".
Приколы начались с того момента, когда я решил перебрать свой набор линуксовых дистрибутивов, дабы посмотреть, что из этого подойдёт к моему компу. Оказалось, все они были созданы под 64 бита, и нужно было срочно искать что-то ещё. Опуская все подробности, я остановился на anitX. У него есть две версии - Full и Core. В Full есть всё необходимое для работе "из коробки", но местный блот меня напрягал. Вероятнее всего это сделанно по той причине, что не все программы совместимы со всеми компами, но меня это напрягало, так что я решил установить Core. Это самая голая версия, в которой нет ничего, кроме коммандной строки.
У меня не было зарядника от него, ну и я решил, что моего универсального адаптера с сорока насадками будет достаточно. По итогу провод питания не сидел в разъёме плотно. Я думал, это не будет проблемой, пока я не начал ставить ось. Значит, пытаюсь я это делать, и в первый раз я поставил ось немного не так как хотел, так что решил её переустановить. Проблема была в том, что теперь каждый раз в установщике мне в консоль то и дело рандомно сыпались символы "^@" при нажатии... Любой клавиши, но с некоторой переодичностью. Если не вдаваться в подробности, это происходит из-за того, что, грубо говоря, драйвер контролирующий питание компьютера не совсем понимает, как ему правильно реагировать на отключение питания, и поэтому он посылает в консоль нуль-байт, который отображается как ^@. Была только одна проблема - я уже начал станавливать систему, когда заметил эту проблему. Linux, кстати, обладает ещё одной забавной особенностью. Если во всех системах в поле пароля буквы заменются точками или звёздочками, то в консольном Linux... В поле просто ничего не выводится. По задумке это должно лучше защищать твой пароль, ибо злоумышленник не увидит даже сколько в твоём пароле было символов, но на практике это доставляет больше головной боли. Например, ты можешь не увидеть, что дёргающийся в разъёме провод питания дописал в пароль твоего аккаунта нуль-байт, и я не мог зайти в систему. Вообще, наверное, дёргание провода питания как часть ввода пароля могло бы даже стать забавным понтом.
1

DungeonMaster derasoft
10.08.2026 11:34
  =  
Сначала новости по основе. В общем, я вроде как более-менее набрался сил, так что буду пробовать писать парсер из BB и MD в HTML. Не уверен насколько хороши рандомные парсеры с npm, но вот что-то мне подсказывает, что у них будут проблемы с перекрёстной конвертацией всего этого дела между собой.

А теперь история. На работе случилось забавная штуковина, из-за которой мне пришлось учиться декомпилировать софт.

Мы откопали стенд. Представляет он из себя телевизор, комп и кинект. Сразу после запуска стенд запускает проектик на Unity, где юзеру предлагают выбрать один из нарядов петровской эпохи, он накладывается на стоящего перед кинектом пользователя в ДР, и затем ему предлагается сфоткаться в этом наряде, а затем забрать фотку через QR-код или отправить её по почте. Тестируем стенд - на ящик ничего не приходит, QR-код находится в вечном "фотка грузится, подождите пару минут".

В общем, начали мы с того, что начали реверс инженерить адрес. Выглядел он как-то навроде "http://file.orgdomain.ru:9088/gateway/getfile?id=123456789" где ID это время когда сделана фотка в UNIX формате. Этот самый файл file.orgdomain.ru это некоторая наша локальная виртуалка, на которую сваливают абсолютно всю работу с медиа. Самое бесячее - то самое "подождите пару минут" было просто заглушкой для ошибки 404, то есть мы даже не можем узнать реально ли что-то грузится и обрабатывается на сервере. При этом, штурм базы данных сервера показал, что он так или иначе обслуживает около десятка разных устройств и делает бекапы чуть ли не раз в 30 секунд, так что найти среди этого потока что-то полезное было весьма проблематично.

Одним словом, упёрлись в то, что программа была чёрным ящикам, и по внешней активности было сложно понять, как она работает. И тут я вспомнил про такую штуку как "декомпиляция". Проект на юнити, пока мы тыкали его палкой, выглядел довольно дёшево, и я предположил, что он вряд ли имеет внутри себя защиту от копания в потрохах. Загуглил как проводить декомпиляцию, и всё оказалось просто - скачиваешь утилиту dnSpy, открываешь конкретный файл. с данными, и программа вываливает на тебя весь набор из C#'овских классов. Покопавшись в списке, я нашёл класс с названием проекта и узнал... Забавную вещь. Основная самая полезная - что, оказывается, файлы сохраняются как Х. PNG и X.TXT, где пнгха это сама фотка человека, а в текстовом файле записан емейл. Сам о приложение ничего никуда не отправляет - в нём банально нет логики для этого. Самое загадочное - в конфиге можно было поменять место сохранения фотографий, и программа охотно сохраняла файл в другом месте (так мы и узнали, как выглядят вышеописанные файлы - из дефолтной папки файлы пропадали почти мгновенно, из-за чего мы думали, что она ничего не сохраняет), но вот если поменять параметр "URL", то адрес, куда ведёт QR код поменяется. Ну и мы выяснили, что по итогу эти фотографии якобы не сохранялись из-за того, что часть инфраструктуры работала - но только та, которая отправляла фотографии куда-то в пустоту и удаляла их со стенда. В общем, фиг пойми как это работает, но по итогу мысль у меня примерно такая. Прежде всего, можно поменять путь, по которому сохраняются картинки - как мы выяснили, это полностью предотвращает их потерю. После этого, можно будет быстренько написать дублирующий бекенд. С почтой всё легко - достаточно просто написать питоновский скрипт, который будет бомбить файлом на указанный ящик электронной почты. С QR-кодом всё сложнее. Он как-то хитро захардкожен в проект, а разбираться как заново пересобрать проект на Юнити ради такой чепухи мне влом, так что я сделаю мув из разряда C++, где C это сокращение от "Clown" - я просто возьму, и подменю DNS этого сервера на... Ну, например, локальный http-сервачок, который будет раздавать эти фотографии.

P.S. Пока писал эту заметку, коллега разобрался в чём дело. Одна из программ в структуре монструозного бекенда, который когда-то мониторил десяток таких машин, для чего-то использовал локальный аккаунт администратора... У которого просрочился пароль. Ага. Огромная система поломалась просто потому, что уто-то поставил галочку в поле "пароль истекает через" у одного из аккаунтов на виртуалке. Впрочем, это не решило всех наших проблем. QR-код заработал, стабильно раздавая фото по локалке, а вот на почту юзерам летела... Ссылка на наше локальное хранилище, а не сам файл. Я не знаю кто и зачем это сделал, но мы так и не нашли ту часть, которая отвечает за отправку фото на email. Видимо, всё-таки придётся что-то выдумывать с альтернативным бекендом.
Отредактировано 10.08.2026 в 11:37
2

Партия: 

Добавить сообщение

Для добавления сообщения Вы должны участвовать в этой игре.