Подтвердить что ты не робот

Обратные инженерные истории войны

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

Вот один из моих:

Несколько лет назад мне пришлось переписать драйвер устройства, для которого у меня не было исходного кода. Драйвер устройства работал на старом микрокомпьютере CP/M и проехал специальную фотонаборную машину через последовательный порт. Мне почти не было документации для фотонаборной машины.

Я, наконец, взломал монитор последовательного порта на ПК DOS, который имитировал ответы на машину для фотопечати. Я подключил ПК DOS к машине CP/M и начал регистрировать данные, поступающие из драйвера устройства, когда я передаю данные через машину CP/M. Это позволило мне выяснить связь и кодировку, используемые драйвером устройства, и заново создать эквивалентную для DOS-машины.

4b9b3361

Ответ 1

Прочитайте историю FCopy для C-64 здесь:

В 80-х годах Commodore C-64 имел интеллектуальный флоппи-дисковод, 1541, т.е. внешний блок, у которого был свой собственный процессор и все.

C-64 отправит команды на диск, который, в свою очередь, выполнит их самостоятельно, прочитав файлы и т.д., затем отправьте данные на C-64 по всему проприетарному последовательному кабелю.

В руководстве для 1541, помимо команд для чтения и записи файлов, читалось и записывалось во внутреннее пространство памяти. Еще более увлекательным было то, что можно было загрузить 6502-код в память накопителя и выполнить его там.

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

Мой друг написал дизассемблер в Бейсике. и поэтому я зачитал все содержимое своего ПЗУ, которое было 16 Кбайт 6502 кода процессора, и попытался понять, что он делает. ОС на диске была довольно удивительной и продвинутой IMO - у нее было своеобразное управление задачами, причем команды отправляются из модуля связи в обработчик задачи ввода-вывода диска.

Я достаточно научился понимать, как использовать команды ввода/вывода на диске для чтения/записи секторов диска. На самом деле, прочитав книгу Apple [DOS 3.3], которая подробно объяснила всю работу его формата диска и альгос, была большая помощь в понимании всего этого.

(Позже я узнал, что мог бы также найти информацию о резерв-eng'd на более 4032/4016 дисках для "бизнес-моделей Commodore", которые работали почти так же, как и у 1541, но это было недоступно для меня как довольно несвязанного программиста по хобби в то время.)

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

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

Теперь я смог читать и писать секторы, а также передавать данные быстрее, чем когда-либо прежде.

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

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

Будучи программистом какое-то время, все время обрабатывая потерю данных (музыкальные ленты и гибкие диски были не очень реалистичны), я подумал: Backup!

Итак, я написал программу резервного копирования, которая могла бы дублировать дискету в никогда не замеченной скорости: первая версия скопировала весь диск на 170 КБ всего за 8 минут (да, минут), вторая версия сделала это даже в 4,5 минуты. В то время как приложения перед моим заняли более 25 минут. (Разум вас, Apple] [, у которого была операционная система диска, работающая непосредственно на Apple, с быстрым параллельным доступом к данным, сделала это через минуту или около того).

И так родился FCopy для C-64.

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

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

Я пытался продать свое приложение и продал его на самом деле 70 раз. Когда он стал рекламироваться в журналах, утверждая, что он скопировал бы диск менее чем за 5 минут, клиенты позвонили бы и не поверили бы ему, "зная лучше", что это невозможно сделать, но попробовав.

Не намного позже, другие начали реконструировать мое приложение и оптимизировать его, сделав комм еще быстрее, что привело к копированию приложений, которые сделали это даже через 1,5 минуты. Быстрее было невозможно, потому что из-за ограниченного объема памяти, доступного на 1541 и C-64, вам пришлось несколько раз менять диски на одном диске, чтобы скопировать все 170 КБ его содержимого.

В конце концов, FCopy и его оптимизированные преемники были, вероятно, самым популярным программным обеспечением на C-64 в 80-х годах. И хотя она не окупалась для меня финансово, она по-прежнему гордилась мной, и я много узнал об обратном проектировании, тщетности защиты от копирования и о том, как выглядит слава. (На самом деле, Джим Баттерфилд, редактор журнала C-64 в Канаде, рассказал своим читателям мою историю, и вскоре у меня была проверка на около 1000 CA $для меня - собранная журналом от многих благодарных пользователей, отправляющих 5 $-четы, это было большой кучей денег тогда для меня.)

Ответ 2

У меня есть другая история:

Спустя несколько лет после моей истории успеха "FCopy" меня подошел тот, кто спросил меня, могу ли я взломать программное обеспечение для игровых автоматов.

Это было в Германии, где почти у каждого паба было одно или два из них: вы бросили бы деньги на сумму около четверти США, затем она запустила бы три колеса, и если вам повезет с какой-то моделью, вы 'd, тогда у вас есть выбор, чтобы "удвоить или ничего" выиграть в следующей игре или получить текущую победу. Цель игры состояла в том, чтобы попытаться удвоить свою победу несколько раз, пока вы не попадете в режим "серии", где любая последующая победа, независимо от того, насколько незначительна, принесет вам большой платеж (примерно в 10 раз ваши расходы за игра).

Трудность заключалась в том, чтобы знать, когда удваивать, а когда нет. Конечно, для "аутсайдера" это было совершенно случайным. Но оказалось, что эти немецкие машины использовали простые псевдо-рандомизированные таблицы в своих ПЗУ. Теперь, если вы смотрели, как машина играет в течение нескольких раундов, вы могли бы выяснить, где этот "случайный указатель таблицы", и предсказать его следующий ход. Таким образом, игрок будет знать, когда нужно удвоить и когда пройти, и в конечном итоге приведет его к "большой серии побед".

Теперь это было уже обычным делом, когда этот человек подошел ко мне. Была подземная сцена, которая имела доступ к ПЗУ на этих машинах, находила таблицы и создавала программное обеспечение для компьютеров, таких как C-64, для использования для прогнозирования следующего движения машины.

Затем появился новый тип машины, хотя он использовал другой алгоритм: вместо использования таблиц предварительного calc'd он делал что-то еще, и ни один из резидентных взломщиков не мог понять это. Таким образом, меня подошли, будучи известным как гений с момента моей славы FCopy.

Итак, я получил ПЗУ. 16 КБ, как обычно. Нет информации о том, что она сделала и как она работает. Я был один. Даже код не выглядел знакомым (я знал только 6502 и 8080). После некоторых копаний и запросов я обнаружил, что это 6809 (который, как мне показалось, является самым красивым 8-битным процессором, который имеет аналогию с процессором 680x0, который был намного более линейным, чем беспорядок для команд семейства x86).

К тому времени у меня уже был компьютер 68000 (я работал в компании "Гепард Компьютер", которая построила и продала такую ​​машину, со своей собственной ОС разработчика и все) и была в программировании Modula-2. Поэтому я написал дизассемблер для 6809, который помог мне в обратном проектировании, найдя подпрограммы, прыжки и т.д. Медленный я получил представление об управлении потоком программы игрового автомата. В конце концов я нашел код, похожий на математический алгоритм, и мне стало ясно, что это может быть случайный код генерации.

Поскольку у меня никогда не было формального образования в области компьютерных наук, до тех пор я понятия не имел, как типичный случайный случай с использованием mul, add и mod работал. Но я помню, что видел что-то, упомянутое в книге Modula-2, а затем понял, что это такое.

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

Оказалось, что нужно было выяснить текущую позицию случайного. Я никогда не был хорош в абстрактных вещах, таких как алгебра. Я знал кого-то, кто изучал математику и тоже был программистом. Когда я позвонил ему, он быстро понял, как решить эту проблему, и много размышлял о том, насколько просто было бы определить значение семян случайных. Я ничего не понял. Ну, я понял одно: для выполнения этого потребуется много времени, а для C-64 или любого другого 8-битного компьютера потребуется несколько часов, если не дни для него.

Таким образом, я решил предложить ему 1000 DM (для этого было много денег тогда), если бы он мог написать мне процедуру ассемблера в 68000. Не занимал много времени, и у меня был код, который я мог проверить на моем компьютере 68000. Это обычно занимает от 5 до 8 минут, что было приемлемо. Так что я был почти там.

По-прежнему требовалось переносить переносной компьютер 68000 в паб, где стоит игровой автомат. Мой компьютер Gepard явно не был переносным типом. К счастью, кто-то другой, которого я знал в Германии, выпустил целые 68000 компьютеров на небольшой монтажной плате. Для ввода-вывода он имел только последовательные связи (RS-232) и параллельный порт (Centronics был стандартом тех дней). Я мог бы подключить к нему 9-битные батарейки, чтобы он работал. Затем я купил карманный компьютер Sharp с резиновой клавиатурой и 32-строчным дисплеем с одной строкой. Работал на батареях, который был моим терминалом. У него был разъем RS-232, который я подключил к плате 68000. У Sharp также была какая-то энергонезависимая память, которая позволила мне хранить программное обеспечение для случайного взлома 68000 на Sharp, передав его по требованию компьютеру 68000, который затем рассчитал начальное значение. Наконец, у меня был маленький принтер Centronics, который печатался на узкой термобумаге (размер которой был то, что кассовые аппараты используют для печати квитанций). Следовательно, как только 68000 будет иметь результаты, он отправит ряд результатов для предстоящих игр на игровом автомате на Sharp, которые напечатали их на бумаге.

Итак, чтобы выпустить один из этих игровых автоматов, вы должны работать с двумя людьми: вы начинаете играть, записываете свои результаты, у вас есть минимальное количество игр, необходимых для расчета семян, один из вас будет идти автомобиль, припаркованный снаружи, включите Sharp, введите результаты, у него будет 68000 компьютерных трещотки в течение 8 минут, и вышел распечатанный список предстоящих игр. Тогда все, что вам было нужно, это крошечный лист бумаги, отнесите его своему приятелю, который сохранил машину, выровнял прошлые результаты с распечаткой, и не более чем через 2 минуты вы были "удивлены", чтобы выиграть все 100 секунд серии. Затем вы играли в эти 100 игр, практически опустошая машину (и если машина была пуста до того, как были сыграны 100 игр, вы имели право дождаться ее повторного наполнения, возможно, даже вернуться на следующий день, тогда как машина была остановился, пока вы не вернетесь).

Это был не Лас-Вегас, поэтому вы могли получить только 400 DM из машины, но это были быстрые и уверенные деньги, и это было захватывающе. Некоторые владельцы пабов подозревали нас в мошенничестве, но не имели ничего против нас из-за законов в то время, и даже когда некоторые называли полицию, полиция была в пользу нас).

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

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

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

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

Это был конец. Тем не менее, прилагая усилия к написанию дизассемблера только для этой единственной трещины, нахождение ключевых подпрограмм в 16 КБ 8-битного кода ЦП, вычисление неизвестных алгоритмов, вложение довольно больших денег, чтобы заплатить кому-то за разработку кода, который я не понял, найдя элементы для портативного высокоскоростного компьютера с участием "слепого" процессора 68000 с Sharp в качестве терминала и принтера для удобного вывода, а затем фактического опорожнения самих машин, была одной из самых захватывающих вещей, которые я когда-либо делал с моими навыками программирования.

Ответ 3

Вернувшись в начале 90-х, я забыл свой пароль Compuserve. У меня была зашифрованная версия в CIS.INI, поэтому я написал небольшую программу, чтобы сделать атаку и анализ открытого текста в попытке реконструировать алгоритм шифрования. 24 часа спустя я понял, как это работает и каким был мой пароль.

Вскоре после этого я сделал очистку и опубликовал программу как бесплатную, чтобы клиенты Compuserve могли восстановить потерянные пароли. Персонал поддержки компании часто направляет этих людей в мою программу.

В конце концов он нашел свой путь на нескольких досках объявлений (помните их?) и на интернет-форумах и был включен в немецкую книгу о Compuserve. Он все еще плавает где-то там. Фактически, Google принимает меня прямо к нему.

Ответ 4

Хорошо, это не было обратной инженерией (довольно), но простой аппаратный взлом, порожденный чистым разочарованием. В начале 90-х я был менеджером по ИТ в регионе сотового телефона Southwestern Bell. Мой ИТ-отдел был значительно недофинансирован, поэтому мы тратили деньги на умных людей, а не на оборудование.

У нас была глобальная сеть между крупными городами, используемая исключительно для обслуживания клиентов, с критическими IP-соединениями. Наши корпоративные руководители настаивали на том, что мы устанавливаем систему сетевого мониторинга, чтобы уведомить нас о том, когда линии опустились (нет денег на избыточность, но тратят деньги на обработку сбоев.).

Рекомендуемое решение STRONGLY выполнялось на рабочей станции SPARC и начиналось с $30 тыс. плюс стоимость станции SPARC (около $20 тыс. тогда), что было существенным объемом моего бюджета. Я не мог этого видеть - это была пустая трата $$. Поэтому я решил немного взломать в порядке.

Я взял старый компьютер, который был запланирован на уничтожение, и поместил копию ProComm (помните ProComm?) и попросил ping каждый из необходимых узлов вдоль маршрута (это была одна из более поздних версий ProComm, в которой был установлен сценарий FTP, а также последовательные линии, KERMIT и т.д.). Небольшая логика в кодировании, вызванная сообщением пейджера, когда не удалось достичь node. Я уже использовал его для создания пейджера для наших техников, поэтому я снова использовал код пейджера. script выполнялся непрерывно, отправляя пинг раз в минуту по каждой из критических ссылок и разветвляясь в код пейджера, когда пинг не возвращался.

Мы продублировали эту систему в каждом критическом месте за стоимость менее 500 долларов США и получили очень быстрое уведомление, когда ссылка опустилась. Следующий вопрос - одним из наших первых способов устранения неполадок было задействовать наши маршрутизаторы и/или терминальные серверы. У меня есть несколько контроллеров X10 с набором номера и несколько переключателей питания X10 вкл/выкл. Вы должны были знать правильный номер телефона, который нужно использовать, и правильные тональные сигналы для нажатия, но мы напечатали чит-карту для каждого техника, и они сохранили ее со своим пейджером. Мгновенный быстрый ответ! Один из моих техников запрограммировал телефоны, которые мы все должны были на reset конкретном оборудовании на каждом сайте, в качестве скоростного набора. One-tech решает проблему!

Теперь вы сказали "вы сказали".

Я сижу за обедом с нашим корпоративным сетевым менеджером в Далласе, который настаивает на покупке продукта сетевого управления Sun. Я получаю страницу, на которой находится одна из наших ссылок, а затем вторая страница. Поскольку сообщения пейджера поступают с двух разных серверов, я точно знаю, какой маршрутизатор задействован (это была настройка, я все равно знал, так как технология на встрече со мной была поставлена ​​в очередь на "вниз по маршрутизатору" во время еды, поэтому мы могли бы показать себя.) Я показываю сообщения пейджера менеджеру и спрашиваю его, что он сделает, чтобы решить эту проблему. Он подозрительно смотрит на меня, так как он еще не был выгружен его системой Solaris NMS, которая должна отслеживать критические ссылки. "Ну, я думаю, вам лучше позвонить технологии и получить их до reset маршрутизатора и посмотреть, исправляет ли это это". Я обратился к технике, которая ланч с нами и попросила его справиться с этим. Он вытащил свой мобильный телефон (на этот раз выше таблицы) и нажал на скоростной набор, который он запрограммировал на reset рассматриваемый маршрутизатор. Телефон набрал переключатель X10, сказал ему отключить питание маршрутизатора, приостановил его на пять секунд, сказал, чтобы он включил маршрутизатор и отключился. Наш ProComm script отправил нам страницы, в которых сообщалось, что ссылка была восстановлена ​​в течение трех минут после этой процедуры.:-)

Менеджер корпоративной сети был очень впечатлен. Он спросил меня, какая цена для моей новой системы. Когда я сказал ему менее 1 тыс. Долларов, он был апоплексическим. Он только что заказал BIG-комплект решения для управления сетью Sun Solaris только для задач, которые я проиллюстрировал. Я думаю, что он потратил что-то вроде $150 тыс. Я рассказал ему, как это было сделано, и предложил ему ProComm script за цену обеда. TANSTAAFL. Он сказал мне, что он купит мне обед, чтобы закрыть рот.

Очистка моих старых ящиков дисков и т.д., я нашел копию кода - "Pingasaurus Rex" - это имя, которое я ему дал. Это было взлом в старые добрые времена.

Ответ 5

Однажды, играя в Daggerfall II, я не мог позволить Даэдрику Дай-Катане, поэтому я изменил шестнадцатеричную версию savegame.

Будучи серьезным, мне удалось удалить проверку ключа на моей установке AutoCAD с помощью SoftICE много лет назад. Это было до того, как Интернет был большой. Он работает инженером, поэтому у него есть законная копия. Он только что забыл ключ на своей работе, и ему нужно было кое-что сделать, и я подумал, что это будет забавный вызов. После этого я был очень горд.

Ответ 6

Самый болезненный для меня был для этого продукта, где мы хотели включить изображение в электронную таблицу Excel (несколько лет назад перед открытыми стандартами). Поэтому мне нужно было понять и "понять", если такая вещь существует и для внутреннего документа для документов. В конце концов я сделал сравнение Hex между файлами с изображением и без него, чтобы выяснить, как его поместить, а также работать над какой-то маленькой математикой...

Ответ 7

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

У нас появилось новое требование поддержать сетевую систему Banyan VINES, которая теперь давно забыта, но довольно крута в момент ее выхода. Я не мог понять, как получить MAC-адрес Ethernet от адаптера Banyan, поскольку для этого не было документально подтвержденного API.

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

Итак, я просто запустил дизассемблер и разобрал его полезность. Оказалось, что он делал один простой вызов на сервер, который был недокументированным функциональным кодом в Banyan API. Я довольно подробно изложил детали вызова, он в основном просил сервер для этого адреса рабочих станций через RPC, а MAC был частью сетевого адреса Banyan.

Затем я просто отправил по электронной почте инженеров в Баньяне и рассказал им, что мне нужно делать. "Эй, похоже, что номер функции RPC 528 (или что-то еще) возвращает то, что мне нужно. Безопасно ли это позвонить?"

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

Спустя годы я использовал в основном тот же метод, что и реверсирование схемы недокументированной компрессии в документально оформленном формате. Я нашел малоизвестный инструмент поддержки, предоставляемый (ныне несуществующей) компанией, которая распаковывала эти файлы, и обратная инженерия. Это оказался очень простой вариант Lempel-Ziv, применяемый в блочной структуре их формата файла. Результаты этой работы записываются для потомков в исходный код Wireshark, просто найдите мое имя.

Ответ 8

Почти 10 лет назад я взял сборник UFO/XCOM Collector Edition в лотке для продажи в местном книжном магазине, в основном из-за ностальгии. Когда я вернулся домой, я был очень рад, что его портировали на Windows (версии DOS не запускались под win2k)... и затем разочаровались в том, что у него была искаженная графика.

Я собирался пожать мне плечи (торг и все), но потом мой друг сказал: "Разве ты не знаешь... программное обеспечение раньше?", что привело к ночи пить много колы и обратная инженерия во время разговора с моим другом. В конце концов, я написал загрузчик с исправлением ошибок, который исправил проблему высоты тона и ширины, и, наконец, смог сыграть в две первые игры XCOM без загрузки старого оборудования (DOSBOX еще не было, и моя машина не была достаточно мощной для полномасштабная виртуализация).

Погрузчик приобрел некоторую популярность и даже был распространен с переизданием игр STEAM на некоторое время - я думаю, что они теперь переключились на dosbox.

Ответ 9

Я написал драйвер для Atari ST, который поддерживал планшеты Wacom. Некоторые из данных Wacom можно найти на их веб-сайтах, но мне все равно приходилось много разбираться.

Затем, как только я написал библиотеку для доступа к таблицам wacom (и тестовому приложению, чтобы показать результаты), мне стало ясно, что API для ОС (система окон GEM) для фактического размещения курсора мыши где-то. В итоге мне пришлось перехватывать некоторые прерывания во что-то, что называется VDI (например, GDI в окнах), и быть очень осторожным, чтобы не повредить компьютер внутри. Я получил некоторую помощь (в виде предложений) от разработчиков ускоренной версии VDI (NVDI), и все было написано в PurePascal. У меня еще есть люди, которые спрашивают меня, как перемещать курсор мыши в GEM и т.д.

Ответ 10

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

Явный идиотизм.

Ответ 11

Недавно я написал приложение, которое загружает весь контент с сервера Domino Webmail с помощью Curl. Это связано с тем, что субподрядчик, работающий на сервере, запрашивает несколько сотен долларов для каждого запроса архива.

Они изменили свою версию веб-почты примерно через неделю после того, как я выпустил приложение для отдела, но сумел заставить его работать снова, используя БОЛЬШУЮ сделку регулярных выражений и XML

Ответ 12

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

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

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

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

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