⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pwfind.pas

📁 Award Bios 密码大揭秘!!! 计算机系统安全与维护编程典型实例解析
💻 PAS
字号:
 Program calc;
  FUNCTION CalcPossiblePassword( PasswordValue: WORD ): STRING;
   VAR
	    I			   :  BYTE;
	    C			   :  CHAR;
	    S			   :  STRING[8];

   BEGIN
     I := 0;
     WHILE PasswordValue <> 0 DO
     BEGIN
       Inc( I );
       IF $263 > PasswordValue THEN
         BEGIN
	   IF $80 > PasswordValue THEN
	      S[I] := CHAR( PasswordValue )
              ELSE IF $B0 > PasswordValue THEN
	           S[I] := CHAR( PasswordValue AND $77 )
	                ELSE IF $11D > PasswordValue THEN
	                     S[I] := CHAR( $30 OR ( PasswordValue AND $0F ) )
	                          ELSE IF $114 > PasswordValue THEN
	                               BEGIN
	                                    S[I] := CHAR( $64 OR ( PasswordValue AND $0F ) );
	                                    IF '0' > S[I] THEN
	                                       S[I] := CHAR( BYTE( S[I] ) + 8 );
	                               END
                                        ELSE IF $1C2 > PasswordValue THEN
	                                   S[I] := CHAR( $70 OR ( PasswordValue AND $03 ) )
	                                        ELSE IF $1E4 > PasswordValue THEN
	                                             S[I] := CHAR( $30 OR ( PasswordValue AND $03 ) )
	                                             ELSE
                                                       BEGIN
                                                       	   S[I] := CHAR( $70 OR ( PasswordValue AND $0F ) );
                                                           IF 'z' < S[I] THEN
                                                                S[I] := CHAR( BYTE( S[I] ) - 8 );
                                                       END;
           END ELSE
	     S[I] := CHAR( $30 OR ( PasswordValue AND $3 ) );
        PasswordValue := ( PasswordValue - BYTE( S[I] ) ) SHR 2;
     END;

     S[0] := CHAR( I );
     PasswordValue := I SHR 1;
     WHILE PasswordValue < I DO
     BEGIN {this is to do because award starts calculating with the last letter}

       C := S[BYTE( S[0] ) - I + 1];
       S[BYTE( S[0] ) - I + 1] := S[I];
       S[I] := C;
       Dec( I );
     END;
     CalcPossiblePassword := S;
   END;

function readcmos(off:byte):byte;
var value:byte;
begin
  asm
      xor ax, ax
      mov al, off
      out 70h, al
      in  al, 71h
      mov value, al
    end;
  readcmos:=value;
end;
var superpw,userpw:word;
begin
     pchar(@superpw)[0]:=char(readcmos($1c));
     pchar(@superpw)[1]:=char(readcmos($1d));
     writeln('One of the supervisor password is:');
     writeln(CalcPossiblePassword(superpw));
     pchar(@userpw)[0]:=char(readcmos($64));
     pchar(@userpw)[1]:=char(readcmos($65));
     writeln('One of the user password is :');
     writeln(CalcPossiblePassword(userpw));
end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -