Летом 1982 года — за несколько месяцев до поступления в колледж — мама отвела меня в сторону и сказала: "Отец хочет, чтобы ты летом нашёл работу и сам оплачивал расходы на обучение". Мне было 18 лет, я до этого ещё никогда не работал, и, честно говоря, меня такая перспектива несколько напрягла. Я был типичным ботаником, сидел дома и, вообще говоря, был немного ленив, идти работать мне не хотелось. Но я понимал, что рано или поздно это должно было случиться, и внутренне был согласен с отцом. К старту курса "Этичный хакер" делимся чуть сокращённым переводом о том, как этичное хакерство было устроено в 1982 году.
Моя мама, как всегда, была готова помочь. Она нашла объявление о работе на лето в дорожном департаменте. Когда я пришёл устраиваться, поприветствовать меня вышел крупный мужчина в оранжевом комбинезоне. Хотя слово "ботаник" ещё не вошло в моду, я излучал его определение. Он скептически оглядел меня. Первый его вопрос был таким (я не выдумываю):
Ты ведь знаешь, что здесь нужно работать руками, правильно?
Я едва не запаниковал. Дело в том, что я и помыслить не мог, что когда-нибудь буду работать физически. Умом я понимал, что рано или поздно придётся засучить рукава, но это были чисто теоретические рассуждения, не связанные с реальностью. Но сейчас я с тоской подумал, что мне придётся долгие дни находиться под палящим солнцем рядом с огромным катком, укатывающим горячий асфальт, и стараться не попасть под проносящиеся в нескольких сантиметрах машины. Конечно, я понимал, что это будет полезно — поработать летом и заработать хоть какие-то деньги, но этому противилась вся моя натура.
Я предполагал, что работа, которая мне достанется, вовсе не будет лёгкой. Работа, если за неё платят деньги, очень часто может быть довольно неприятной. Тогда мне и в голову не приходило, что моя любовь к компьютерам — моё единственное домашнее развлечение — позволит практически навсегда избежать любой работы, связанной с физическим трудом. Прямо там, на собеседовании в департаменте дорожного обслуживания, я принял решение, что ни за какие коврижки не соглашусь с их предложением.
Я сказал крепышу в оранжевом жилете, что я пока не знаю, какие у нас "планы на лето", что мне надо сходить домой посоветоваться с родителями и что я ему сообщу, когда смогу выйти на работу (спойлер: больше мы с ним не общались). Я дал дёру из департамента дорожного обслуживания, и больше меня там не видели.
Когда вечером мама спросила, взяли ли меня на работу, у меня не хватило духу ей соврать. Я честно сказал ей: "Да, взяли, но я отказался". Я попытался ей объяснить, почему отказался. Мне было немного стыдно. Она была разочарована, но поняла меня. Под конец нашего разговора она меня предупредила: "Только отцу не говори".
Я не стал ему говорить. И продолжил искать другую работу, где можно меньше работать руками. Я съездил в местный университет, где пытался найти работу продавца в местном компьютерном магазине, спрашивал, есть ли у них должность технического помощника или что-нибудь типа этого. Я не учился и не собирался учиться в этом университете, поэтому тут был дохлый номер — все эти вакансии уже были заняты студентами.
Однажды моя мама вернулась с работы с интересной зацепкой. Она дала мне номер человека по имени Джим, который занимался продажей и ремонтом подержанных автомобилей. Ему нужны были "компьютерные эксперты". Я решил позвонить.
Давайте я поясню. Последние четыре или пять лет единственное, чем я занимался и чему посвящал всё время, были компьютеры, но я вовсе не стал "компьютерным гуру". В колледже я закончил несколько курсов для старшеклассников по языку программирования Fortran и структурам данных. У моего соседа был компьютер TRS-80, и после многих часов упорного труда я научился довольно сносно программировать на BASIC. Но мои знания в области программирования в лучшем случае были поверхностными. Я никогда не писал и даже никогда не пытался писать очень большие или сложные программы, у меня не было никакого опыта отладки программного обеспечения в бизнес-среде.
Единственное, чем я мог похвастаться, — это хакерская жилка. У меня отсутствовал страх перед компьютерами, и я всегда был готов заняться тем, о чём раньше не имел представления. Новые исследования, обучение через эксперименты, разумная импровизация — вот это было по мне.
Я предложил Джиму посмотреть его компьютер бесплатно, если не справлюсь с проблемой. Он был доволен этим, потому что, видимо, уже заплатил нескольким людям, но безрезультатно.
Я прибыл на место и встретился с Джимом. Как бы вам его описать? Представьте владельца компании по продаже и ремонту подержанных автомобилей, вот это и есть Джим. Очень дружелюбный с виду, но с крепкой деловой хваткой. В первую очередь его волновали деньги, деньги, деньги... Деньги для него решали всё. У него был, вероятно, самый крупный местный бизнес по продаже подержанных автомобилей (не дилерский центр). Также он занимался ремонтом и обслуживанием легковых и грузовых автомобилей и тракторных прицепов. Работал он с размахом и даже собирался расширяться. Вообще Джим — довольно интересная и яркая личность. Он и мыслил, и действовал нестандартно, но это часто приводило его к разного рода неприятностям. Как-нибудь я расскажу о нём особо. Но пока вернёмся к моей истории.
Проблемы с компьютерами появились у Джима после сделки, которую он заключил с одной фирмой-разработчиком программного обеспечения из Калифорнии. Та поставила ему компьютерную систему, которая должна была управлять всей работой компании Джима. Фирма была крошечная, один или два человека. Они продали ему систему Data General Eclipse, 16-разрядный мини-компьютер с несколькими рабочими станциями, а также специальное программное обеспечение для управления заказами, выставления счетов и расчёта заработной платы.
В какой-то момент отношения между Джимом и фирмой испортились, она прекратила поддержку программного обеспечения и стала требовать какие-то космические суммы за исправление программных ошибок, выводивших из себя сотрудников бэк-офиса. Уж не знаю, какая кошка пробежала между ними и Джимом, но они даже перестали разговаривать друг с другом. В результате система фактически перестала работать. Джим обратился к местным компьютерщикам, чтобы те разобрались в программном обеспечении, но оказалось, что оно зашифровано. (С технической точки зрения правильнее будет сказать "защищено", а не "зашифровано", но, как это ни назови, легче не станет — исходный код был недоступен, и местные компьютерщики ничего не смогли поделать).
Когда я спросил Джима, можно ли мне посмотреть, в чём там дело, он посмотрел на меня с недоверием. В самом деле, кто я такой был в его глазах? Только что окончивший школу ребёнок, сующий во всё свой нос, просто потому что интересно. Но на самом деле я думаю, что Джиму было просто любопытно. Он, вероятно, слышал, что иногда попадаются такие всезнайки, ботаники-компьютерщики, которые могут всё, а я по всем признакам был похож именно на такого ботаника.
Я зашёл в систему, начал копаться в ней и обнаружил, что у созданной Джимом учётной записи не было нужных привилегий. Я подошёл к Джиму и сказал, что мне нужны привилегированные права доступа, чем сразу его покорил. Он сказал, что учётную запись без доступа к системе он создал специально, чтобы посмотреть, смогу ли я это заметить. Это был своего рода компьютерный тест для меня, и я его прошёл. Я тихо вздохнул, понимая, что привилегии доступа к учётной записи были наименьшей из его проблем.
Была проблема поважней. Все файлы управляющей системы были написаны на BASIC. Тут мне повезло, так как благодаря многолетнему опыту программирования игр на TRS-80 я довольно хорошо ориентировался в BASIC. Но, когда я попытался открыть файлы, все они оказались пустыми. Сама программа существовала и работала, но в редакторе ничего не открывалось. Размеры файлов в каталоге говорили о том, в файлах что-то содержится, но по какой-то причине их нельзя было открыть и просмотреть.
Если бы в детстве у меня был более современный компьютер, я бы, наверное, бросил все попытки прочитать файлы и расписался бы в собственном бессилии. Но в школе я долгое времени провёл за старыми примитивными машинами, такими как мини-компьютер 1974 года Digital PDP-8/E, а дома у меня был 256-разрядный микрокомпьютер Netronics за 159 долларов с макетной платой ELF II, и у него была шестнадцатеричная клавиатура и светодиодные индикаторы ввода-вывода. Я неплохо разбирался в этих машинах, кое-что знал о машинном коде, форматах файлов и заголовках, утилитах операционной системы и тому подобных низкоуровневых прибамбасах. По крайней мере я знал, что они существуют.
Мне пришла в голову мысль, что, возможно, то, что делает файлы нечитаемыми, кроется в заголовках файлов. Я нашёл в системе утилиту hex dump/editor и с её помощью мог просматривать и изменять первичные файлы, в том числе их заголовки. Эта программа выводила файл в виде таблицы из шестнадцатеричных чисел. Справа отображались символы, соответствующие таким шестнадцатеричным числам.
В редакторе я также мог просматривать исходные тексты BASIC для всех программ. Всё было на месте, ничего не было зашифровано. Появилась надежда, что моя идея может сработать и, возможно, есть какой-то способ скопировать код из этих файлов в другие файлы, с которыми можно свободно работать.
Джиму было очень интересно, что я делаю, он всё время стоял у меня за спиной, но, надо отдать ему должное, ни во что не вмешивался. По экрану летали числа, таблицы, символы... Со стороны всё было круто и выглядело так, будто я понимаю, что делаю. Но на самом деле, манипулируя всеми этими числами и таблицами, я отчаянно пытался понять, что же с этими данными делать дальше.
Я создал с нуля "хороший" BASIC-файл и открыл его в редакторе hex dump. Затем сравнил его содержимое с одним из "плохих" файлов. Файлы явно отличались, но при этом часть заголовка файла, содержащая информацию о файле (имя, расположение, размер, параметры защиты), у "хорошего" и "плохого" файлов была одной и той же. Так как заголовок имел стандартный формат, мне было, в принципе, понятно, что, куда и зачем.
Однако в заголовке файлов было несколько неизвестных мне областей, а вот они-то в "хорошем" и "плохом" файлах друг от друга отличались. Я стал действовать методом "тыка" и попробовал изменить копию "плохого" файла. Первые несколько попыток закончились тем, что я испортил файл до такой степени, что он вообще перестал открываться.
Но затем при просмотре файла в программе hex dumper я заметил, что в заголовке файла одно из чисел было "E" в "хорошем" файле и "F" в "плохом". ("E" — шестнадцатеричное представление двоичного числа 1110, а "F" — представление числа 1111). 1110 и 1111: разница всего в один разряд. В hex editor я заменил в "плохом" файле число "F" на "E".
И на экране волшебным образом возник исходный код BASIC! Я был поражён. Оказывается, поставщик установил такую "защиту" — заменил один разряд в заголовке каждого файла, после чего файл перестал читаться, но всё равно мог запускаться. Эта ситуация напомнила мне, как "защищают" чемоданы с помощью замочков с тремя цифрами: кого-то, может быть, такая защита и остановит, но только не того, кто имеет цель похитить содержимое чемодана.
Сердце моё бешено заколотилось — кажется, я действительно мог решить проблему Джима. И что ещё более важно, Джим теперь будет знать, что я могу не только языком трепать. Ну, или как-то так. Я уже около часа разбирался с его проблемой, ещё 45 минут ушло на то, чтобы просмотреть файлы и поменять все разряды. Сегодня я бы, наверное, попытался создать что-нибудь вроде скрипта, чтобы всё делалось автоматически, ведь программисты по природе своей ужасно ленивые существа. Но в свои 18 лет я ещё не умел писать такие скрипты и, честно говоря, даже не знаю, можно ли было вообще в Data General Eclipse их создавать.
В итоге на снятие всей защиты у меня ушло около двух часов. Когда Джим узнал, что я исправил файлы, он был ошеломлён и обрадован — именно в таком порядке. Возбуждённый, он не сходя с места попросил меня исправить ошибку в форме ввода — менеджеру по работе с клиентами никак не удавалось правильно настроить параметры поля. Это оказалась простая ошибка, уже через 30 секунд я её обнаружил, а ещё через 30 секунд исправил. Но какой же эффективной оказалась моя работа! Ведь я сэкономил Джиму сотни часов ручной работы из-за невозможности использования компьютерной формы!
Когда я всё за минуту починил, Джим поразился ещё больше. С этого момента Джим стал относиться ко мне, как к компьютерному гению. Он испытующе посмотрел на меня и сказал:
"Сколько ты хочешь?"
Этот вопрос мог бы возглавить список самых пугающих в моей жизни, если бы первенство не принадлежало вопросу "Когда вы сможете приступить?", заданному мне в департаменте обслуживания автомобильных дорог несколькими неделями ранее. Но, несомненно, эти вопросы стоят в списке где-то рядом. Только представьте — мне, 18-летнему, без опыта работы, которому ещё никто и никогда и ни за что не платил, никогда не получавшему зарплату, отказавшемуся от единственного предложения работы, теперь предложили самому назвать сумму собственного гонорара. Вот уж о чём я не думал в то время, так это о денежной стороне вопроса. Я отправлялся в офис, полагая, что только узнаю что-нибудь о возможной работе, но вышло так, что мне сразу же пришлось показать себя с технической стороны.
И какую сумму прикажете называть? У меня не было ни малейшего представления. Я понятия не имел, сколько стоят услуги программистов, что такое консультант или сколько денег должно или может стоить моё время. Я не хотел брякнуть Джиму сумму, которая бы его испугала. С другой стороны, я не хотел, чтобы меня надули. Поэтому я назвал сумму, которая показалась мне довольно крутой и которая будет Джиму по карману: 100 долларов.
Джима расплылся в широкой улыбке. Это была улыбка человека, которого долгое время держали в одиночной камере и внезапно выпустили на свободу. Это была улыбка человека, стоящего на пороге невероятной сделки. Джим повернулся к менеджеру по работе с клиентами и сказал: "Выпиши Неду чек на 100 долларов".
Затем он сказал, что, если я хочу найти работу, он может мне кое-что предложить. Он сказал, что хочет переделать систему и предложил мне работу на лето за 400 долларов в неделю, чтобы я устранял проблемы и устанавливал новые программы.
Я уехал с собеседования с сотней долларов в кармане и перспективами работы на лето. Родители были в восторге, а я-то как был рад! Этим и следующим летом я работал на Джима, на заработанные деньги я покупал школьные принадлежности и оплачивал расходы, а также купил свой первый "настоящий" компьютер — Commodore VIC-20. Это были хорошие деньги, и я занимался тем, что мне нравилось.
Однако какое-то время меня не покидало чувство, что при первой встрече с Джимом я продешевил с деньгами. Я прекрасно понимал, что тогда он был весь у меня в руках и я мог бы легко запросить с него гораздо больше, чем 100 долларов. Он заплатил бы, не торгуясь, и это было бы справедливо, учитывая, что никто из тех, кого он раньше приглашал, помочь ему не смог. Раньше, когда он приглашал компьютерных мастеров, он платил им гораздо больше. Я задал себе вопрос, мог ли я рассчитывать в тот день на другой гонорар? Был ли я достаточно профессионален?
Время — великий судья. Вспоминая об этом сейчас, я понимаю, что минимальная заработная плата в США в 1982 году составляла менее 4 долларов в час. За эти 100 долларов я бы в течение 25 часов заделывал дорожные ямы во славу дорожного департамента, даже больше чем в течение 25 часов, если учесть, что Джим в своём классическом стиле заплатил мне за работу "чёрными". В результате я получил свою первую работу — за 20 и даже больше долларов в час. Чтобы заработать 400 долларов, мне нужно было отработать примерно 20 часов в неделю. То, что я делаю по сию пору, вряд ли похоже на "работу", во всяком случае в том смысле, в котором рассуждал о "работе" отец. Проще говоря, мне сильно повезло.
С другой стороны, повезло и Джиму — ведь он за относительно небольшие деньги заполучил хорошего программиста, а затем пошёл и дальше, наняв для работы над системой других студентов колледжа. Но я больше не пытаюсь понять, кто кем тогда воспользовался. В итоге ситуация оказалась взаимовыгодной.
У меня есть ещё пара-другая историй о моей первой работе. Например, как жена Джима пыталась познакомить меня со своей дочерью. Или как я возил Джима в командировку на новеньком Thunderbird Turbo Coupe 1983 года, и как эта командировка превратилась в поход по кабакам.
Но эти истории я расскажу, видимо, в другой раз. Эту статью я назвал "Как уклониться от реальной работы", но я не уверен, что могу дать какие-либо полезные рекомендации. Всё, что приходит на ум, укладывается в банальные и избитые фразы: "Делай то, что тебе нравится, а деньги сами придут" или "Найди работу, которая тебе нравится, и тебе до конца жизни не придётся работать".
Но, по крайней мере в моём случае, доля правды в этом всё же есть. Кроме этих рекомендаций могу предложить только такую: если вы ищете работу, будьте готовы отвечать на пугающие вопросы типа: "Когда сможете приступить к работе?"
P. S. Эти статьи я придумываю и пишу сам, у меня нет редакторов. Все тексты я редактирую самостоятельно: они вылёживаются пару-тройку дней, а потом я их перечитываю. Этот текст, когда я его читал заново, показался мне несколько высокомерным. Можно подумать, что парень, используя великолепные хакерские навыки, избежал "тяжёлого труда для простолюдинов" или что-нибудь в этом роде. Надеюсь, статья не произведёт такого впечатления — в любом случае это не входило в мои намерения.
Есть вещи, созданные для нас, а есть вещи, для нас не созданные. Я считаю, что мне очень повезло, что то, в чём я был хорош, помогло мне получить довольно приличную летнюю работу, а затем и сделать карьеру. Не всем улыбается такая удача — но, в конце концов, это просто удача, а не доблесть.
Узнайте, как прокачаться и в других специальностях или освоить их с нуля:
Другие профессии и курсы
ПРОФЕССИИ
КУРСЫ
Helwig
del