Не то чтобы Аня восприняла предупреждение Smoker-а о парашюте совсем уж серьезно, но прошлые уроки полетов не прошли даром: она принципиально рассматривала квартиры не выше второго этажа. Ну просто на всякий случай. Первая же — состоявшая из двух комнатушек, кухни и длинного, как в кошмарном сне, коридора, расположенная на втором этаже десятиэтажного дома — ей подошла. Из-за пыльных окон выступали тоскливые ряды гаражей и серые трубы ТЭЦ, закрытых лет эдак двадцать назад. Ане они чем-то напоминали перевернутые воронки смерчей, жадно тянущихся в низкое небо, серое, будто экран выключенного музейного телевизора.
Тоска этого места буквально оседала на одежде, как мелкая пыльца. Гаражи — «зло» еще прошлого века, которое так и не изжило себя в веке нынешнем — тянулись бесконечными рядами. И если в центре города от них удалось избавиться, перенося парковочные места под землю, то в спальных районах они до сих пор составляли целые лабиринты, не заблудиться в которых мог только местный житель. Аня еще в подъезде подумала, что есть на свете такие дома, в которых никто не счастлив, и, видимо, это как раз такой дом. Хотя, на месте полиции, она не торопилась бы сюда тащиться и вообще не удивилась бы, узнав, что это унылое и как будто само себя пережившее место исчезло с карт и навигаторов по собственному почину.
— Нормально тут для вечеринки, — неуверенно сообщил хозяин, принимая деньги.
Аня — в очках, с волосами, заправленными под капюшон, из-под которого сиротливо торчали несколько косм светлого парика — кивнула:
— Недетски оттянемся. Курить же можно? — вопрос был задан чисто из вежливости. Квартира была прокурена настолько капитально, что, похоже, здесь можно было получить дозу никотина, просто глубоко подышав.
— Только ничего не разносите.
«Что тут разносить?» — тоскливо подумала Аня, оглядев две кровати с промятыми матрацами и обои, у потолка свисающие лоскутами. Как в прошлый век попала, честное слово.
Не хватало, чтобы для полного счастья ее вполне современный — и, увы, обреченный на смерть — ноутбук при запуске вдруг показал операционную систему тридцатилетней давности.
Убедившись, что дверь надежно заперта и никто не думает ее беспокоить, Аня расставила энергетики и чипсы в стратегических местах, уселась на одну из продавленных кроватей, положила ноутбук на колени и, мысленно пообещав себе, что это «ну точно в последний раз», вставила инфокуб в разъем. Свинцово-серые грани засветились мягким сиянием и как будто поменяли конфигурацию. Конечно, это был обман зрения: инфокубы стоили таких денег еще и потому, что, как утверждали производители, их оболочка могла бы пережить ядерный взрыв в несколько килотонн, купание в кислоте и ЭМИ-гранату любой мощности. Сломать эту внешне хрупкую вещицу было практически невозможно.
Но главное, конечно, находилось не снаружи, а внутри. Инфокубы ценились не за прочность или стильный минималистичный дизайн, и уж, конечно, не за то, что превосходили флешки и переносные жесткие диски по объему памяти. По сути это было не переносное хранилище данных, а намертво запаянный архив. Любые данные, помещаемые в инфокуб, изначально шифровались и уже в зашифрованном виде распределялись по ячейкам памяти. А алгоритм распределения, как несложно было догадаться, составлял коммерческую тайну компании-производителя. Как и алгоритмы шифровки. Поэтому, теоретически, не зная пароля, из инфокуба невозможно было извлечь нужные данные: даже если каким-то чудом их удалось бы достать, на руках пользователя была бы просто мешанина из нулей и единичек. По тем же причинам невозможно было украсть с него информацию частично.
По правде говоря, Аня вообще не до конца представляла, как будет бодаться с этим шедевром высоких технологий. Пока она только разминалась, хрустя картофельными чипсами.
Метод брутфорса явно не был лучшим планом, если только Аня не собиралась провести в этой прокуренной клетке ближайшие лет восемьдесят: за такой срок компьютер, пожалуй, и подобрал бы пароль самостоятельно. Следовало попробовать что-то более тонкое.
Попытка изменить программную оболочку куба, чтобы он принял любой код, была принята по большей части для очистки совести. Аня и до этой истории знала, что пароль не хранится в самом архиве, а при его вводе производятся сложные математические манипуляции по алгоритму IMS3-1, выдающие в итоге контрольную сумму. Которая, естественно, не совпала бы, потому что чудеса в мире приключались очень лимитировано.
Подкрепив силы энергетиком — за окном уже начинало темнеть, вернее, светло-серая хмарь просто превратилась в более мрачную, но такую же тусклую — Аня решила подправить контрольную сумму в самом архиве и, провозившись еще полчаса, поняла, что не для нее эта роза цвела. Или, если уж совсем просто, для взлома архива всего-то и нужна контрольная сумма, которая находится, мать ее, в том самом архиве. Шах и мат.
Аня хрустела чипсами и скрипела зубами. Это были последние чипсы до следующей зарплаты. А еще надо было чем-то кормить Гришу. И выходила новая крутая стрелялка. Короче, надо было лучше думать. Едва не подвывая от отчаяния, Аня теребила фиолетовые косички, ругалась сквозь зубы и вновь и вновь шла на штурм проклятого инфокуба. От азарта у нее покалывало кончики пальцев, летавших по клавишам ноутбука. Озарение снизошло, наверное, час на второй работы. В конце концов, при расшифровке архива на компьютере, как известно, создается папка с временными файлами из архива. Закидывать «шпиона» на инфокуб было совершенно невозможно без знания пароля. Но ничто не мешало Ане попробовать закинуть «шпиона» в эту временную папку, чтобы он, когда файлы будет сворачиваться обратно в архив после ввода неверного пароля, попал внутрь.
Идея отдавала безумием — ничего подобного Аня в жизни не делала — но какая-то логика в ней все-таки имелась, да и хуже бы вряд ли стало. В конце концов, стоял бы на инфокубе маячок, он бы работал всегда и хозяева этой штучки выехали бы давным-давно, скорее за нанимателями Smoker-а, чем за рядовым и не слишком удачливым взломщиком Анной Инсаровой.
Запустив шпиона, Аня почти перестала дышать и до боли скрестила пальцы. И — дуракам воистину везет! — получилось.
Не веря своему счастью, она принялась искать запись с контрольной суммой. Файлик-шпион был «натравлен» на битовые скопления, превышающие определенную длину: логика подсказывала Ане, что, если все файлы на инфокубе лежат разрозненными кусками, то уж КС должна быть хоть как-то обособлена и упорядочена, чтобы куб сам понимал, что и с чем сравнивает. Объем данных был куда как немаленьким, так что Аня провозилась добрые полчаса, прежде чем стала счастливой обладательницей куска кода вида: «B0DF41EA9B2F47A205F0C088BD6105B0F3C67D6B». Загрузив его в конвертер, Аня, наконец, получила человеческий двоичный код, выглядящий в ее глазах как выигрышный лотерейный билет.
Оставался один нюанс, который, тем не менее, вполне мог похоронить всю ее работу: количество файлов в архиве изменилось. А, значит, изменилась и фактическая контрольная сумма, тогда как проверочная контрольная сумма осталась старой. Фактическая контрольная сумма высчитывалась, исходя из наличествующих на кубе файлов и введенного пароля. Путем «нехитрых математических вычислений», от которых у нее в другое время волосы встали бы дыбом, Аня рассчитала, какой должна быть фактическая контрольная сумма при нужном ей количестве файлов в кубе, то есть с учетом программы-шпиона, и при выдуманном ей пароле.
Оставалось всего ничего: сделать так, чтобы проверочная и фактическая контрольные суммы, наконец, совпали, прежде чем Аня предпримет попытку разнести чертов куб физически.