Сейчас Кирилл ощущал себя рыбой, беспомощно всплывшей брюхом кверху, — вроде еще живой, но совершенно неспособной даже пошевелить плавниками, остается только смотреть, как вокруг лениво колышутся водоросли. Он написал ответное сообщение, стер, набрал новое, а потом стер и это. В голове царила звенящая пустота: как объяснить, что он не ищет оправданий, не хочет изменить прошлое, а всего лишь пытается заполнить холодный вакуум внутри, вырваться из той вязкой тины, в которой барахтается уже много месяцев?
Вымученное короткое письмо отправилось адресату. Ответ не заставил себя долго ждать, словно прямо перед носом захлопнулись двери уходящей в ночь последней электрички:
«Зачем ты написал? Мы уже обо всем поговорили и всё решили. Ничего не изменилось, и возвращаться к этому я не хочу».
Кирилл потер ладонями воспаленные глаза: проведенная за клавиатурой ночь уже давала о себе знать, но нахлынувшие эмоции прогнали сон. Осталась только опустошенность и упрямое желание не упускать выпавший шанс, будто он ухватился за край рвущейся веревки и уже ощущал, что она выскальзывает из рук, но все равно цеплялся за нее до последнего. Слова давались с трудом, строчки собирались в окне почтовой программы медленно.
«Я знаю, что мы всё решили. И я не жду возвращения прошлого. У нас остался один незакрытый вопрос, который не дает мне покоя. Я не хочу уговаривать тебя, но мне важно знать, что с тобой всё в порядке и ты счастлива. Поверь, для меня это очень важно».
На этот раз ответа пришлось ждать долго.
«У нас не осталось незакрытых вопросов. То, что тебя беспокоит, оказалось проблемами со здоровьем, и это в прошлом. Сейчас все в порядке. Я счастлива. Пожалуйста, не пиши мне больше».
Кирилл долго сидел, уставившись в монитор, пока буквы в последнем сообщении не начали расплываться. В голове было пусто и тихо, словно кто‑то выключил звук. Спорить не имело смысла — впервые за долгое время не осталось ни надежды, ни злости, ни сил что‑то доказывать. Он потянулся к кружке, но она оказалась пуста. Сон все равно не придет, а значит, нужно сварить еще кофе и ждать, пока усталость не одолеет его прямо за клавиатурой.
Киря не считал себя экспертом по реверс‑инжинирингу, но базовыми навыками работы в IDA все‑таки владел. Со стороны это наверняка выглядело почти как волшебство: безликое месиво символов — бинарное тело трояна — медленно, шаг за шагом, превращалось во что‑то знакомое глазу. IDA помогала провернуть этот фарш назад, сделать из исполняемого файла набор понятных инструкций, увидеть структуру, превращавшую хаотичный набор символов в «кварталы» программы, меж которыми пролегали «улицы» вызовов, зависимостей и переходов.
Выловленный на компьютере Бориса Семеновича шифровальщик оказался с сюрпризом: исполняемый файл был накрыт упаковщиком, причем не обычным UPX, а каким‑то самодельным, расковырять который получилось далеко не с первого раза. Кирилл действовал, словно ученый, пытающийся понять логику чужого разума. Каждое открытое окно дизассемблера давало новый намек, новый ход в хитрой игре между человеком и программой.
Троян был написан на Delphi. Его авторы даже не пытались усложнить код, чем порой грешили некоторые их коллеги, превращавшие внутреннюю логику вредоносной программы в паутину перекрестных вызовов, распутать которую получалось далеко не всегда. Перед началом работы энкодер сканировал диски зараженного компьютера, составлял список шифруемых файлов и только потом приступал к своей зловещей деятельности. Генерировал пароль, который сохранял в системный реестр на случай, если жертва спохватится и перезагрузит или выключит машину, — чтобы при следующем ее запуске начать процесс заново. Как только дело было сделано, пароль удалялся, а заодно с ним удалялись и резервные копии файлов вместе с системными точками восстановления. Теперь вернуть утраченное становилось невозможно, не заплатив злодеям выкуп. По крайней мере, так все выглядело на первый взгляд. И это было бы правдой, если бы не одно но.
Хорошенько изучив отвечавший за параметры шифрования фрагмент кода, Кирилл откинулся в кресле и прищурился. Пароль формировался на основе серийного номера жесткого диска и текущей даты, преобразованной в Unix timestamp — количество секунд, прошедших с 1 января 1970 года. А значит, его можно подобрать. Нужно только правильно выбрать условия перебора.
Он потянулся к телефону и набрал записанный в памяти номер.
— Доброе утро, Борис Семенович, — произнес он, когда на том конце сняли трубку. — Не разбудил?
— Что ты, Кирилл, я птичка ранняя, — хохотнул в ответ Криптодед. — Неужто придумал, как решить мою проблему?
— Почти. Я разобрался, каким способом троян шифрует файлы, и теперь нужно разработать алгоритм подбора ключа. Давайте я вам перекину всё, что накопал, а вы сообразите, как эту задачу решить. Она вроде бы по вашей части.
— А давай, — согласился Борис Семенович, — у меня на пенсии времени много, так что займусь, поломаю голову. Всяко лучше, чем кроссворды разгадывать.
Кирилл с улыбкой положил телефон на стол. Теперь алгоритм подбора ключа — не его забота. Борис Семенович разберется, и можно не сомневаться, что решение будет найдено. Он глубоко вдохнул и потянулся: проведенная за компьютером ночь обрушилась на него вязкой усталостью, но теперь можно было позволить себе расслабиться. Кирилл добрел до своего надувного матраса и рухнул на него, не раздеваясь. В сознании промелькнула последняя осознанная мысль о том, что с ночными бдениями пора бы уже завязывать, и с нею он погрузился в сон.
Кирилл открыл глаза с ощущением, будто внутри него снова включили свет после долгой темноты. А возможно, причиной стали разбудившие его лучи по‑весеннему яркого солнца, беззастенчиво заглянувшего в окно. Мозг еще не успел толком проснуться, но тело уже требовало еды и движения. Потянувшись к столу, Кирилл провел пальцем по трекпаду, вгляделся в проявившуюся на дисплее ноутбука картинку — он продрых почти сутки. Сегодня снова настала его очередь дежурить.
До «Синего экрана» он добрался чуть позже, чем обычно, — минут сорок ушло на приготовление завтрака из остатков тех продуктов, что удалось отыскать в холодильнике, и еще примерно час — на решение других насущных вопросов. Кирилл отпер входную дверь, включил свет и компы, проверил работу сети. Посетителей в этот час все равно еще не было, они начнут подтягиваться ближе к обеду, а потому утром оставался шанс в спокойной обстановке заняться своими делами. Но только не в этот раз.
Дверь со скрипом распахнулась, впуская в полуподвал волну холодного уличного воздуха, и на пороге возникла невысокая темноволосая женщина с папкой документов под мышкой в сопровождении человека в кожаной куртке на две головы выше нее. Памятуя рассказ Серёги, Кирилл представлял себе потенциальных арендаторов суровыми качками бандитской внешности, от одного вида которых у обывателя начинают трястись поджилки. Вопреки ожиданиям, вошедший не произвел на него столь пугающего впечатления. На гладко выбритой шишковатой голове сильнее всего выделялись оттопыренные, как локаторы, уши и торчащий орлиным клювом нос, по соседству с которым терялись глубоко посаженные глаза. Из‑за столь странного сочетания конструктивных элементов физиономия визитера напоминала крысиную мордочку, к которой зачем‑то пришили уши от Чебурашки. Куртка на нем тоже смотрелась несуразно и болталась, как на вешалке, — ее обладатель явно хотел казаться шире в плечах, чем был на самом деле.
— Доброе утро, — произнесла дама, глядя мимо Кирилла, и сразу же переключила внимание на своего спутника:
— Здесь у нас два помещения, тамбур и основной зал, есть еще уборная, правда бачок там неисправен. Помещение теплое, но требует косметического ремонта. Электричество по счетчику, имеется центральное отопление…
— Здравствуйте, Тамара Эдуардовна, — поприветствовал визитершу Кирилл, безошибочно угадав, кого занесло к нему на огонек. — Бачок в туалете я починил. А что касается косметики, то это ж дело вкуса. Я бы сказал, что это место больше подходит тем, кто ценит атмосферу, а не идеальный глянец.
Тамара Эдуардовна уставилась на него так, словно увидела буквально только что и раньше не догадывалась о его присутствии.
— Меня зовут Кирилл, я администратор, — представился Киря. — Сергей предупреждал о вашем визите.
— Я думала, что застану здесь Владислава, — чуть поджав губы, сообщила Тамара. — Хотелось бы кое‑что обсудить с ним с глазу на глаз.
— Владислав Игоревич неимоверно занят, он решает главный вопрос жизни, вселенной и всего такого, — вкрадчиво пояснил Кирилл. — Пытается спасти мир, пока космические корабли бороздят просторы Большого театра и пылают над Орионом, а Лучи Си разрезают мрак у ворот Тангейзера. Но я могу ему что‑нибудь передать, если хотите.
— Ладно, это подождет, — махнула рукой дама и повернулась к своему спутнику. — Пойдемте посмотрим зал?
— А вы действительно хотите сдать этот подвал другим арендаторам? — склонив голову набок и изобразив на лице наивное выражение, поинтересовался Кирилл.
— Ох, мальчики, пока еще ничего не решено, — стараясь побыстрее отделаться от настырных расспросов, бросила в ответ Тамара, — люди вот интересуются, помещение под магазин одежды ищут.
— Тогда это явно не лучший вариант, — заметил Кирилл.
— Почему? — впервые подал голос лопоухий носитель кожанки.
Продолжение доступно только участникам
Материалы из последних выпусков становятся доступны по отдельности только через два месяца после публикации. Чтобы продолжить чтение, необходимо стать участником сообщества «Xakep.ru».
Присоединяйся к сообществу «Xakep.ru»!
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
