Никак не могу победить сабж.
Мать: GigaByte GA6OMM7E
Версия БИОС: Award Modular BIOS v6.00PG
Что делаю:
Результат:
AWARD_SW идет на ура....
Думал, что модбин не сохраняет результат. Изменил BIOS Message - сохранилось... А пароль не сохраняется...
Пробовал модбины:
modbin6.1.00.37, modbin6.1.00.37 - оба при попытке сохранить вываливаются с ошибкой.
modbin6.2.00.00beta - сохраняет, но рез-ат см. выше...
Если мне нужно снести пароль, кем-то зачем-то установленный на вход в комп или в BIOS Setup, я просто перешиваю флэшку хот-свапом, причем любым флэшером, улавливаете ход мысли?..
- Ситчик веселенький есть?..
- Приезжайте, обхохочетесь!..
Нет
2IVP: нельзя ли подробнее?
Есть сильное подозрение, что "обнуление" пароля есть неотъемлемая фича прошивальщиков, введенная именно на случай утери/утраты супервизорского/юзерского паролей, хотя, конечно, я могу и ошибаться...
- Ситчик веселенький есть?..
- Приезжайте, обхохочетесь!..
тогда, вообще реально ли его убрать?
Внимательно подумал, а после проверил - я был не прав: awdflash, например, далеко не во всех версиях сносит пароли (8.16, 8.24), а amiflash'у для очистки пароля надо задать соответствующий ключ...
Посему вариантов три:
1) Вы как-то неправильно сохраняете изменение прошивки Модбином;
2) Вы шьете с ключами (в т.ч. дефолтными, и это может быть недокументировано) для очистки паролей;
3) "Инженерный" пароль нельзя выкинуть из прошивки обычными средствами...
Проверяйте...
- Ситчик веселенький есть?..
- Приезжайте, обхохочетесь!..
хмм... а есть несколько способов сохранить кроме File->Save?
Шью так: flash840.exe bak.bin /i
можно не выкидывать, просто изменить его на что-то свое или какой либо мусор... Посему возникает ряд вопросов: а где он располагается в прошивке? И в каком виде он лежит (открытый, что маловероятно или же хеш) если второе, то как шифруется? вот.
1) Тайна сие великая есть: Вы пишете, что 6.1.00.37/38 вываливаются с ошибкой, а 6.2.00.Beta не сохраняет, а у меня (правда, не с паролями) ситуации наблюдались прямо противоположные - первые два делали вид что сохраняют, не ругались, но в итоге не сохраняли ничего, а последний ругался, но все, что надо, сохранял...
2) Если мне память не изменяет, flash840 сделан на базе amiflash'а - откройте его в графическом режиме и посмотрите установки ключей (они сохраняются, поэтому ключ сноса/восстановления паролей мог остаться с каких-то затертых времен)...
3) Данным вопросом никогда не заморачивался; кто точно должен был на это натыкаться по ходу работы, так это StarGaz0r, спросите у него...
- Ситчик веселенький есть?..
- Приезжайте, обхохочетесь!..
Там нечто типа CRC, посчитанного кривым методом, пароля хранится. При каждом вводе пароля юзером CRC(или хэш) считается заново и сравнивается со значением в прошивке/флешке.
Кстати, это одна из причин существования нескольких "инженерных" паролей, т.к. одному CRC соотвествует несколько паролей
Аццкий ромбовод {:€
Я пока не волшебник - я только учусь! :-P
я тоже никогда инженерными паролями не заморачивался
но вот что удалось раскопать за последние полчаса
все написанное относится исключительно к award6
1. инженерного пароля у конкретного биоса может и не быть - нет кода проверки (определяется через директиву условного ассемблирования ifdef Support_AWARD_Default_Password) - изменять modbin'ном его бесполезно - как определить наличие - см. предположение в п.2
2. хеш мастер-пароля хранится в распакованном образе гланого модуля биос по смещению 1EC60 - всего 8 байт - если они первоначально раны 0 - большая вероятность что в коде биос не определен Support_AWARD_Default_Password и соответственно нет мастер-пароля
3. как найти хеш? смотрим процедуру сравнения введенного пароля с хешом мастер-пароля
Compare_Password Proc Near
push bx
push ds
;R56 push SEG DGROUP
push word ptr cs:[X_FCODE_VAL] ;R56
pop ds
mov bx, offset MASTER_PASS_HASH
;---------------------------------------------------------------------------
;output : ZF : input password = MASTER_PASS_HASH
;---------------------------------------------------------------------------
mov dl, 1 ;assume not match
xor si, si ;index password char 0
CompPass_Loop:
movzx cx, byte ptr KEYIN_BUF[bp+si] ;compare same with keyin?
cmp byte ptr ds:[si+bx], 0 ;Is last char?
jne @F ;Yes, skip
or si, si
jz CompPass_Over
or cl, cl
jnz CompPass_Over
jmp CompPass_Match
@@:
shl cx, 3 ;hash password
shl ch, 3 ; :
ror cl, 3 ; :
ror cx, 3 ; :
rol cl, 3 ; :
or cl, ch ;-------
cmp cl, ds:[si+bx];compare same with keyin?
jne CompPass_Over ;No, skip
inc si ;next char
cmp si, 8 ;over 8 char?
jb CompPass_Loop ;No, continue
CompPass_Match:
xor dl, dl ;Set match flag
CompPass_Over:
or dl, dl
pop ds
pop bx
ret
Compare_Password Endp
Отправить комментарий