Доброго всем времени суток. Такая проблема: Есть флешка JetFlash к ней в комплекте идет пакет программ-утилит. В частности утилитка, создающая "закрытую" паролем область на флешке. Работает она по следующему алгоритму: 1.Вставляем флешку, Windows монтирует "открытую" область. 2.Запускаем программу, вводим пароль и жмем "ОК" 3.Программа оотключает "открытую" область и монтирует "закрытую"... Путем перехвата данных с USB-порта удалось установить что пароль передается с флешки в открытом виде... Никаких дополнительных файлов на диске не создается... BootSector и FAT ничего подозрительного не содержат... При введении пароля срабатывает точка останова на ReadFile(правда как-то не всегда...) Задача: Найти место на флешке(физическое) где ентот самый пароль лежит(ведь где-то он есть=)) Буду рад любой информации по теме... P.S. Где-то здесь на форуме был исходник проги "клонирующей" USB-flash... Я снял копию этой прогой и "прошелся" по ней поиском ASCI строк, пароль не нашел...
не факт что её можно будет найти в ASCII представлении, наверняка применяются какие-то алгоритмы. попробуй использовать плагин kanal в PEid.
Пароль не хранится на диске вообще - читай ATA/ATAPI Security features set. (подробнее на www.t13.org - Technical Committee T13 AT Attachment) В особенности для флешек там масса функций имеется. Пароль там устанавливается на аппаратном уровне, может устанавливаться максимально доступный без пароля адрес, может лочиться после трех попыток ввода неверного пароля или замерзать (тоже после трех попыток ввода неверного пароля). Куча реализаций имеется также для обычных дисков - например: http://www.fitzenreiter.de The ATASX BIOS ROM provides the "ATA Security Feature Set" which most modern SATA, ATA/IDE hard disks (HDDs) support but the most PC BIOS do not. While booting ATASX can + unlock already locked HDDs with the correct user password (automatic and manual entering) + also freezes the SATA, ATA security functions on unlocked ATA HDDs. ЗЫ Если описываемая программа использует ATA Security features, пароля в открытом виде ты не найдешь. Правда, там по стандарту может быть Master Password, который дает возможность сброса User Password.
1.WinHex был опробован - не прокатило... 2.Э... Я в английском не селен... Но из того что ты сказал суть улавливаю... Приминительно к моей ситуации пароль не блокирует диск... Кол-во попыток не огранничено, есть возможность смены пароля... Возможноли программно обойти(точнее заполучить пароль, т.к. бональная правка команды cmp в коде программы все решает, но это не наш метод) привиденный тобой тип защит?
Возможно, если это User Password и не установлен Master Password. То есть, можно его просто отключить (подробнее по ссылке - www.t13.org - например ATA/ATAPI 6 draft - в виде pdf там выложен, там перечень команд и все подробно прописано)
Ну допустим я нашел команду "DISABLE PASSWORD" её код FC0h Но как ее выполнить... Писать ассемблерную процедуру? тогда какое прерывание вызывать? (Я не очень разбираюсь в подобных тонкостях, и читать англоязычную документацию мне довольно трудно, был бы признателен если бы вы подсказали русско язычные источники по этому вопросу, хотя бы самые азы)...? P.S. Поймите меня правильно, я спрашиваю не потому что мне лень читать, а потому что сроки поджимают, а на чтение документауии на иностранном уйдет уйма времени...
Здесь кстати пример есть - http://www.wasm.ru/article.php?article=atazen01 с исходниками. Думаю, труда изменить под свои нужды не составит.
Сейчас вожусь с еще одной подобной прогой, называется U-Storage... Так там монтирование "закрытого" диска осуществляется функцией DeviceIOControl, причем похоже(не спел проверить) введенный пароль передается ей в качестве параметра и она сама разбирается монтировать диск или нет (ф-я всегда выполняется не зависимо от введенного пароля, а результаты разные)... Вопрос: Как бы её заставить монтировать диск ВСЕГДА? push esi .text:004026BF push edi .text:004026C0 push 8 .text:004026C2 lea eax, [ebp+arg_C] .text:004026C5 pop ecx .text:004026C6 mov esi, offset aUsbc_6 ; "USBC" .text:004026CB push 1 ; size_t .text:004026CD push eax ; void * .text:004026CE lea edi, [ebp+var_24] .text:004026D1 lea eax, [ebp+var_13] .text:004026D4 rep movsd .text:004026D6 push eax ; void * .text:004026D7 call memcpy .text:004026DC lea eax, [ebp+arg_8] .text:004026DF push 1 ; size_t .text:004026E1 push eax ; void * .text:004026E2 lea eax, [ebp+var_13+1] .text:004026E5 push eax ; void * .text:004026E6 call memcpy .text:004026EB push 8 ; size_t .text:004026ED lea eax, [ebp+var_13+2] .text:004026F0 push [ebp+arg_4] ; void * .text:004026F3 push eax ; void * .text:004026F4 call memcpy .text:004026F9 lea eax, [ebp+var_24] .text:004026FC push 1Fh ; size_t .text:004026FE push eax ; void * .text:004026FF lea eax, [ebp+OutBuffer] .text:00402705 push eax ; void * .text:00402706 call memcpy .text:0040270B add esp, 30h .text:0040270E lea eax, [ebp+BytesReturned] .text:00402711 push 0 ; lpOverlapped .text:00402713 push eax ; lpBytesReturned .text:00402714 lea eax, [ebp+OutBuffer] .text:0040271A push 0Dh ; nOutBufferSize .text:0040271C push eax ; lpOutBuffer .text:0040271D lea eax, [ebp+OutBuffer] .text:00402723 push 1Fh ; nInBufferSize .text:00402725 push eax ; lpInBuffer .text:00402726 push 220004h ; dwIoControlCode .text:0040272B push [ebp+hDevice] ; hDevice .text:0040272E!!!!!!!!!!!!! call dseviceIoControl .text:00402734 lea eax, [ebp+OutBuffer] .text:0040273A push offset aUsbc_0 ; "USBC"