В общем, плохо это – быть отставшим. И любой, кто не хочет оказаться однажды ненужным для мира, будет обречен постоянно изучать новое. А это новое… его стало так много, что все образование тало не эффективно и бесполезно. Остались только школы для детей. Там обучают не цифре, а как узнать все нужное из цифры. И действительно, зачем тратить столько времени, что бы научить кого-то искать корень квадратного уравнения, если можно показать, как найти ответ самому. И способный ученик больше не будет донимать учителя вопросами.
Я инженер цифры, 3 уровня. Смешно звучит. Еще несколько лет назад это выглядело как какая-то игра. Теперь эти уровни, которые присваивают корпорации всем своим спецам, единственное что может доказать твой уровень знаний. Ведь теперь нет дипломов высших учебных, есть сертификаты транснациональных. Всего таких уровней 8, при этом 3 из них большая редкость и что бы владеть уровнем выше 5, надо быть на короткой ноге с президентом корпорации, по крайней мере, так говорят. 3 уровень, когда-то так называли мидл инженеров, 1 уровень – джуниоры, 5 – синьйоры.
К сожалению, не все так гладко в нашем новом мире. Люди разделились на два враждебных лагеря. Те, кто за то что бы технологии меняли нас, и те, кто против. Я слабо понимаю, кто эти против, и чего они хотят. Они это кучка протестующих цифровиков или просто школьники, которые играются в шпионов? Я редко задаюсь такими вопросами, благо, мне есть на что тратить свое время. Задумываясь над такими вопросами, я рискую однажды, не заметно для себя, оказаться в низах.
Моя задача на службе у корпорации была связана как раз с этими противниками цифры. Они часто устраивали атаки на наши сервера, пытаясь слить секретную информацию или нарушить инфраструктуру города. И такие как я анализируют их код и достают из него все, что возможно для деанонимизации их в оффлайне.
Однажды им удалось вырубить инфраструктуру сити 5, и весь город оказался в темноте, светофоры перестали работать, автомобили управляемые серверами корпораций, остановились без связи. Многие магазины перестали работать, так как были практически полностью роботизированы. Потребовалось 2 дня на восстановление всех систем.
Сегодня я проводил анализ бинарника какой-то утилиты, теоретически способной отключить электростанцию. Работал я над этим не один. Это целый комплекс утилит, моя часть работы в этом самая маленькая – анализ серверной части, которая работает на обычных десктопах. Самую серьезную часть работы – работа с суперкомпьютером не стандартной архитектуры, который управляет непосредственно самой электростанцией, занимаются инженеры более высоких уровней. Говорят, к нам присоединился инженер 6 уровня. Для того что бы анализировать бинарники для суперкомпьютера, нужен собственно сам доступ к такому компьютеру. Архитектура таких компьютеров засекречена, и по тому ни о каких эмуляторах не может идти и речи. Доступ к таким вещам, пешкам вроде меня не дают.
У меня на экране застыли в дебагере машинные кода, стандартной архитектуры. За окном была весна и шел мелкий дождь. Я откинулся на кресло, работать сейчас не хотелось совсем. Я отчаянно пытался догнаться 3 чашкой эспрессо, но кажется безрезультатно. Похоже, придется брать работу домой. Формально так делать нельзя, впрочем для таких несерьезных задач руководство решило разрешить вынос информации. Вообще работать на дому можно инженерам от 4 и выше уровней. Таких маленьких как я, корпорация оберегала и нянчила. Cчитается плохим тоном давать джунам и мидам работать самостоятельно и уж тем более удаленно. В современном мире, право работать удаленно нужно заслужить.
– Покурим? – послышался за спиной голос моего колеги, Сайбора, инженера 4 уровня. Это привычка когда-то погубит меня, подумал я, но скука убьет раньше.
– Идем – ответил я.На улице все еще шел дождь. Воздух бы теплым и свежим. Мы вышли из офиса «Сайбер Протекта», одной из бесчисленных компаний корпорации и закурили.– Ну как там твой сервер? – спросил меня сайбор
– Слишком сложная эта хрень, там несколько виртуальных машин кодируют инструкции, нужно основательно засесть и подебажить.
– Пойдешь сегодня с нами в цифровую кобылу? Цифровая кобыла, кабак где обычно после работы зависают такие офисные планктоны как мы.
– Не могу, дедлайн на завтра, нужно дореверсить сервер.
– Уф, понимаю. Везет тебе, я сейчас вообще без работы. Может я с тобой пореверсю твой бинарник, а то скука смертная.
– Конечно, это было бы кстати – согласился я, копаться в этом мне, судя по всему, еще предстояло долго, и я готов был использовать любую возможность ускорить процесс.
Сайбор, или Борис, был бородатым, крепкого телосложения мужиком. Хотя и смотрелся немного по-хипстерски, мало кто мог его в этом упрекнуть. Его старомодные штаны в клеточку и не менее старомодная оправа очков добавляла ему пяток другой лет к его 25 годам отроду.
Докурив мы пошли в мой рум. Сайбор поставил свой ноут на стол, хрустнул пальцами и потягиваясь проскулил :
– Ну что понеслась?
– Ага, у меня на серваке лежит бинарник, ломай его полностью.
– Да не вопрос – бодро улыбнулся он.
Мы оба сидели за ноутами и по-удаленке приконективались к моему серваку, он стоял тут же, в углу комнаты. На серваке мы запускали и дебажили этот бинарник.
Linux, как много это слово значит для романтиков эпохи цифры. Некогда между главным идеологом и инициатором проекта Linux, ну или просто его отцом, и профессором Таненбаумом разгорелся нешуточный спор. Спор заключался в том, каким быть ядру системы Linux – монолитным или многоядерным? Практически все существующие тогда системы были монолитные, а многоядерные были чем-то новым, фантастическим. Профессор убеждал юного студента, что время монолитных ядер прошло и действительно революционная система должна быть многоядерной.
Ядро системы – это набор ее функций. В монолитном ядре все функции находятся в одном единственном, большем ядре. В многоядерной системе есть одно главное ядро – микроядро и множество ядер, которые создаются при необходимости. Микроядро содержит только самые важные функции, те которые нужны для запуска и работы самой ос. Любой процесс( программа) запущенная на этой системе получит свое отдельное ядро и оно ни как не будет связано с другими процессами. Таким образом, обеспечивается безопасность системы. Это похоже на систему, в которой для каждого процесса создаются своя виртуальная машина, со своей памятью и процессорным временем или даже отдельными ядрами процессора.
Linux долгое время был монолитным, ну или почти монолитным. Но сейчас, на моем сервере стоял именно многоядерный Linux. И это сейчас одна из лучших вещей в этой системе. Я мог запускать и дебажить бинарник на своем ядре, а Сайбор на своем. И мы никак друг другу не мешали. А если будет нужно общению между двумя процессами, это можно сделать, соединив их по протоколу LPP(linux process protocol), что-то вроде IP только для процессов Linux.
Таненбаум говорил совершенно верные вещи, только не в то время и, наверное, не тому человеку. Линус был очень самоуверенным и резким, возможно даже радикально резким, что, несомненно, и помогло ему создать величайшею систему в истории цифры.
Мы уже два часа дебажили этот бинарник. Моя доска для маркера покрылась непонятными для обывателя рунами и знаками, но мы так и не нашли ничего важного.
– Хорошо, смотри, что мы имеем. Есть виртуальная машинка, она интерпретирует код в машинный код для другой виртуальной машины. При этом она может интерпретировать код в разные машинные кода для разных виртуальных машин. Таких машин у нас 3. И мы до сих пор не знаем принцип, по которому она выбирает, в какой машинной код интерпретировать. – Начал суммировать факты Борис.
– Верно. Слушай, а что это за язык? Похоже на питон или что-то такое…
– Думаю, что этот язык создали специально для этого бинарника, нам ни к чему разбираться в его синтаксисе.
– Серьезные ребята… – выдохнул я.
– Это те ребята, что хотели энергостанцию остановить?
– Угу.
– Интересно, что там за ПО для самой станции. Наверное, что-то жесткое, раз уж к нам 6 уровневый типчик приехал.
– А ты видел этого типа?
– Неа, поцаны говорят у него с собой ноут с кристалом К11
– Ни бита себе – завистливо присвистнул я, на моем ноуте стоял обычный К7 для типичных инженеров – На нем 64 основных ядра по 1.5 ТГЦ каждый и сколько-то там десятков тысяч вспомогательных ядер.
– И кеш память для микроядра операционки. Запускаешь операционку прям на проце, круто правда?
– Может убьем этого шестого, заберем ноут, продадим проц и уедим куда-нить на Гавайи?
– Воу-воу, давай без этого, ладно? Да и продать не сможем – такие процы стоят на жестком учете у корпорации.
– Да знаю я, знаю…
***
Мы просидели за бинарником еще часа два и под конец рабочего дня начали понимать, как это работает.
– Значит, виртуалка выбирается в зависимости от времени на компе. Вот вызов системной функции времени, время берется с точностью до минут. Если это число минут дает остаток 1 при делении на 3, то используется первая машинка, если остаток 2, то вторая, ну и если остатка нет, то третья машинка – резюмировал Сайбор.
– Да уж, но фактически машины отдают один и тот же машинный код процессору. По-моему это слишком сложно и избыточно для обфускации? Как думаешь?
– Ну, хакеры люди творческие и всегда пытаются зарисоваться. Я бы не удивился, если бы они еще оставили домашний адрес где-то в теле бинарника.
– Как жаль, что они так не делают – расстроился я.
– Ладно, это еще не все. Сервак открывает 17666 порт для подключения злым хацкерам. Ты уже пробовал конектиться на него?
– Нет, давай попробуем.
Я запустил бинарник и стал пробовать подключиться к нему на 17666 порт. Утилита выдала сообщение об ошибке «Wrong password».
– Аргх, она требует пароль. А мы даже протокол не знаем – откинувшись на кресло, вздохнул я.
– Ну, протокол если не самописный, то я сейчас узнаю что за зверь такой – Сайбор запустил анализатор протокола и натравил его на наш бинарник – Вуаля, нет протокола, чистый текст. Слушай, я думаю ему просто надо отправить пароль, лень уже дебажить бинарник. Посмотри, какие строки есть в бинарнике, вдруг повезет.
– Окай – согласился я и запустил утилиту strings и скормил ей бинарник. Мне выдало кучу текста, который содержится в открытом виде в бинарнике. Грубо говоря, бинарник – это набор инструкций для процессора. Каждая инструкция это номер. Например номер 1 это плюс, 2 – минус,а 3 – переместить с одной ячейки памяти в другую. Но в бинарнике так же содержится текст, например если программа печатает что-то вроде «Hello World», то этот текст должен храниться в ней в таком же сыром виде. Вот и сейчас, я надеялся, что пароль тоже хранится в сыром виде. Все-таки пароль для вируса вещь не слишком-то необходимая, не думаю, что создатели ломали головы, как же его получше зашифровать.
– О, смотри, тут есть bitch13(suck)=, походу это оно?
– Давай попробуем – я снова попытался подключиться к серваку. Когда он меня запросил пароль, я его ввел и… «password accepted»
– Яхуу. Сайбор посмотрел в мой экран и ухмыльнулся : – Чего ты радуешься? Там же дальше написано «illegal IP address». Видимо там еще фильтр адресов, теперь еще разбираться: с какого можно подключиться, с какого нельзя…
– !%## – крикнул что-то не хорошее я. А потом опомнился – Подожди, ты хочешь сказать, что эти клоуны, оставили нам свой айпишник?
– Может быть и так, но думается мне, все не так просто.
– Странно это, зачем делать фильтр адресов, это же не комильфо. Ничего не понимаю. Серьезные хацкеры хотели взломать мейнфрейм электростанции. Они как-то получили доступ к спецификациям закрытой архитектуры этого мейнфрейма или даже сам доступ к нему. Но на простом бинарнике для десктопа оставили нам подсказку, в виде айпи адреса?
– Может быть это обманка? Есть идеи, зачем нужен этот бинарник?
– Я думал, для контроля за основным вирусом на мейнфрейме, или может для заливки его туда…
– Ладно, пусть СБ корпорации разбирается с этим. А нам пора в цифровую кобылу. Дома уже определишь, какие айпишники, там не много работы. Может еще и идеи какие в баре появятся.
Судя по всему мой вечер был действительно спасен и теперь пора отметить это в кобыле. Хотя если честно признаться, я не очень хотел идти. Мне еще предстояло выяснить допустимые адреса и написать детальный отчет о внутреннем устройстве программы. И все это на завтра. Но с другой стороны другие инженеры в кобыле действительно могли бы подкинуть интересные идеи. Боже, как же я люблю и ненавижу свою работу.
***
Я начал собираться сваливать с работы, ведь на часах было почти шесть. А я, конечно, не хочу быть из тех неудачников, которые остаются на работе после шести. Собрав вещи, я остановился у окна. Было без пяти шесть, а я тварь пунктуальная.
А в окне уже начинал сиять неоновыми цветами город – сити 5.Город, мечта кибер-фантастов прошлого. В нем было все, что было угодно футуристической душе атомной эпохи. Разве что летающих автомобилей так и не появилось. И космос – он по-прежнему не наш. Точнее сказать что-то там уже делается. Тонны техники отправляются на Марс и на Луну. На Луне даже есть база, где постоянно проживают исследователи. Но это конечно совсем не то, что ждали от нас наши отцы и деды. Это похоже на первые, очень робкие шажки маленького ребенка в большом и хаотичном мире.
Не удивительно ли, в тот момент когда вокруг тебя происходит чудо, по городу тут и там катаются робомобили, роботы уборщики неустанно зачищают улицы, когда рядом с обыденной реальностью существует и иная, дополненная, полная интересных вещей и тайн, когда деньги стали легче фотона – цифрами на суперкомпьютерах и все это заполнено большими и красивыми офисами, парками, магазинами, домами, неустанно наблюдаемые окто- и квадрокоптерами с высоты птичьего полета, ты все равно смотришь в небо. Где холодно и нет ничего. Неоновый свет, трехмерные рекламные борды, дешевая и вкусная еда, красивые люди, а ты все равно смотришь туда, в небо. Как ребенок, которому надоела старая игрушка, надоела Земля.
Но это не вся правда. Есть то, о чем я привык не думать. Там, за границей города есть люди, не знающие всех этих благ, доступных нам, технократам. Они живут в старых, рассыпающихся домах в грязи и пыли. Они не знают что такое цифра. Их дети никогда не узнают, что такое цифра. Родиться в низах, это значит остаться в атомном веке. И я ненавижу себя за это. Может поэтому я так смотрю в космос, словно хочу убежать из этого сытого рая? Эти мысли, как и сигареты, когда-нибудь обязательно погубят меня.
Шесть ноль два. Пора идти кушать в кобылу.