Алекс прочел в свое время книгу «The Eudaemonic Pie» Томаса Басса (Penguin, 1992), — историю о том, как компания компьютерщиков и физиков в восьмидесятые годы обыграла рулетку в Лас-Вегасе при помощи собственного изобретения — переносного компьютера размером с пачку сигарет, который предсказывал цифры, которые выкидывала рулетка. Один из членов команды находился около стола и определял скорость вращения колеса рулетки и движения шарика по ней, а компьютер затем передавал по радио информацию другому члену команды, который делал соответствующую ставку. Они хотели забрать чемоданы денег, но им это не удалось. По мнению Алекса «у методики этих ребят был большой потенциал, но он не реализовался из-за достаточно сложной и ненадежной технологии. Кроме того, в игре принимали участие слишком много человек, поэтому вставала проблема их контактов и взаимоотношений. Мы не должны были повторить их ошибок».
По мнению Алекса, победить компьютерную игру проще, «поскольку действия компьютера полностью предопределены заложенной в него программой» — каждое последующее действие основано на результате предыдущих, можно выразить это в таком девизе: «хорошие данные на входе — хорошие данные на выходе» (на самом деле, пословица компьютерных инженеров звучит так: «мусор на входе — мусор на выходе»).
С этими выводами были согласны и партнеры Алекса. Между прочим, Алекс был самым молодым из членов команды, он играл в рок-группе и мечтал о карьере рок-звезды. Только после того, как эти мечты не сбылись, он занялся математикой. У него был настоящий талант к математике и, хотя он не утруждал себя лекциями и семинарами (его даже выгнали из колледжа), он изучил предмет настолько, что был в нем настоящим авторитетом.
Он решил, что имеет смысл провести серьезное исследование и отправился в Вашингтон, чтобы изучить патенты в библиотеке Патентного общества. «Я подумал, что автор патента мог быть настолько глупым, чтобы поместить в него подробный текст программы для автомата для игры в покер». Оказалось, что он был прав. «Помещение полного текста всех программ в патент было единственным способом зашиты оригинальности своего изобретения, поскольку именно они и содержали подробное описание сути изобретения, правда. в форме, которая была непонятна большинству читателей. Никакого труда не составило получить микрофильмы со всеми кодами и скопировать их».
Анализ кодов помог выявить несколько деталей, которые они сочли интересными, но все пришли к выводу, что только работа с конкретными автоматами может приблизить их к желаемому результату.
Кстати, ребята отлично подходили для командной работы. Майк был очень способным программистом, гораздо более сильным в сфере дизайна оборудования, чем три его приятеля. Марко — еще один сильный программист, был эмигрантом из Восточной Европы и выглядел тинейджером. но обладал совершенно дьявольской изобретательностью. Алекс хорошо разбирался в программировании и был единственным, кто знал криптографию, очень нужную им. Ларри не слишком хорошо знал программирование, и не слишком хорошо двигался из-за последствий мотоциклетной аварии, но он был прекрасным организатором, который мог отслеживать все стадии проекта, фокусируясь на том, кто и что должен сделать в тот или иной конкретный момент.
После первой исследовательской стадии проекта казалось, что Алекс к нему охладел, а Марко, наоборот, воодушевился. Он повторял: «Я не вижу большой проблемы: есть тринадцать штатов, где мы вполне легально можем приобрести игральный автомат». В конце концов, он уговорил всех остальных: « М ы решили, что можем рискнуть". Каждому пришлось внести свою долю на необходимые транспортные расходы и покупку автомата. Они еще раз отправились в Лас-Вегас, но на этот раз за собственный счет.
Алекс говорил: «Чтобы купить игровой автомат, надо предъявить документ с регистрацией в том штате США. где приобретение игровых автоматов — вполне законное дело. При наличии водительских прав, выданных в таком штате, все должно было пройти гладко». Оказалось, что у одного из участников команды то ли дядя его знакомой девушки, то ли кто-то еще жил в Лас-Вегасе.
Для переговоров с этим человеком команда выбрала Майка, поскольку у него были самые хорошие манеры и вообще — он имел представительную внешностью. «Подобные покупки всегда были подозрительным делом, как и нелегальное приобретение оружия», — поясняет Алекс. Игровые автоматы часто приобретают нечестным путем — по незаконным каналам — чтобы использовать их в клубах и других местах. И, тем не менее, к его удивлению, такой автомат удалось купить.
За автомат японского производства пришлось заплатить 1500 долларов. «Мы поместили его на заднее сидение автомобиля и повезли домой так бережно, как будто у нас в машине был ребенок».
РАЗРАБОТКА ПРЕСТУПЛЕНИЯ
Майк, Алекс и Марко втащили автомат на второй этаж, и разместили в свободной спальне. Удивительное волнение перед началом работы с автоматом, по словам Алекса, запомнилось всем, как один из поворотных моментов в жизни.
«Мы открыли его, вытащили из него чипы памяти и процессор. Я подумал, что при производстве автомата на заводе крупной корпорации инженеры и сборщики вполне могли работать в режиме конвейера и потому быть немного ленивыми или невнимательными, они использовали чип 6809, аналогичный чипу 6502, который использовался в компьютерах Apple II или Atari. Это был 8-битный чип с размером памяти 64К. Он был хорошо знаком мне».
Машина, которую приобрели будущие хакеры, была одна из тех, что использовалась в игровом бизнесе уже около десяти лет. Если какое-то казино хочет приобрести автомат новой конструкции, то комиссия по играм Лас-Вегаса должна тщательно изучить его программное устройство и убедиться в том, что его выплаты организованы таким образом, что никто не будет обижен — ни игроки, ни казино. Процесс одобрения нового автомата — долгое и нелегкое дело, поэтому казино стараются держаться за старые автоматы столько, сколько это возможно. Это играло на руку нашей команде хакеров, потому что они справедливо надеялись, что более старые автоматы будут основаны на устаревшей технологии, которую им легче будет победить.
Компьютерная программа, которую исследователи обнаружили в чипе, состояла из череды нулей и единиц, то есть самого общего вида компьютерных инструкций. Перед тем, как приступить к изменению программы, надо было совершить, так сказать, «ретрансляцию», — операцию, которую совершают инженеры и программисты, когда хотят воссоздать процесс создания того или иного продукта: в данном случае это означало перевод программных нулей и единиц в форму, с которой могут оперировать программисты.
Для совершения этой операции Алексу был нужен «антиассемблер». Наша четверка не хотела приобретать эту программу законным путем, потому что это действие выглядело бы, как запрос в библиотеку о руководстве по изготовлению бомб. Ребятам пришлось написать собственный антиассемблер, Алекс описал этот процесс такими словами: «Это, естественно, была не легкая прогулка, но мы получили от этого занятия немало удовольствия».
После того, как компьютерные коды программы из покерного автомата были пропущены через новый антиассемблер, три программиста сели над ними, чтобы вникнуть в их суть. Обычно для профессионального программиста не составляет особого труда быстро отыскать в программе интересующие его секции. Так происходит, потому что программист, пишущий программу, расставляет на всем ее протяжении своеобразные «дорожные знаки» — метки, комментарии и объяснения того, как действует каждый из разделов. Это похоже на книгу, в которой есть заголовки частей, разделов, глав, а иногда и более мелких частей.
При переводе программы в цифровую форму, которую компьютер может понять, эти «дорожные знаки» игнорируются — ни компьютеру. ни микропроцессору они совершенно не нужны.
Поэтому, когда программа восстанавливается из машинных кодов при помощи антиассемблера, в ней нет ни одного традиционного пояснения; продолжая метафору «дорожных знаков», такой восстановленный код можно сравнить с картой, на которой нет названий населенных пунктов и маркировки дорог.
Наши исследователи тщательно изучали страницы кодов на экране, стараясь отыскать ответ на простые вопросы: «Какова логика программы? Каким образом перемешиваются карты перед выбросом? Как фиксируется замена карт?» Но главной задачей на этом этапе был поиск генератора случайных чисел. Алекс предполагал, что японские программисты, написавшие программу, вполне могли допустить незначительные ошибки в написании этого самого генератора, он не ошибся.
ПЕРЕПИСЫВАНИЕ КОДА
Алекс с гордостью описывал усилия команды на этом этапе: « М ы были профессиональными программистами, и все сделали хорошо. Мы выяснили, как цифры кода программы превращаются в карты на табло игрального автомата, а затем написали небольшую добавку на языке С, которая делала то же самое», — говорил он.