Шпионские игры
Шрифт:
Джонатан посмотрел на рваную рану поперек плеча девушки. Вне всякого сомнения, она потеряла часть мышцы, и на месте раны останется уродливый шрам. Наклонив голову, он взглянул внимательнее:
— Пуля калибра семь — шестьдесят два?
— Угадали, — ответила Кира, прикрепляя повязку на место и опуская рукав.
— Распространенный калибр, характерный для южноамериканских военных, — сказал он. — Повезло вам.
— Угу, еще как! — ответила Кира. — Бывали раньше в Пекине?
«Ну пожалуйста, хватит».
Он помолчал, словно размышляя, удовлетворить ли ее невысказанное желание.
— Увы, нет, — наконец сказал он. — Было бы очень хорошо, если бы кто-то из нас побывал там раньше. Мне
— Не проблема, — ответила Кира.
— Оптимистка.
— Если не сумеем найти дорогу в чужом городе без карты, значит мы работаем не на ту контору, — сказала она.
К ее удивлению, Джонатан наконец улыбнулся.
Информационный оперативный центр ЦРУ
Уивер поставил банку с содовой на безопасном расстоянии от клавиатуры — уже не одно электронное устройство стало жертвой газированных напитков — и снова переключил внимание на монитор. В помещении стояла мертвая тишина, не считая гудения серверных вентиляторов, смонтированных под столом. Он был предоставлен самому себе, и ему это нравилось. Не так-то просто перевести шестнадцатеричный код на язык ассемблера, когда тебя отвлекают другие аналитики, болтающие в коридоре.
Дизассемблирование скомпилированной компьютерной программы считалось самой трудной задачей для программиста. По сравнению с ним написание программ, даже весьма сложных, казалось детской игрой. Программист мог использовать любой из десятков языков, которые облегчали жизнь кодировщикам, позволяя им использовать английские слова (которые назывались «исходным кодом») вместо того, чтобы вынуждать их пользоваться одними лишь числами, которые на самом деле только и понимали компьютеры. Английские команды преобразовывались в эти числа с помощью компилятора, игравшего роль одностороннего переводчика.
Искусство дизассемблирования заключалось в том, чтобы превратить числа снова в английские команды, не имея в качестве руководства исходного кода, — это было похоже на попытки перевести египетские иероглифы, не имея в своем распоряжении Розеттского камня. Люди использовали для счета десятеричную систему, где числа шли в порядке 0-1-2-3-4-5-6-7-8-9, прежде чем добавлялась вторая цифра и получалось 10. Компьютеры считали в восьмибитной двоичной системе, с последовательностью чисел 00000000-00000001-00000010-00000011, и так до бесконечности. Но в потоках нулей и единиц было легко ошибиться, к тому же занятие это было настолько утомительным, что не могли помочь ни кока-кола, ни кофе. Поэтому Уивер использовал декомпилятор, переводивший двоичные числа в шестнадцатеричные — с основанием шестнадцать. По крайней мере, он хотя бы мог думать в шестнадцатеричной системе, где числа шли в порядке 0-1-2-3-4-5-6-7-8-9-a-b-c-d-e-f. Но дальше ему приходилось смотреть на числа и пытаться перевести их обратно в исходный код, выполнявший те же самые функции.
В частном секторе хорошо платили тем немногим, кто мог дизассемблировать программы. Их опыт был полезен любой компании, стремившейся похитить коммерческие секреты конкурента, а Уиверу вполне хватало одержимости для подобного ремесла. Он мог бы зарабатывать вдвое больше, чем ему платили на госслужбе. «Майкрософт» и «Гугл» делали ему щедрые предложения, но патриотическая жилка удерживала его на правительственной службе. Уивер полагал, что смог бы сколотить неплохое состояние, занимаясь промышленным шпионажем, но он мог заниматься тем же самым здесь, не имея проблем с законом. Если бы Уивер не накачивался кофе, который среди программистов считался эликсиром жизни, он давно бы уже спал сном праведника.
В программе, которую принесли ему из «Красной ячейки», не было ничего замысловатого. Писавшие ее китайские
Алгоритм, который Уивер извлек из китайской программы автоматизированного проектирования, оказался более длинным, чем он ожидал, и более сложным, чем могло бы следовать из его размера. В МТИ от Уивера требовалось пройти вводный курс дифференциальных уравнений, и он получил лишь среднюю оценку, так что ему понадобился почти час, чтобы понять, что алгоритм имеет к ним непосредственное отношение. Уивер позаимствовал учебники у коллеги (свои он продал в колледже несколько часов спустя после последнего экзамена), но они ничем ему не помогли. Он подумал, что, поскольку алгоритм интегрирован в программу САПР, книги по общей математической теории мало чем помогут. Куда больше подошли бы пособия по геометрии, машиностроению или, может быть, физике.
С помощью других уравнений рассчитывались простейшие физические свойства — длина, ширина, высота, площадь. Но то, с которым имел дело Уивер, оставалось постоянным при сохранении пропорций между пространственными переменными; изменение общих размеров объекта не меняло результата уравнения, но его меняло изменение формы. Он что-то не учел… что? Массу? Уивер исключил ее — она должна была меняться вместе с величиной площади. Предел прочности? Невозможно без указания конкретного материала, из которого состоит объект, а Уивер не нашел способа, которым можно было бы ввести данное значение в программу. Он подумал о том, что это может быть генератор номеров составных частей, присваивающий уникальные идентификаторы каждой новой спроектированной детали, чтобы их можно было ввести в некую базу данных. Но уравнение было для этого слишком сложным. Может, еще какая-то технологическая функция, с которой он незнаком?
В конце концов он попросил аналитика из ОТЛАА помочь ему опознать соответствующие иероглифы в интерфейсе программы. Аналитик потратила час на поиски в них китайских иероглифических ключей, прежде чем поняла, что вряд ли они найдутся в стандартном словаре. Вскоре они обнаружились в словаре техническом — «хэнцземянь». Буквальный перевод звучал как… «поперечное сечение»? Для Уивера он не имел никакого смысла. Да, инженеры-машиностроители использовали программы САПР для создания чертежей в разрезе, но какая тут связь с математической формулой, результат которой зависел от изменения формы объекта, но не его размеров?
Будь даже у него под рукой исходный код, вполне вероятно, что он не смог бы понять, о чем должны говорить данные математические расчеты. Одно дело — знать, что данный участок кода рассчитывает Е = mc2. Другое — что данная конкретная формула объясняет, почему ничто не может двигаться быстрее скорости света. Этот китайский алгоритм обещал оказаться намного сложнее, чем простая формула Эйнштейна. Но Уивер не собирался сдаваться. Определить назначение уравнения стало для него предметом профессиональной гордости. Обед со Страйкер должен был стать лишь наградой. Она была одним из немногих встреченных им за последнее время сотрудников РД, которые не замкнулись в себе. Кроме того, она умела писать программы и к тому же была весьма симпатичной, так что его усилия того стоили.