Видеокарту я разогнал тоже, для этого уже использовался специальный софт. Но была проблема видеокарта сильно грелась. На GPU стоял обычный алюминиевый радиатор без вентилятора. Решение напрашивалось само собой. Отломав штатный радиатор, я приклеил обычным суперклеем на графическое ядро кулер от процессора и воткнул его в свободный разъем для кулера на материнской плате.
В общем, решение работало. Правда, один раз кулер все-таки отвалился и пришлось клеить его снова.
Итак, на моем первом IBM PC стояла MS-DOS. Поэтому мы с братом решили установить Windows 95. Вы знаете, что Windows 95 реализовывала многозадачность не полностью? Любой процесс мог единолично захватить процессор и делать что угодно, например, подвесить машину. А еще были такие программы, как Nuke, которые эксплуатировали сетевые уязвимости Windows 95 и позволяли подвешивать машины удаленно.
Конечно же мы сразу установили игры: Age of Empires, Doom. Позже Blood и Quake.
За игрой в Age of Empires я провел много часов. Было увлекательно отстраивать империю, создавать армию, воевать с соседями.
Age of Empires, разработчик Ensemble Studios, издатель Xbox Game Studios, 1997
Мне все больше и больше нравились компьютерные игры. Моей мечтой стало их писать.
Компьютер захватил меня полностью. Для меня эта была новая вселенная, в которой ничего не понимали мои родители. Здесь не было «ты должен», здесь меня никто не ограничивал. Здесь я мог играть или писать программы сам. К этому времени у меня уже окончательно пропало желание показывать что-то маме и папе, чтобы те мной гордились.
Почта для хакеровИнтернета у нас тогда не было. Сети между домами еще не появились. Основным способом связи были модемы, работающие по наземным телефонным линиям. Скорость в таких «игрушках» достигала максимум 56 Кбит, что равноценно скачиванию файла со скоростью 7 КБ в секунду. Как раз через такие модемы мы и играли в Age of Empires, Blood, Quake.
Через знакомых у нас появилась электронная почта. Работала она совсем не так, как почтовый клиент у вас на смартфоне.
Специальная программа MiniHost дозванивалась до сервера, по протоколу UUCP (UNIX-to-UNIX Copy Protocol) отправляла и забирала письма, после чего вешала трубку, чтобы не занимать линию.
Сервер размещался на некогда советском заводе «Фосфорит», удачно приватизированном, разворованном и названом «ЕвроХим».
У нас была общая конференция между всеми пользователями почты.
Мы с братом нашли почтовые службы для размещения файлов по всему миру. Вы отсылаете запрос по определенному почтовому адресу на список файлов, а потом запрос на скачивание какого-то файла. Учитывая, что весь софт продавался на компакт-дисках, а денег катастрофически не хватало, это было неплохой альтернативой. Правда, скачивание больших файлов требовало много времени, что вызывало негатив других пользователей, телефонная линия все это время была занята.
А вот с безопасностью на почтовом сервере было совсем плохо. Пароли представляли собой просто номера телефонов владельцев. Дома у нас лежал телефонный справочник города. Например, ящик crb принадлежал Центральной районной больнице. В общем, я взял себе про запас три ящика.
Позже стало понятно, что это было правильным решением. Будучи молодым и горячим, я поссорился с одним из пользователей общей конференции, и мой почтовый ящик заблокировали. Я имел три резервных, и мне было абсолютно наплевать.
При этом люди, администрировавшие почту, решили, что хорошо было бы поменять пароли с номеров телефонов на нормальные. Они попросили всех придумать себе новый пароль и скинуть по почте! Я, конечно же, тоже отправил, со всех трех.
Я жаждал расплаты и решил отомстить за блокировку. Для этого нужно было пожертвовать одним из ящиков. Написав простенького трояна на Pascalе, я разослал его под видом «крутого скринсейвера» на общую конференцию.
Троян должен был стащить файл с паролями от почтового клиента и отправить на мой адрес.
Настройки почтового сервера позволяли подменять отправителя в письме, что я и сделал. К сожалению, человек, от имени которого я разослал это письмо, оказался дома, и всю затею мне испортил.
Электронная доска объявлений: первый взломКроме электронной почты, у нас в городе работала BBS (Bulletin Board System). Это электронная доска объявлений, проще говоря, система, которая использовалась для общения пользователей по телефонным линиям через модем.
У нашей BBS телефонная линия была одноканальная, то есть общаться можно было только с оператором системы, сисопом[6].
Подключались к BBS с помощью так называемого модемного терминала. Это текстовое окно, похожее на Telnet. Вы отправляете команду напрямую модему, например, ATDP 8945444333 набрать в импульсном режиме номер 8945444333 (Dial Pulse). После соединения на экране появлялось приветствие в виде разноцветного текста.
Там можно было поболтать, залить или, наоборот, скачать файлы. У этой BBS-ки был режим командной строки практически тот же MS-DOS. Вы могли ходить по каталогам, где лежали файлы для скачивания. Еще там была та же досовская команда «type»[7]. А вот команда «cd C:», смена диска на C:, от непривилегированного пользователя, естественно, вызывала ошибку «недостаточно прав».
Разговорившись с сисопом, я скачал софт, который он использовал, Tornado BBS.
Запустив Tornado BBS у себя на компьютере, я занялся исследованием. И практически сразу обнаружил две ошибки. Во-первых, при вводе неверного пароля Tornado BBS писал в лог следующее: «Введен пароль X вместо Y», где Y истинный пароль. Во-вторых, команда type (вывод содержимого файла) не проверяла привилегии пользователя. То есть можно было легко прочитать любой файл на диске C:.
Пазл сложился, вот оно! Достаточно было совершить неудачную попытку входа в BBS от админа, после чего под обычным пользователем вывести лог. Это я и сделал ночью.
Имея пароль админа, я получил доступ ко всему диску компьютера. Но, честно говоря, ничего интересного там не нашлось. И, скачав файл с паролями других пользователей, потерев лог, я, полный удовлетворения, отключился.
Подсоединившись к BBS на следующий день, я зашел в систему под чужим аккаунтом. Решил поболтать с сисопом:
Привет, как дела? написал я.
Да вот, меня вчера похакали.
Неужели? Что-то стащили?
А вот, ты и попался. С человеком, чей это аккаунт, я говорил час назад по телефону!
Ладно, раскусил.
В общем, мы подружились. Я рассказал про ошибки. Позже мы частенько играли с ним по модему в Quake World.
На нем же я попробовал Win95 Nuke и он отлично сработал. Windows просто вылетала в синий экран.
После Pascal я взялся за язык программирования Visual Basic. Мой брат купил книжку по Visual Basic 6.0. Подкупало тем, что на нём можно было визуально рисовать окна и элементы на них. И очень просто обрабатывать события: щелчки мышкой, ввод с клавиатуры и т. д. Щелкаете по любому элементу, в открывшемся окне выбираете событие, пишете его обработчик.
Позже, как только я перешел на Visual C, я не мог понять, как же тут добавить окно и написать обработчик его событий? Почему он тоже «вижуал», но тут все по-другому.
На Visual Basic было легко написать простейший калькулятор, редактор текста. Но для серьезных проектов он не годился он был медленный и тащил кучу библиотек с собой.
Хороший язык для детей. Так пришло понимание, что для серьезного программирования нужно что-то еще.
Линус Торвальдс написал Linux на C и ассемблере. Выбор был очевиден.
Сначала я осуществил свою детскую мечту и стал изучать ассемблер. Компилятором был выбран TASM (Turbo Assembler). Для тех, кто не знает, ассемблер язык программирования низкого уровня. Это система обозначений, используемая для представления в удобочитаемой форме программ, записанных в машинном коде. Другими словами, это самый низкий уровень. Здесь нет стандартных функций «вывести строчку на экране», «получить ввод от пользователя». Все это доступно через вызовы к операционной системе. Например, в MS-DOS, с чего я и начал изучение ассемблера, вызовы к ядру были реализованы через прерывание INT 21H.
Любая ошибка на языке ассемблера может привести к краху всей программы. Поэтому, если вы хотите стать настоящим профи, вы обязаны понимать, как функционирует CPU, как он обращается к памяти, как он работает с устройствами и многое другое. Этот хороший опыт помог мне потом писать высоконагруженные и производительные системы при минимуме системных требований.
Как раз хорошим дополнением к учебнику по ассемблеру стала книга про архитектуру x86-процессоров. Вы знаете, что Биллу Гейтсу приписывают фразу «640 КБ памяти всем хватит»? Откуда взялось ограничение в 640 КБ памяти, как процессоры, начиная с 286-го, его обходили, как появилась многозадачность и защищенный режим работы процессора, скалярность и суперскалярность? Все это должен знать настоящий профи.