📄 pwfind.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 + -