Назад | Перейти на главную страницу

Самый ужасный хак

Когда я сижу и смотрю один из моих последних грязных грязных хаков, я начал задаваться вопросом, какие грязные хаки вы создали, которые настолько плохи, что они классные.

У всех нас было несколько из них в прошлом - и они, вероятно, все еще где-то работают в продакшене, продолжая как-то работать.

Это напоминает мне о взломе, который нам пришлось применить при перемещении центров обработки данных. Наши IVR должны были продолжать работать, так как центр обработки данных, из которого мы переезжали, был основным DC, а новый Primary не был полностью готов принимать трафик. Так что же нам делать. Что ж, мы отвечаем на звонки в DC1, а затем отправляем sip-поток через Интернет в DC2 на расстоянии 1900 миль ... это просто было так неправильно.

Итак, вопрос в том, какой у вас один (или несколько) ужасно плохих хаков?

Наверное, не то, что вы ищете, но немного раньше у меня была пара машин серии Commodore 264. В частности, Plus / 4 и C16. Нуждаясь в ассемблере, но не имея возможности найти его для этих машин, я приступил к его созданию. Как скомпилировать ассемблер, если у вас его еще нет? Сначала напишите простой на БЕЙСИКе, а затем переведите его построчно в ассемблер, когда он заработает, и скомпилируйте сам с собой.

Компания, в которой я работал несколько лет назад, ограничила доступ к сети на всех наших компьютерах. Вы можете получить доступ к 1 терминальному серверу и любой странице в 1 домене (интрасети). Вот и все. Это было задолго до того, как я начал свою работу в ИТ, и ИТ-отдел считал меня ниже среднего.

Это фактически лишило нас возможности выполнять свою работу, и после нескольких месяцев жалоб руководству (я люблю бюрократию) они наконец дали нам ОДИН компьютер с неограниченным доступом, которым все 12 из нас должны были делиться в «редком случае», когда мы нужно было выйти вне домена (что было почти все время).

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

Я был героем всех в течение 6 месяцев, у них наконец-то появился доступ в Интернет, пока босс не смотрел.

Конечно, поскольку это сбой сервера, все будут смотреть на этот пост, УЖАСЫ, что я смог сделать такую ​​вещь. Что ж, если вам станет легче, когда они узнали, что меня сразу уволили, но я думаю, что именно тогда я решил поступить в университет и получить лучшее образование, чтобы иметь возможность гарантировать, что другие люди этого не сделают. должны пройти через это.

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

В период с 2003 по 2005 год я продал десятки серверов HP ProLiant ML370 G3. Режим отказа этого оборудования был весьма интересным, поскольку датчики вентилятора на системной плате в конечном итоге выходили из строя через 5 лет. Система не обнаруживает присутствие вентилятора или состояние вращения / скорости при POST, поэтому потребуется пылесос (пылесос), чтобы заставить системные вентиляторы вращаться с достаточно высокой скоростью во время загрузки, чтобы сервер оставался в состоянии после POST. . После этого охлаждение производилось с помощью внешнего вентилятора ... Доступность сменных плат от HP была плохой, да и среди реселлеров запчастей не хватало.

Установка должна была продлиться 5 дней, пока я пытался организовать перелет к клиентскому объекту за 2000 миль с новым оборудованием во время декабрьского курортного сезона. Но мы сделали это!

Я помню, как собрал хак, чтобы заставить принтер работать через реализацию AS400 \ JDE через коммутируемое соединение VPN. Моя память немного нечеткая, но все выглядело примерно так:

Для печати из JDEdwards принтер Windows должен быть сопоставлен с объектом принтера AS400, который затем должен быть сопоставлен с объектом принтера JDEdwards. Обычно это работает достаточно хорошо, когда у вас есть центральный сервер печати и выделенные двухточечные WAN-каналы для удаленных сайтов, которым необходимо печатать из JDE.

В этом случае один из наших каналов WAN вышел из строя, что, конечно, означало, что задания на печать с центрального сервера печати не могли быть отправлены на удаленные сетевые принтеры на пораженном удаленном складе. Удаленный склад должен был распечатать упаковочные листы из JDE, чтобы доставить грузы до двери, поэтому я создал коммутируемое VPN-соединение на компьютере склада с локально подключенным принтером, затем я предоставил доступ к локально подключенному принтеру, затем я настроил VPN-клиент для использования конкретный IP-адрес вместо использования назначенного IP-адреса VPN, затем я сопоставил локально подключенный принтер с сервером печати через статический IP-адрес VPN, затем я сопоставил этот принтер с объектом принтера AS400, затем я сопоставил объект принтера AS400 с объект принтера JDE и вуаля, упаковочные листы печатаются на удаленном складе.

Я бы сказал, что одним из самых нелепых моментов, в которых я был замешан, был физический взлом.

У сервера клиента вышел из строя блок питания, на самом деле второй, поскольку были резервные блоки питания, а первого уже не было.

Это было старое шасси от одного из брендов «создай свой собственный сервер», и замена блока питания стоила несколько сотен долларов.

Они не хотели ни платить за блок питания, ни рассматривать замену машины.

И, конечно же, они получили от кого-то «понимание», что вы можете купить блоки питания примерно за 50 долларов в магазине, ничего страшного.

Итак ... мы закончили со стандартным блоком питания с достаточно длинными проводами, чтобы быть снаружи корпуса, а внутрь - для подключения к плате и устройствам. Затем скотчем и привязал блок питания к спине.

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

Проприетарный движок базы данных с плоскими файлами, написанный на Perl для множества приложений CGI, которые у меня были в то время. Святое дерьмо ......

Парсеры, написанные на Awk, сделали это много раз, друг даже написал (простой) рабочий компилятор C на Awk.

У меня есть еще один друг, который написал клиент Freenet (включая сетевые компоненты) на Bash.

Это своего рода аппаратный взлом и, к счастью, не постоянное решение.

В один жаркий летний день мой пейджер срывается с быстрым повышением температуры в нашем центре обработки данных, «только не снова!». Что-то не так с нашими кулерами на крыше, и пришло время призвать людей, которые действительно знают об этом. К сожалению, сейчас середина лета, когда люди либо в отпуске, либо где-то не готовят барбекю, поэтому на то, чтобы заставить кого-нибудь прийти посмотреть, потребуется пара часов. А учитывая текущую тенденцию к повышению температуры в ЦОД, этого времени у меня нет. При этом я особо не финансировал то, что проведу остаток теплого летнего вечера, приводя в действие несколько тысяч серверов и извиняясь перед нашими производителями за то, что их вычислительные операции были остановлены.

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

Давным-давно я работал в "телекоммуникационной" компании, которая использовала предоплаченные карты GSM для соединения звонков, поступающих через VOIP на местные номера в Колумбии. (простая бизнес-модель, продажа США-> Колумбия за 10 центов в минуту, в то время как нам нужно было заплатить только 1 цент за тот же звонок Колумбия GSM-> Колумбия GSM).

Call-поток:
США инициируют вызов -> VOIP (бесплатно) -> Колумбийский шлюз GSW, заполненный колумбийскими предоплаченными картами -> Фактический колумбийский номер, набранный из США.

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

Вот что мы сделали:
- поместил карты в шлюз VOIP-GSM, автоматически набрал IVR с помощью Asterisk и прошел через меню, отправив соответствующий код DTMF, чтобы активировать эту конкретную акцию 1 с / мин. Какое-то время это неплохо срабатывало.

Наибольшую озабоченность у нас вызвала, и вот тут взлом, мы каждый раз активировали карты в одних и тех же сотах GSM (антенна), и местный оператор связи, не желающий поддерживать наше дело и делиться с нами частью своих доходов, заметил, что резко увеличил количество активаций карт в этих конкретных ячейках и начал запрещать карты в своей сети, прежде чем мы действительно получили возможность их использовать.

Наше решение состояло в том, чтобы создать средство активации телекоммуникационных SIM-карт, установить шлюз VOIP-GSM с 32 SIM-картами в автомобиле вместе с беспроводным модемом, по иронии судьбы используя сеть EVDO того же телекоммуникационного гиганта, который был в соглашении о распределении прибыли. с нами, и используя тот же сервер Asterisk, вызовите IVR для каждой карты, активирующей его.
Очевидным преимуществом было то, что движущийся автомобиль помогал нам распределять нагрузку между ячейками башни, гарантируя, что мы не будем напрягать сеть нашего партнера по телекоммуникациям, что было нашей основной заботой :-)

На этом этапе великолепных женщин пришлось отпустить, независимо от нашего желания. Ой, как я плакала, но все же Любила свою работу :)! Преимущества работы в стране третьего мира! (Я шучу Колумбию ....)

Когда я программировал на Oracle PL / SQL, у нас была программа «слушатель» для генерации вывода отчета на сервере на основе запроса клиента.

Это был франкенштейнский набор различных сценариев sql, 1000-строчного сценария оболочки C, объектов конвейера unix и задания cron. Задание cron будет запускать сценарий c каждые 5 секунд или около того, который запускает сценарий SQL, чтобы опросить таблицу на предмет записей, которые передали бы значение в stdout. Затем сценарий запускает программу на основе сведений и параметров, вставленных в таблицу.

Все это было безумно сложным и изначально было написано еще в начале 80-х.

В конце концов у нас появился заказчик, который захотел запустить наше приложение на NT вместо unix, поэтому нам удалось заставить его работать в коммерческом варианте cygwin (вместо того, чтобы создавать весь беспорядок).

На прошлой неделе или, возможно, это было в прошлом месяце ... Я написал пару приложений (с любезными названиями f5 и f11), которые используют библиотеки X для имитации нажатия клавиш ... для обновления и полноэкранного режима окна браузера на компьютере в нашем офисе, который была запущена страница доски состояния.

Я также написал приложение на Python, которое непрерывно покачивает указатель мыши в точке 1441x901 (просто вне поля зрения), но только для работы в рабочее время, поэтому в остальное время она может запускать заставку.

Я считаю, что это довольно грязные приемы. Не самое худшее, но довольно мрачное: P

Я написал сценарий bash, который отображал нумерованное меню и просил пользователя ввести номер меню. Он использовал $ (read -n 1), чтобы извлекать отдельные нажатия клавиш и обрабатывать их индивидуально, включая обратное пространство, которое я извлек из $ (stty -a).

Были особые случаи для обработки многозначных ответов, например если бы было 9 вариантов, он интерпретировал бы 1-9 как каждый вариант меню, но если бы было 11 вариантов, после получения 1 он ждал бы, чтобы увидеть, станет ли оно 10 или 11, или [возврат] для 1.

Я сделал все это без каких-либо проклятий (просто много устных проклятий).

2 дня спустя я узнал о $ (выбрать)

Моим худшим было, вероятно, взлом сети. Это было примерно в 2000 или 2001 году. Я работал у провайдера, который предоставлял фиксированный беспроводной доступ в Интернет. Используемое нами беспроводное оборудование было довольно примитивным с точки зрения возможностей маршрутизации. Клиентское радио было в основном просто мостом от беспроводной сети к Ethernet, поэтому клиентам требовался собственный маршрутизатор. Заказчикам, которым нужен был общедоступный блок, требовался маршрутизатор с двумя Ethernet-портами, который не включал NAT (что в то время было в большинстве «широкополосных» маршрутизаторов). Обычно это означало что-то вроде Cisco 2514 или 2611/2621, которые в то время не были особенно дешевыми.

Так или иначе, роутер одного клиента умер. Они не могли пойти купить новую (или даже бывшую в употреблении) Cisco, а у нас ее не было под рукой. У нас были старые маршрутизаторы Ascend Pipeline 130 T1. Итак, в итоге заказчик ...

wireless --/-- radio --- eth                eth ----- LAN
                       router1            router2
                          T1 --- x-over --- T1

К счастью, скорость беспроводного соединения составляла менее 1 Мбит / с, поэтому канал «T1» между маршрутизаторами не был узким местом.

Я работал системным администратором в офисе, полном рабочих станций Windows NT 4.0 SP6. Буквально все пытались узнать пароль администратора, когда я набирал его на своих компьютерах. Наконец, мне это надоело, и я начал использовать дискету, содержащую эксплойт, который запускал экземпляр cmd.exe, работающий с правами администратора, без необходимости вводить пароль администратора.

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