Код
#статьи

Взломать нельзя пофиксить: 8 историй о том, как программисты хакнули систему

Они справлялись с утечками данных, спасали ТВ-трансляцию Олимпиады, сообщали компаниям об уязвимостях и играли на школьных компах.

Кадр: фильм «Железный человек 2» / Marvel Studios

Круто быть программистом, который умеет и сайт сверстать, и сервер запустить. Но ещё круче — знать, как программы работают изнутри, чтобы уметь их подправить под свои нужды. Именно об этом и рассказали айтишники на форуме Hacker News, а мы собрали для вас лучшие истории.

Нашёл паттерн в «Тетрисе» и стал чемпионом

nemo1618

Я очень много играл в Tetris Friends и в какой-то момент начал ловить дежавю. Иногда, когда я начинал новую игру и размещал 10–20 кубиков, мне казалось, что эту расстановку я уже видел в одной из прошлых игр. Я решил протестировать мою теорию с помощью брутфорса — начинал новую игру, записывал первые 10 кубиков, а затем перезапускал. Делал это снова и снова, пока наконец-то не увидел в игре комбинацию, идентичную прошлой.

Изображение: tetris.com

По всей видимости, в Tetris Friends использовали ограниченный набор сидов (возможно, 256) чтобы генерировать комбинации кубиков. И получается, что если ты начинаешь игру с одним и тем же сидом, то тебе выпадают одни и те же кубики.

В Tetris Friends можно было соревноваться с другими игроками по всему миру. Там даже была доска лучших игроков, в которую можно попасть, если быстрее всех собрать 40 линий. Я решил использовать AutoHotkey, чтобы занять первое место.

Я перезапускал игру снова и снова, пока не получал хороший сид, а потом аккуратно играл и записывал мои действия в скрипт AutoHotkey. Ещё нужно учитывать, что Tetris Friends был флеш-игрой, а значит, нужно было делать небольшую задержку перед каждым движением.

Тестирование и отладка программы были просто ужасными: приходилось постоянно перезапускать уровень, пока я не находил тот же самый сид. Но через несколько часов упорного труда мой скрипт наконец-то заработал, и я занял первое место в мире. Ходил гордый целую неделю, пока разработчики не обновили доску.

Спас трансляцию Олимпиады

femto

Я жил в Сиднее и работал в телекоммуникационной компании, которая запускала прямые эфиры. Мне никак не удавалось пофиксить ужасный баг, не позволявший нормально передавать транслирующий сигнал с церемонии открытия Олимпийских игр в Лондоне. До финальной репетиции оставалось меньше суток, и компания была готова менять все радиостанции в студии.

Церемония открытия Олимпийских игр в Лондоне
Изображение: olympics.com

В конце концов я психанул и взломал прошивку радиостанции, обошёл процесс обработки сигнала и начал транслировать сырые данные из Лондона прямо в студию в Сиднее. Клиент был настолько доволен результатом, что через два года решил использовать наши радиостанции для трансляции зимних Олимпийских игр в Сочи.

Справился с утечкой данных на С

ww520

На моей первой работе мне поставили задачу исправить базу данных, которая медленно, но верно жрала память, что приводило к крашам системы после нескольких часов использования. Софт был написан на С, а среди инструментов ещё не было никаких Purify и Valgrind, чтобы быстро решить проблему. Это была неприятная задача, которую не хотели решать.

C-программисты — очень крутые ребята вообще-то
Изображение: Public Domain

Я заглянул в код и увидел, что аллокация памяти использовала функции malloc и free. Решил заменить их на собственные объявленные в хедере функции — my_malloc и my_free, которым передавались как параметры __FILE__ и __LINE__. Затем перекомпилировал всю программу с этими макросами, которые перенаправляли все вызовы malloc и free к моим функциям.

Мои функции записывали в отдельный файл все вызовы с адресами аллоцированной памяти, именами файлов и номерами строк. Когда набралось достаточно данных из тестовых запусков, я отсортировал их по адресам. У каждого такого адреса должна быть пара — malloc и free. Если пары нет — есть проблема. Так я нашёл все проблемные имена файлов и быстро всё исправил.

Рассказал компании об уязвимости

Dedime

Я подал резюме в одну медицинскую компанию, которая занималась выращиванием лечебной марихуаны в Канаде ещё до её легализации.

Мне было интересно, открывали ли они веб-страницу с моим портфолио. Решил проверить сам: взял логи моего веб-сервера, нашёл публичный IP-адрес той компании и проверил его на shodan.io. Обнаружил интересную вещь — один из портов был открыт по BACnet-протоколу. Тогда я не знал, что это, но быстро нашёл программу, которая умела общаться по нему.

Интерфейс сервиса shodan.io
Изображение: shodan.io

И вот подключаюсь я к IP-адресу по открытому порту и нахожу огромный список доступной информации — показатели уровня воды, температуры, света и многое другое. Мне не хотелось делать что-то противозаконное с этим, хотя я, вероятно, мог включать и выключать свет, менять температуру в комнатах, где находятся растения, и так далее.

В итоге я сообщил об этой уязвимости рекрутеру компании. Это было рискованное решение, но оно сработало — меня взяли на работу. И первым делом поручили пофиксить этот открытый порт.

Не уверен, что это «хакинг», но я был горд, что смог обнаружить такую уязвимость в системе.

Взломал школьный компьютер

tiffanyh

Начальная школа, эпоха операционных систем Windows 3.x.

Во всех классах были жёсткие правила: никаких игр на уроках. Преподаватели даже закрыли доступ ко всем встроенным в ОС играм. Но они только так думали.

Мы нашли хитрость: если открыть любую программу — например, Wordpad, можно были зайти в FILE → OPEN, чтобы найти и запустить «Сапёра». Очень просто и быстро. И никакие ограничения не могли нас остановить.

Изображение: Wikimedia Commons

Ничто так не заставляет восьмилетнего ребёнка чувствовать себя крутым «хакером», как эффектный обход школьных запретов.

Написал парсер для поиска квартир

btbuildem

Я пытался найти квартиру в аренду на сайтах Craigslist и Kijiji. В то время, в 2010-е, у них был очень неудобный интерфейс — не было даже карты с расположением квартир. Если появлялась новая, нужно было действовать максимально быстро, чтобы забронировать её раньше других.

Я написал скрипт, который парсил данные с обоих сайтов и отображал квартиры прямо на карте. У меня получилось даже реализовать фильтр, чтобы быстро находить подходящее для меня жильё. Система автоматически связывалась с арендодателями, которые указывали свой email, узнавала, свободна ли ещё квартира, а затем присылала мне уведомление со ссылкой.

Интерфейс разработанной программы
Изображение: btbuildem

Парсер оказался настолько неплохим, что я решил масштабировать систему на ещё несколько городов. И как только я находил подходящее для меня место, делал сайт с парсером доступным и делился им с моими друзьями. Позже мой сайт даже выиграл награду на cira.ca.

Я решил закрыть свой проект, когда узнал, что Craigslist начал судиться с PadMapper за то же самое, чем занимался я. Хотя это не было основной причиной. Главная — мой сайт не приносил прибыли.

Ещё один взламыватель школьных компьютеров

throwaway48384

Одно время в начальной школе использовали ноутбуки Chromebook, которые пришли на замену нетбукам. В ними у меня произошла интересная история.

Внешний вид ноутбука Chromebook
Изображение: arstechnica.com

В школе заблокировали все популярные сайты с флеш-играми. Поэтому мы с друзьями решили скачать кучу таких игр и загрузили их на собственный сайт, используя самый простой веб-сервер. На нём была гора ужасного HTML- и CSS‑кода, но всё работало!

Школа не могла его заблокировать, потому что он находился в локальной сети. А мы, в свою очередь, пользовались этим и раздавали нашим друзьям его IP-адрес, чтобы подключиться к серверу.

Разработал удалённый ключ, чтобы открывать машину

mkreis

Много лет назад я работал в компании, которая занималась производством машин премиум-класса. Мы хотели презентовать новый продукт, чтобы убедить клиентов из главного офиса, что наш проект выгоден для инвестиций. Идея состояла в том, что машину можно открыть не только обычным ключом, но и с помощью, например, смарт-часов.

Главный разработчик нашей команды нашёл гениальное решение: поставить Arduino-контроллер удалённого открытия. В день презентации, когда пришли клиенты, демоверсия работала идеально, все были довольны, и мы получили финансирование.

Плата Arduino
Изображение: Wikimedia Commons
Проверьте свой английский. Бесплатно ➞
Нескучные задания: small talk, поиск выдуманных слов — и не только. Подробный фидбэк от преподавателя + персональный план по повышению уровня.
Пройти тест
Понравилась статья?
Да

Пользуясь нашим сайтом, вы соглашаетесь с тем, что мы используем cookies 🍪

Ссылка скопирована