Дженнаро помог Малдуну перенести раненого. Они неуклюже подняли его на плечи и понесли. От движения Малкольм застонал, его прерывистое, хриплое дыхание стало громче.
– Лекс… Лекс, беги… Лекс… – неожиданно пробормотал Малкольм.
– Кто это – Лекс? – спросил Малдун.
– Кажется, так звали маленькую девочку, – ответил Дженнаро.
Они отнесли Малкольма к джипу и уложили на заднее сиденье. Дженнаро потуже затянул жгут. Малкольм снова застонал. Малдун отвернул повыше его рваную штанину и увидел рану – размозженные мышцы, среди которых торчали мелкие беловатые обломки костей.
– Нам придется отвезти его обратно, – сказал Малдун.
– Вы собираетесь уехать отсюда прямо сейчас? Но мы ведь еще не нашли детей! – сказал Дженнаро.
Малдун покачал головой и сказал:
– Они скорее всего убежали в парк. А это двадцать квадратных миль джунглей. Найти что-нибудь на таком огромном пространстве можно только с помощью следящих мониторов с датчиками движения. Если дети живы и шевелятся, двигательные сенсоры быстро обнаружат, где они находятся, и тогда мы поедем прямо туда и заберем их домой. А если мы прямо сейчас не отвезем доктора Малкольма к врачу, он умрет.
– Значит, придется возвращаться, – заключил Дженнаро.
– Да, придется.
Они сели в машину. Дженнаро спросил:
– И как же вы скажете Хаммонду о том, что его дети потерялись в парке?
– Да никак. Вы ему сами все расскажете.
Центр управления
Дональд Дженнаро в упор смотрел на Хаммонда, сидевшего в пустынном, еще не полностью обставленном кафетерии. Старик, совершенно спокойный, кушал мороженое маленькой ложечкой.
– Так, значит, Малдун уверен, что дети где-то в парке?
– Да, он так думает.
– Ну, тогда мы обязательно их отыщем.
– Надеюсь… – сказал Дженнаро. При взгляде на этого старика, который безмятежно поглощал мороженое, адвоката пробрала дрожь.
– Я совершенно уверен – дети очень скоро найдутся. В конце концов, я ведь всегда говорил – этот парк и создан был для детей.
Дженнаро сказал:
– Но, надеюсь, вы понимаете, сэр, что дети потерялись?
– Потерялись? – Хаммонд пренебрежительно фыркнул. – Естественно, понимаю, я еще не впал в старческий маразм. – Он вздохнул и переменил тон: – Послушайте, Дональд, я хочу, чтобы вы правильно восприняли то, что у нас произошло. У нас случилась досадная поломка – из-за этой грозы или еще из-за чего-то, и в результате произошел этот прискорбный и достойный всяческого сожаления несчастный случай. Вот и все – ничего более! Мы занимаемся устранением неисправности. Арнольд скоро разберется с компьютерами. Малдун скоро найдет и привезет детей – уверен, он вернется с ними раньше, чем я покончу с этой порцией мороженого. Так давайте просто спокойно сядем и немного подождем, хорошо?
– Ну, как скажете, сэр, – согласился Дженнаро.
– Почему? – спросил Генри Ву, поглядывая на экран компьютера.
– Потому что я думаю, что Недри что-то намутил с кодировками, – сказал Арнольд. – Поэтому я их и проверяю.
– Ну, ладно. А ты просматривал настройки? – спросил Ву.
– То есть?
– Ну, не знаю… Например, система контроля за доступом – она ведь до сих пор работает? – подсказал Ву. – Запись доступа к программам с клавиатуры, и все такое…
– Господи! – воскликнул Арнольд и щелкнул пальцами. – Точно! Системы контроля можно отключить только с главной панели!
– Правильно, – сказал Ву. – Ну, если запись доступа работает нормально, ты можешь проследить все команды, которые Недри вводил вручную, с клавиатуры, и узнаешь, что он сотворил с компьютерами.
– Черт возьми, а ведь ты прав! Я действительно могу это сделать! – воскликнул Арнольд и принялся быстро щелкать по клавишам. – И почему мне это раньше не пришло в голову? Это же очевидно! В программной системе парка встроено несколько уровней контроля, в том числе и контроль за доступом к программам с клавиатуры, – все добавочные команды обязательно записываются в отдельный блок памяти. Вообще-то эту систему изначально вводили для отлавливания «жучков», чтобы можно было вручную устранить дефекты программного обеспечения. Но она хороша и как часть системы безопасности.
Пока он говорил, на мониторе появился перечень всех команд, которые Недри сегодня днем вводил в компьютер:
13, 42, 121, 32, 88, 77, 19, 13, 122, 13, 44, 52, 77, 90, 13, 99, 13, 100, 13, 109, 55, 103, 144, 13, 99, 87, 60, 13, 44, 12, 09, 13, 43, 63, 13, 46, 57, 89, 103, 122, 13, 44, 52, 88, 9, 31, 13, 21, 13, 57, 98, 100, 102, 103, 13, 112, 13, 146, 13, 13, 13, 77, 67, 88, 23, 13, 13
system
nedry
go to command level
nedry
040/#xy/67&
mr goodbytes
security
keycheck off
safety off
sl off
security
whte_rbt.obj
– И что, это – все? – удивился Арнольд. – Он же ковырялся в компьютере несколько часов подряд! По крайней мере, насколько я помню.
– Возможно, он просто убивал время и только делал вид, что по уши занят работой, – сказал Ву. – Пока наконец не решил, что пора, – и тогда отключил компьютеры и удрал.
Ряды чисел, которые шли вначале, были кодировкой системы ASC–II, которую Недри ввел в компьютер со своей клавиатуры. Цифры эти означали, что он использовал обычный доступ к компьютеру – как любой другой пользователь, который садился за машину. Значит, вначале Недри просто осматривался, проверял, что к чему, – очень странное занятие для программиста, который создал всю систему программ для парка.
– Может, прежде чем лезть в программу, он проверял, не вносили ли вы за это время какие-нибудь изменения? – предположил Ву.
– Возможно… – согласился Арнольд, который пытался разобраться в том, что же Недри сделал с системой, и теперь просматривал перечень команд – строчка за строчкой. – По крайней мере, мы можем выяснить, что он тут натворил.
«System» – это Недри послал запрос на то, чтобы перейти с обычного пользовательского уровня непосредственно к программным кодировкам. Компьютер потребовал его имя, и тот набил: «nedry». Такой пароль, очевидно, был заранее введен в систему контроля, и компьютер открыл ему доступ к системе. Потом Недри запросил переход на самый высокий уровень программного контроля – «go to command level». Для того чтобы пропустить его на этот сверхсекретный уровень, компьютеру потребовалось не только имя пользователя, но еще и цифровой код и особый пароль. Недри ввел следующее:
nedry
040/#xy/67&
mr goodbytes.
И компьютер допустил его на высший командный уровень. Уже отсюда Недри запросил «security», то есть захотел влезть в систему безопасности. Поскольку, в соответствии с программой, после таких паролей пользователь имел полное право давать любые команды, компьютер покорно допустил Недри к системе безопасности. И тогда Недри набил следующие три строчки:
keycheck off
safety off
sl off.
– Он попытался отключить все системы контроля, – сказал Ву. – Не хотел, чтобы кто-нибудь знал, что он собирается сделать…
– Вот именно! – подтвердил Арнольд. – Но только он, наверное, не знал, что теперь уже нельзя отключить всю систему с какого-то другого модуля – вручную влезть в эти программы можно только при доступе с главной панели компьютера.
После того как Недри набрал три непозволительных команды, компьютер забеспокоился, но, поскольку набор производил пользователь с самым высоким уровнем доступа, компьютер решил, что Недри просто забылся и по ошибке пытается сделать то, что заведомо невозможно сделать с того модуля, на котором он работает. Поэтому компьютер снова спросил у Недри, с какой подсистемой тот желает работать. Недри ответил:
Security.
И компьютер позволил ему остаться в этой подсистеме.
– А вот наконец и пароль, которым он взломал программу, – сказал Ву и показал на последнюю строчку команд, введенных Недри:
Whte_rbt.obj.
– Что за чертовщина? – удивился Арнольд. – «Whte_rbt» – это, наверное, «white rabbit», «белый кролик». Это что, его любимая шутка?
– Оно обозначено как объект поиска, – заметил Ву. В компьютерной терминологии словом «объект» обозначается блок кодировок, которые можно перемещать с места на место и использовать там, где нужно, – все равно как, скажем, стул, который можно переставлять по комнате в любое место. Объектом может быть серия команд для рисования какого-нибудь изображения, или для обновления заставки на экране, или для производства каких-нибудь вычислений.
– Давай посмотрим, в каком блоке кодировки эта штучка запрятана, – сказал Арнольд. – Может, сообразим, для чего она. – Он вышел в меню программных утилит и набрал на клавиатуре объект поиска:
FIND WHTE_RBT.OBJ.
Компьютер высветил следующую строку:
OBJECT NOT FOUND IN LIBRARIES.
То есть блок с таким названием в каталогах компьютера не значился.
– Ее нет, – подытожил Арнольд.
– А ты поищи не по названию, а по содержанию – просто включи поиск такой строки, – предложил Ву.
Арнольд напечатал:
FIND/LISTING: WHTE_RBT.OBJ.
На мониторе замелькали быстро сменяющиеся строки кодировок – компьютер просматривал все коды в поисках заданной последовательности знаков. Поиск продолжался почти целую минуту и вдруг прекратился.
– Есть! – воскликнул Ву. – Это даже не объект, это – команда!
Стрелка на экране указывала на одну из строчек программы:
curV = GetHandl {ssm.dt} tempRgn {itm.dd2}.
curH = GetHahdl {ssd.itl} tempRgn2 {itm.dd4}.
on DrawMeter (!gN) set shp_val.obj to lim (Val {d}) – Xval.
if ValidMeter (mH) (**mH).MeterVis return.
if Meterhandl (vGT) (DrawBack (tY)) return.
limitDat.4 = maxBits (%33) to {limit.04} set on.
limitDat.5 = setzero, setfive, 0 {limit.2 – var (szh)}.