Password v BIOSu

Jan Outrata outrataj na upcase.inf.upol.cz
Úterý Březen 27 07:27:19 CEST 2001


>   jeste na zakladce sme v DOSu pouzivali port[??] = 0x0; tim sme prejeli
> par bajtu BIOSu, on se rebootnul, napsal ze ma blbej checksum a byl vynulovanej
> celej ;) Kantori z nas meli radost ... ;)

Zdravim,

taky se mi to stalo - ze jsem zapomnel heslo do BIOSu. Ale proc ho kvuli tomu
celej mazat??

Nasledujici popis se tyka AWARD BIOSU (asi vsech, nenarazil jsem na takovy,
kde by to tak nebylo), AWARD by se za to mel prinejmensim stydet !
Na jinym kompu jsem heslo parkrat zmenil a sledoval pritom urcity bajtiky ...
a zjistil, ze je zakodovano do 2 bajtu naprosto jednoduchym algoritmem. Tento
programek v Pascalu (v te dobe - cirka 5 let zpet - jsem v nicem jinym nepsal)
prozradi jedno z MOZNYCH hesel (ano, k urcitemu heslu existuje spousta dalsich
EKVIVALENTNICH !):


program HESLO_BIOS;

 uses crt;
 
  function znak (loop : byte) : byte;
  
    var a : byte;
    
     begin
       asm
          mov al,loop
	  out 70h,al
	  in al,71h
	  mov a,al
     end;
     znak := a;
    end;
			
 procedure heslo;
 
  var a,b : byte;
      sum : word;
				 
  procedure decode;
				   
   var x1,x2,x3,x4,x5 : byte;
				      
   procedure dva (num : word);
   begin
    x2 := (num - 32) div 4; x1 := num  - x2 * 4;
   end;
   
   procedure tri (num : word);
   begin
    x3 := (num - 160) div 16; dva (num  - x3 * 16);
   end;
		
   procedure ctyri (num : word);
   begin
    x4 := (num - 672) div 64; tri (num  - x4 * 64);
   end;
			     
   procedure pet (num : word);
   begin
    x5 := (num - 2720) div 256; ctyri (num  - x5 * 256);
   end;
   
  begin
   if (sum >= 32) and (sum <= 126) then write (chr (sum)) else
    if (sum >= 160) and (sum <= 630) then dva (sum) else
     if (sum >= 672) and (sum <= 2646) then tri (sum) else
      if (sum >= 2720) and (sum <= 10710) then ctyri (sum) else
       if (sum >= 10912) and (sum <= 42966) then pet (sum) else
        write ('Heslo je ulozene neznamym zpusobem.');
   writeln ('Heslo je : ');
   writeln (chr (x5), chr (x4), chr (x3), chr (x2), chr (x1));
   writeln (x5,' ',x4,' ',x3,' ',x2,' ',x1);
  end;
		   
 begin
  a := znak ($1c); b := znak ($1d); sum := a + b * 256; decode;
 end;
		       
begin
 clrscr; heslo; readln; clrscr;
end.


Je to v Borland Pascalu pro DOS (pozor na CRT unit u CPU > 200MHz). Tedy,
pokud mate AWARD, muzete si to zapomenute heslo pripomenout :)

Spravce site (na gymplu) ze me mel tehdy taky velkou radost ... ;))

Johny.

--
 /             "Johny" - Jan Outrata, student of             \
| Computer Science Department, Palacky University, Czech Rep. |
 \            e-mail: outrataj na upcase.inf.upol.cz            /


Další informace o konferenci Linux