Последние новости и истории о взломе тех или иных сайтов напомнили мне историю, которая произошла несколько лет назад.
Позвали меня проверить безопасность в некоей полугосударственной организации. Контора никоим образом не была связана с финансами; с другой стороны, в её сети хранились личные данные достаточно большого количества граждан.
Итак, прихожу я туда, сажусь напротив начальника IT-отдела и начинаю его интервьюировать по поводу того, что у них есть в сети, как она построена. Он выкладывает передо мной чертежи, документацию и прочее. Смотрю, читаю — планировка достаточно грамотная. Хорошему, естественно, нет предела, но вполне адекватно сделано.
— Хорошо, — говорю, — а теперь давайте прогуляемся и посмотрим, как оно выглядит физически.
Идём в серверную, мне показывают, где что стоит, как подключено. И тут у меня возникает ощущение, что мне (точнее, им) чего-то не хватает. Чего-то, что я видел на чертеже, но не вижу в реальности.
Закончили обход, вернулись в кабинет к начальнику, закрыли за собой дверь.
— Скажите, пожалуйста, вот тут (тычу пальцем в чертёж) у вас нарисован файрвол. А где он физически? Я его нигде не видел. — Да вот же он, — отвечает начальник и показывает мне за спину. — Мы его уже два года назад купили.
За мной на полке лежит он. В картонной коробке, запечатанной в целлофан, с надписью «Check Point».
До сих пор горжусь своей выдержкой. Я не начал хохотать в лицо, а сдерживался, пока не вышел на улицу.
Я веб-дизайнер. Неделю назад общались с клиентом по скайпу, оговаривали детали, каким он хочет видеть сайт и так далее. В итоге пришли к выводу, что в логотипе нужно обыграть фамилию. Какую-то там фамилию на «К», неважно — в истории ведь сохранилось. Договорились, что свяжемся, когда я отрисую макет.
Клиент не торопил, поэтому всю неделю я заканчивал предыдущий проект. И вот настало время взяться за новый заказ. Так, что же там за фамилия была?.. Лезу в скайп, открываю историю сообщений. Негусто. Тут явно чего-то не хватает: переписка была больше. Иду в настройки, смотрю — «Хранить всё». Но тут явно не всё! Не может ведь CCleaner чистить историю, а если б и чистил — то всю сразу, а не частично.
Помню, что общался только по телефону и скайпу, но себе уже не очень доверяю. Проверяю почту — нет, не было ничего. Значит, скайп! Ползу в AppData\Roaming\Skype. Ага, chatsync — наверное, то. Открываю — иероглифы. Пробую кодировки — лажа. Зашифровали, демоны!
Ничего, Гугл в помощь. На каком-то форуме нахожу прогу, которая расшифровывает историю скайпа, ссылочка прилагается, причём рабочая — красота! Качаю, запускаю. Погасить скайп? Да пожалуйста! Вуаля, вся переписка как на ладони. И где же то сообщение? Где эта проклятая фамилия?! Она ведь была! Была напечатана! Я её читал!
Не, клиенту звонить — не вариант. Совсем не вариант. Звонить… Телефон… «Сообщения → Входящие»… Вот же она, родимая!
Честь мундира спасена. Можно приниматься за работу.
Зашёл как-то в гости друг с парой бутылочек пива, а я на то время сайт писал уже достаточно продолжительное время. Ну, думаю, отвлекусь немного, передохну. Слышу от товарища, который внезапно оказался за моей спиной и смотрит в монитор, фразу:
— Нда, какой ты стал жестокий с этой работой… Ты бы отдохнул, что ли, а то только убивать тебе и убивать кого-то!
Начинаю судорожно искать причину вывода. Взгляд падает на слишком частые вызовы die(); в коде. Баголовство было в самом разгаре…
Мой дед в молодости работал продавцом в магазине радиотоваров в отделе телевизоров. Как-то приходит к нему покупатель и просит продать телевизор КВН-49-4. Дед ему начинает рассказывать, что это устаревшая модель, и на прилавках стоит несколько более современных. Но покупатель упирается:
— Меня не обманешь, у КВН-49-4 самые высокие показатели.
Достаёт из кармана таблицу с характеристиками разных телевизоров, где у КВН-49-4 обведены в красные кружочки потребляемая мощность и чувствительность. Дед объясняет:
— Большая потребляемая мощность — это как раз плохо: чем больше ватт, тем счётчик будет больше накручивать. Чувствительность тоже: чем больше микровольт, тем хуже ловит.
Не убедил. Всё равно купил мужик КВН-49-4.
Прошло много лет. Я работаю продавцом в компьютерном магазине в отделе мониторов. Покупатель не изменился. В девяностых требовали мониторы с самым большим размером зерна, сейчас — с самым большим временем отклика.
Вчера на ночь глядя захотелось странного. Поставил NetWare 6, поглядел, как тормозят «иксы» на «жабе», вспомнил время оно, когда пафосные одмины в быдлоконторах, насадив везде ворованную «нетварь», смотрели на нас, пришлых по объявлению, воспитанных в универах контрафактными NT. Вспомнил, с каким пренебрежением дяденька в курточке-бомбере отзывался о студентах-айтишниках, которых якобы «убивал камнем». Маниак, да. Плохие студенты вместо изучения годной и нужной «нетвари» в общаге мучали ещё совсем гадких «пингвинят» (ну, не было у них тамагочи). Зачем-то дядя цитировал генерала Лебедя — казалось бы, при чём тут лебединая песня Novell и вакансия помощника пафосного быдлоадмина? Ну, чисто позлить, сказал ему, что прочитал пару книжек про эту его «нетварь». У дяденьки лицо аж вытянулось и курточка раздулась — думал, лопнет.
Вспомнил, как через три года приехал в отпуск потусить с одногруппниками — встреча выпускников без галстуков и лишнего пафоса, но с шашлыками. Перед тусой забежали к одному на работу коллегиально решить одну срочную проблему: аккуратно загасить последнюю в той конторе ворованную «нетварь» с контрафактной оракловской базой. Показал коллеге команду help down (вычитал когда-то в книжке) и помог болезную в этот самый даун отправить. Вспомнил того пафосного дяденьку и подумал: «Ну и где она теперь, эта ваша „нетварь“?»
Поднимаю очередной убитый сервак. Есть у меня коллега, которого к компам подпускать нельзя: тут же падают. Но пришлось, так как сервер перестал реагировать удалённо, и лезли туда с консоли. По ходу дела спрашиваю, куда нажимал, зачем.
— Залезаю на сайт Майкрософта.
Сервак под Дебианом.
— Вижу надпись, что компьютер заражён. Ну, я и решил проверить. Скачал антивирус KIS и начал запускать.
Я настораживаюсь.
— В ответ он мне выдал что-то непонятное.
Дуб, а подумать слабо, что у тебя перед глазами не «мракософт»? И вообще, на хрена ты туда лез?
— Ну, я подумал, что просто нет места на диске…
Ага, 4×1,5 ТБ.
— …решил почистить и удалил лишнее.
Урод, как mc запускать, так ты врубился, что это Дебиан, а что ты /var снёс — так это в порядке вещей!
— Ну, он и завис…
В общем, после танцев с бубном данные были восстановлены, но напарничек под страхом смертной казни теперь будет до конца дней своих кабели таскать и отвёртки подавать.
Фотку с мангалом из компьютерного корпуса все видели? Это что! Недавно побывал в командировке в Баку. Смотрю — огромный мангал напоминает что-то знакомое. Подошёл ближе — точно, уложенная горизонтально серверная стойка.
Вечером пятницы собираюсь домой. День выдался неудачный. Работы навалилось много — пришлось бегать целый день. Уже предвкушаю провести этот зимний вечер с друзьями, раскатав пару партеек в бильярд.
Звонок. Взволнованный женский голос сообщает: требуют 500 рублей за просмотр видео эротического содержания. Радуюсь быстрым и лёгким деньгам. Называю стоимость работы. Спрашиваю адрес. Еду.
Приезжаю. Баннер на весь рабочий стол. Live CD, правка реестра, удаление виновника. Контрольный прогон AVZ. Чисто. Получаю расчёт и с хорошим настроением выдвигаюсь домой.
На полпути домой — звонок. Тот же женский голос сообщает, что баннер снова появился, и я что-то не доделал. Сплёвываю, разворачиваюсь и двигаю назад.
Действительно, баннер снова на месте. Повторяю ту же операцию. Вдобавок ставлю все критические обновления, обновляю Java и Flash Player. Денег не беру, решив, что сам что-то не доглядел.
В раздумьях двигая домой и думая, где же я упустил этого гада, снова получаю звонок. Уже раздражённый женский голос сообщает: «Или вы приходите и делаете всё, как надо, или возвращаете деньги!»
Возвращаюсь. Опять те же манипуляции. Контрольный прогон AVZ, UVS — чисто! Антивирус в порядке (Касперский 11).
— Что делали, когда я ушёл, что качали, что запускали? — Ничего.
Для верности просматриваю историю браузера. Ничего подозрительного. Решаю поставить Радмин для личного успокоения, так как в потусторонние силы не верю. Отчитываюсь, что всё работает. Пять раз перезагружаю компьютер. Чисто!
Спускаюсь, сажусь в авто, запускаю Радмин на ноуте и смотрю манипуляции клиента. Запускает браузер. Заходит в какую-то онлайн-игру. Справа всплывает окошко: дескать, ваш компьютер заражён, срочно нужно лечить! И ведь окошко точно такое же, как у Касперского оповещение. На минуту мышка замирает. Видимо, девушка читает, что сообщает лжеантивирус, вспоминая меня «добрыми» словами. Нажимает на «Лечить все вирусы». Браузер переходит на другой сайт, где большими буквами написано: сейчас, дескать, будет скачан самый лучший антивирус, а ваш нужно отключить, так как он тоже заражён.
Больше звонков не было. Ну и бог с ней — главное, моей вины там нет. У меня только один вопрос: почему сразу мне было не сказать об этом лжеантивирусе и его «находках»?
Началась эта история в разгар кризиса 2009 года. Работы в нашей микрофирмочке становилось все меньше с каждым днём. И тут, как в сказке, к нам постучалась некая биохимическая лаборатория с заказом на разработку софта для лабораторного комплекса, ссылаясь на наше название, в котором был намёк на кроссплатформенную разработку. Ну да, у нас было три программиста: один начинал с линуксов/C++, второй с Win/Java, а третий ещё на КПК со времён «палмов» софт писать умел. В общем, честно сказать им, что мы абсолютно не то, что им нужно, я сразу не рискнул, а через пару минут понял, что им, в сущности, уже всё равно, с кем пропадать.
Оказывается, с ходом прогресса их сугубо научный лабораторный комплекс стал коммерчески востребованным, им уже оплатили несколько образцов и готовы купить ещё десяток. Железо-то они растиражировали без особых проблем (там модульная сборка из готовых приборов), а вот автор софта к этому монстру умер от старости буквально пару лет назад. Приглашённые переписать его студенты дружно озвучивали сроки в пару лет, а софтверные фирмы просто отказывались, хотя все исходники были доступны. Единственный согласившийся специалист через квартал работы исчез в неизвестном направлении, а сроки передачи первого комплекса истекали через месяц.
Я попросил посмотреть на софт и понял коллег. Была одна старая машина под Win’98, на которой всё работало, и несколько машин, на которых эту разработку пытались запустить, но даже тотальное копирование жёсткого диска не помогало.
Через полдня изучения скопированного диска вырисовался диагноз. Обработка собрана из восьми опенсорсных и не очень пакетов разных лет и языков, написанных на Fortran IV, Java, Аda'95 и JDBC, работающих с обновляющимися через интернет научными базами данных самых разных форматов, для полного счастья склеенных редкой версией Perl, в которой, кстати и велась финальная часть обсчёта. Работа с БД велась через CPAN/ODBC.
Собираясь попрощаться, спросил, сколько же денег предлагают за такую работу. Переспросил. В общем, взялись.
Знакомый сисадмин собирал на корпоративных свалках компы, идентичные рабочему, а мы пытались понять, почему не работают нормально инсталлированные копии.
Не прошло и месяца, как ларчик открылся. Версии компиляторов и библиотек к пакетам были не просто разные, но и несовместимые, поэтому модули ставились только в строго определённой последовательности. При этом периодически приходилось менять переменные PATH для обеспечения правильной последовательности вызова разных версий компиляторов. Конечно, найти версию библиотек 1991 года выпуска было непросто, но мы справились.
А самый весёлый секрет состоял в том, что PATH иногда надо было корректировать прямо во время сборки, работая клавишей Pause. Кстати, make тоже надо было иметь трёх видов.
В общем, вначале мы запустили действующую копию на собранном из запчастей компе, идентичном работающему, и получили от восторженного заказчика предоплату. Потом, уже не беспокоясь о своём будущем, за пару дней до отгрузки успели собрать нормально работающую копию на нормальном компе, при этом всё было скомпоновано под нормальную версию Perl, скомпилированного PAR. Все пиратские модули перед запуском копировались в зашифрованные папки, а по окончании аккуратно оттуда вычищались.
Вскоре мы уже приготовили первую версию софта, не содержащую ничего пиратского, потому что в следующем году обещали купить около 15 систем. В фирме уже десять человек — может, даже на одном языке всё перепишем когда-нибудь…