Большой архив статей, книг, документации по программированию, вебдизайну, компьютерной графике, сетям, операционным системам и многому другому
 
<Добавить в Избранное>    <Сделать стартовой>    <Реклама на сайте>    <Контакты>
  Главная Документация Программы Обои   Экспорт RSS E-Books
 
Поиск по сайту

 

   Программирование -> Assembler -> Как узнать паpоль после загpузки?


Как узнать па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
 
 
Интересное в сети
10 новых программ
CodeLobster PHP Edition 3.7.2
WinToFlash 0.7.0008
Free Video to Flash Converter 4.7.24
Total Commander v7.55
aTunes 2.0.1
Process Explorer v12.04
Backup42 v3.0
Predator 2.0.1
FastStone Image Viewer 4.1
Process Lasso 3.70.4
FastStone Image Viewer 4.0
Xion Audio Player 1.0.125
Notepad GNU v.2.2.8.7.7
K-Lite Codec Pack 5.3.0 Full

Наши сервисы
Рассылка новостей. Подпишитесь на рассылку сейчас и вы всегда будете в курсе последних событий в мире информационных технологий.
Новостные информеры. Поставьте наши информеры к себе и у вас на сайте появится дополнительный постоянно обновляемый раздел.
Добавление статей. Если вы являетесь автором статьи или обзора на тему ИТ присылайте материал нам, мы с удовольствием опубликуем его у себя на сайте.
Реклама на сайте. Размещая рекламу у нас, вы получите новых посетителей, которые могут стать вашими клиентами.
 
Это интересно
 

Copyright © CompDoc.Ru
При цитировании и перепечатке ссылка на www.compdoc.ru обязательна. Карта сайта.
 
Rambler's Top100