Оговорюсь сразу, против кого мы работаем. IATA - международная ассоциация воздушного транспорта, они ежегодно выпускают книжку Dangerous Goods Regulations manual, формата А4, толщиной сантиметров пять. Две трети этой книжки составляет таблица, набранная мелким шрифтом. Этой таблицей приходится регулярно пользоваться всем, кто связан с воздушными грузоперевозками. В довесок к книжке присылают компакт диск с этой таблицей в электронном виде. Оболочка для доступа к таблице ужасно неудобна, сама таблица находится в базе данных и защищена
Во время работы постоянно требуется по классификационному номеру быстро проверить, что это за груз, и на каких условиях он допускается к перевозке. Официальная оболочка сначала долго грузится, потом секунд 15 показывает заставку, в которой сообщается, какая это замечательная программа, что в ней находится база данных ИАТА, и что при составлении сборника использовались консультации ИКАО. Если за день такое проделать хотя-бы раз двадцать, начинаешь думать над
Несколько лет подряд я просто снимал пароль и работал с таблицей напрямую, так как по включительно 2011 год в качестве БД использовался MS Access 2003, а там пароль снимается за пару секунд. Я даже не вникал, как это происходит, просто искал в Гугле очередную взламывалку Акцеса, ставил её на виртуальную XP, удовлетворенно наблюдал за тем, как трояны весело расползаются по системе, еще не зная, что эту операционку я установил всего на несколько минут, и вскоре всё будет уничтожено. Взламывалка снимала пароль, я копировал таблицу в Excel файл, (кстати, в екселе эта таблица занимает всего 1,5 мб), и рассылал его
Но с 2012 года коса нашла на камень - в качестве БД на компакт диске обнаружился Access 2007. Взламывалки дружно обломали об него зубы, в новой версии акцесса улучшена безопасность, и теперь пароль нельзя просто снять установкой двухбайтного флага. Подобрать пароль можно было только перебором, мой компьютер легко справился с паролями длиной от одного до пяти символов, над шестисимвольным пыхтел сутки, а на семисимвольный потребовал

Проблеск надежды принёс Elcomsoft Distributed Password Recovery, я расставил его агенты по всем компьютерам нашего офиса. Около 25 разнокалиберных машин, работая в одной
Инженерная мысль работала дальше. Пароль зашит в оболочке, она его передаёт базе данных. Влезать в оболочку черезчур трудоёмкая задача, может отловить пароль в момент передачи? В XP есть функция ODBC трейсинга, есть возможность записать все команды, которыми обменивается оболочка с базой в текстовый файл, там должен быть и пароль.

Идея не сработала, на сайте Микрософт написано, "If you are using Microsoft ActiveX Data Objects (ADO), you may not be able to get any ODBC tracing. This occurs because ADO is an OLEDB Consumer and it uses OLEDB instead of ODBC." Оболочка использовала именно ADO, файл трейсинга получался пустым.
Оставался крайнее средство, лезть в оболочку дизассемблером. Я не верил в успех этой затеи, но извлёк из пыльной директории Ida Pro 5.5. К моему удивлению,

Правда, симпатяжка? ;)
Пароль явно был зашифрован, по крайней мере base64, видите два характерных знака "=" в конце строки? Также удалось найти запутанные функции с многообещающими названиями Decrypt и DecryptDefault, но понять, как они должны работать, сходу не представлялось возможным. На всякий случай, я проверил и сам зашифрованный пароль, и его base64 расшифровку, но они не подошли. Ничего удивительного, расшифровка даже не попала в символьную часть ACSII-таблицы.

Но возникла идея, а нельзя ли подсмотреть расшифрованный пароль непосредственно в момент формирования строки подключения? Для этого нам понадобится дебагер для ДотНета. Гугль сообщил, что такой дебагер есть в составе MSVS, и я начал было качать установочный DVD с хорошо известного пиратского сайта, но сначала заскочил на SourceForge, узнать, нет ли более простенькой альтернативы - всё, что мне надо было от дебагера - это поставить брейкпоинт в нужном месте и посмотреть содержимое строки. И представьте себе, там был простенький дебагер под ДотНет, с открытыми исходниками, весом меньше мегабайта! Инструкции на сайте нет, но интерфейс програмы достаточно интуитивный, а в некоторых моментах помогли скриншоты, и вскоре оболочку удалось запустить с поднятым капотом. Первые попытки разочаровали - программа расшифровала пароль на лету, и отдавала в базу до того, как его удавалось перехватить. Расшифрованный пароль никуда не записывался.
Вот, уже на экране появилось окно оболочки с таблицей, значит, данные уже загружены, а расшифрованный пароль так и не появился. Впереди замаячила реальная перспектива разбираться в дизассемблированном псевдокоде, накачиваясь кофе, с карандашом и ватманом. Но

В заключение я бы хотел поблагодарить Petreny Zsolt за замечательный дебагер, Hex Rays за дизассемблер, и IATA за доставленное удовольствие.
No comments:
Post a Comment