Взломать нельзя пофиксить: 8 историй о том, как программисты хакнули систему
Они справлялись с утечками данных, спасали ТВ-трансляцию Олимпиады, сообщали компаниям об уязвимостях и играли на школьных компах.
 
 
Круто быть программистом, который умеет и сайт сверстать, и сервер запустить. Но ещё круче — знать, как программы работают изнутри, чтобы уметь их подправить под свои нужды. Именно об этом и рассказали айтишники на форуме Hacker News, а мы собрали для вас лучшие истории.
Нашёл паттерн в «Тетрисе» и стал чемпионом
nemo1618
Я очень много играл в Tetris Friends и в какой-то момент начал ловить дежавю. Иногда, когда я начинал новую игру и размещал 10–20 кубиков, мне казалось, что эту расстановку я уже видел в одной из прошлых игр. Я решил протестировать мою теорию с помощью брутфорса — начинал новую игру, записывал первые 10 кубиков, а затем перезапускал. Делал это снова и снова, пока наконец-то не увидел в игре комбинацию, идентичную прошлой.

По всей видимости, в Tetris Friends использовали ограниченный набор сидов (возможно, 256) чтобы генерировать комбинации кубиков. И получается, что если ты начинаешь игру с одним и тем же сидом, то тебе выпадают одни и те же кубики.
В Tetris Friends можно было соревноваться с другими игроками по всему миру. Там даже была доска лучших игроков, в которую можно попасть, если быстрее всех собрать 40 линий. Я решил использовать AutoHotkey, чтобы занять первое место.
Я перезапускал игру снова и снова, пока не получал хороший сид, а потом аккуратно играл и записывал мои действия в скрипт AutoHotkey. Ещё нужно учитывать, что Tetris Friends был флеш-игрой, а значит, нужно было делать небольшую задержку перед каждым движением.
Тестирование и отладка программы были просто ужасными: приходилось постоянно перезапускать уровень, пока я не находил тот же самый сид. Но через несколько часов упорного труда мой скрипт наконец-то заработал, и я занял первое место в мире. Ходил гордый целую неделю, пока разработчики не обновили доску.
Спас трансляцию Олимпиады
femto
Я жил в Сиднее и работал в телекоммуникационной компании, которая запускала прямые эфиры. Мне никак не удавалось пофиксить ужасный баг, не позволявший нормально передавать транслирующий сигнал с церемонии открытия Олимпийских игр в Лондоне. До финальной репетиции оставалось меньше суток, и компания была готова менять все радиостанции в студии.

Изображение: olympics.com
В конце концов я психанул и взломал прошивку радиостанции, обошёл процесс обработки сигнала и начал транслировать сырые данные из Лондона прямо в студию в Сиднее. Клиент был настолько доволен результатом, что через два года решил использовать наши радиостанции для трансляции зимних Олимпийских игр в Сочи.
Справился с утечкой данных на С
ww520
На моей первой работе мне поставили задачу исправить базу данных, которая медленно, но верно жрала память, что приводило к крашам системы после нескольких часов использования. Софт был написан на С, а среди инструментов ещё не было никаких Purify и Valgrind, чтобы быстро решить проблему. Это была неприятная задача, которую не хотели решать.

Изображение: Public Domain
Я заглянул в код и увидел, что аллокация памяти использовала функции malloc и free. Решил заменить их на собственные объявленные в хедере функции — my_malloc и my_free, которым передавались как параметры __FILE__ и __LINE__. Затем перекомпилировал всю программу с этими макросами, которые перенаправляли все вызовы malloc и free к моим функциям.
Мои функции записывали в отдельный файл все вызовы с адресами аллоцированной памяти, именами файлов и номерами строк. Когда набралось достаточно данных из тестовых запусков, я отсортировал их по адресам. У каждого такого адреса должна быть пара — malloc и free. Если пары нет — есть проблема. Так я нашёл все проблемные имена файлов и быстро всё исправил.
Рассказал компании об уязвимости
Dedime
Я подал резюме в одну медицинскую компанию, которая занималась выращиванием лечебной марихуаны в Канаде ещё до её легализации.
Мне было интересно, открывали ли они веб-страницу с моим портфолио. Решил проверить сам: взял логи моего веб-сервера, нашёл публичный IP-адрес той компании и проверил его на shodan.io. Обнаружил интересную вещь — один из портов был открыт по BACnet-протоколу. Тогда я не знал, что это, но быстро нашёл программу, которая умела общаться по нему.

Изображение: shodan.io
И вот подключаюсь я к IP-адресу по открытому порту и нахожу огромный список доступной информации — показатели уровня воды, температуры, света и многое другое. Мне не хотелось делать что-то противозаконное с этим, хотя я, вероятно, мог включать и выключать свет, менять температуру в комнатах, где находятся растения, и так далее.
В итоге я сообщил об этой уязвимости рекрутеру компании. Это было рискованное решение, но оно сработало — меня взяли на работу. И первым делом поручили пофиксить этот открытый порт.
Не уверен, что это «хакинг», но я был горд, что смог обнаружить такую уязвимость в системе.
Взломал школьный компьютер
tiffanyh
Начальная школа, эпоха операционных систем Windows 3.x.
Во всех классах были жёсткие правила: никаких игр на уроках. Преподаватели даже закрыли доступ ко всем встроенным в ОС играм. Но они только так думали.
Мы нашли хитрость: если открыть любую программу — например, Wordpad, можно были зайти в FILE → OPEN, чтобы найти и запустить «Сапёра». Очень просто и быстро. И никакие ограничения не могли нас остановить.

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

Изображение: btbuildem
Парсер оказался настолько неплохим, что я решил масштабировать систему на ещё несколько городов. И как только я находил подходящее для меня место, делал сайт с парсером доступным и делился им с моими друзьями. Позже мой сайт даже выиграл награду на cira.ca.
Я решил закрыть свой проект, когда узнал, что Craigslist начал судиться с PadMapper за то же самое, чем занимался я. Хотя это не было основной причиной. Главная — мой сайт не приносил прибыли.
Ещё один взламыватель школьных компьютеров
throwaway48384
Одно время в начальной школе использовали ноутбуки Chromebook, которые пришли на замену нетбукам. В ними у меня произошла интересная история.

Изображение: arstechnica.com
В школе заблокировали все популярные сайты с флеш-играми. Поэтому мы с друзьями решили скачать кучу таких игр и загрузили их на собственный сайт, используя самый простой веб-сервер. На нём была гора ужасного HTML- и CSS‑кода, но всё работало!
Школа не могла его заблокировать, потому что он находился в локальной сети. А мы, в свою очередь, пользовались этим и раздавали нашим друзьям его IP-адрес, чтобы подключиться к серверу.
Разработал удалённый ключ, чтобы открывать машину
mkreis
Много лет назад я работал в компании, которая занималась производством машин премиум-класса. Мы хотели презентовать новый продукт, чтобы убедить клиентов из главного офиса, что наш проект выгоден для инвестиций. Идея состояла в том, что машину можно открыть не только обычным ключом, но и с помощью, например, смарт-часов.
Главный разработчик нашей команды нашёл гениальное решение: поставить Arduino-контроллер удалённого открытия. В день презентации, когда пришли клиенты, демоверсия работала идеально, все были довольны, и мы получили финансирование.

Изображение: Wikimedia Commons
 Все
                                Все
                             Истории
                                        Истории Дизайн
                                    Дизайн Код
                                    Код Геймдев
                                    Геймдев Бизнес
                                    Бизнес Маркетинг
                                    Маркетинг Управление
                                    Управление Кино
                                    Кино Музыка
                                    Музыка Проектная фотография
                                    Проектная фотография Развитие
                                    Развитие Здоровье
                                    Здоровье Деньги
                                    Деньги Образование
                                    Образование EdTech
                                    EdTech Корп. обучение
                                    Корп. обучение Блог Skillbox
                                    Блог Skillbox Глоссарий
                                        Глоссарий Спецпроекты
                                        Спецпроекты Профориентация
                                        Профориентация 
                                     
                     
                     
                                     
                                     
                                     
                                    