Unconfigured Ad Widget

Collapse

Anúncio

Collapse
No announcement yet.

Quebrando senha BIOS em Pascal

Collapse
X
 
  • Filter
  • Tempo
  • Show
Clear All
new posts

  • Font Size
    #1

    Pascal Quebrando senha BIOS em Pascal

    {************************************************}
    { }
    { CMOS Backup Utility }
    { Backups CMOS data and restores it }
    { (c) 2001 by oraculozeus@hotmail.com }
    { }
    {************************************************}

    Program CMOSBackup;

    { This program was not fully tested. YOU ARE USING IT AT YOUR OWN RISK. }

    Const
    { CMOS data file ID string }
    CMOSBackupID : Array[1..5] Of Char = 'CBID' + #1;

    Var
    F : File; { File variable }
    i : Byte; { Counter }
    j : Word; { One temporary variable }
    Checksum : Word; { File checksum }
    CMOSData : Array[0..$7F] Of Byte; { Full CMOS data }
    LastKey : Char; { Last pressed key }

    Function UpperStr(Str : String) : String;
    Var
    Run : Byte;
    Temp : String;
    Begin
    Temp := '';
    For Run := 1 To Length(Str) Do Temp := Temp + UpCase(Str[Run]);
    UpperStr := Temp;
    End; { UpperStr }

    Procedure CalculateChecksum;
    Begin
    Checksum := 0;
    For i := 0 To $7F Do Inc(Checksum, CMOSData[i]);
    End; { CalculateChecksum }

    Procedure Help;
    Begin
    Writeln('This program can be used to backup and recover CMOS data');
    Writeln;
    Writeln('Usage: CMOS /switch');
    Writeln('Switch can be:');
    Writeln(' /b - backup CMOS');
    Writeln(' /r - recover CMOS');
    Writeln(' /? - this help');
    Halt;
    End; { Help }

    Procedure CMOSIn(Which : Byte);
    Var
    Temp : Byte;
    Begin
    Asm
    mov dx,70h
    mov al,Which
    out dx,al
    inc dx
    in al,dx
    mov Temp,al
    End;
    CMOSData[Which] := Temp;
    End; { CMOSIn }

    Procedure CMOSOut(Which : Byte);
    Var
    Temp : Byte;
    Begin
    Temp := CMOSData[Which];
    Asm
    mov dx,70h
    mov al,Which
    out dx,al
    inc dx
    mov al,Temp
    out dx,al
    End;
    End; { CMOSOut }

    Function ReadKey : Char; assembler;
    Asm
    mov ah,00h
    int 16h
    End; { ReadKey }

    Function AskUser(Message : String) : Boolean;
    Begin
    Write(Message);

    Repeat
    LastKey := ReadKey;
    Until (Upcase(LastKey) = 'Y') Or (Upcase(LastKey) = 'N');

    If Upcase(LastKey) = 'Y' Then AskUser := True Else AskUser := False;
    End; { AskUser }

    Procedure BackupCMOS;
    Begin
    { Assign file }
    Assign(F, 'CMOS!!!!.DAT');
    Rewrite(F, 1);

    { Read CMOS data and calculate checksum }
    For i := 0 To $7F Do CMOSIn(i);
    CalculateChecksum;

    { Write the data }
    BlockWrite(F, CMOSBackupID, SizeOf(CMOSBackupID));
    BlockWrite(F, Checksum, SizeOf(Checksum));
    BlockWrite(F, CMOSData, SizeOf(CMOSData));

    { Finish access to file }
    Close(F);
    End; { BackupCMOS }

    Procedure RecoverCMOS;
    Var
    Temp : Array[1..5] Of Char;
    Begin
    { Assign file }
    Assign(F, 'CMOS!!!!.DAT');
    {$I-}
    Reset(F, 1);
    {$I+}

    { File not exist? }
    If IOResult <> 0 Then
    Begin
    Writeln('File CMOS!!!!.DAT not found');
    Halt;
    End;

    { Check file size }
    If FileSize(F) <> 135 Then
    Begin
    Writeln('File CMOS!!!!.DAT has invalid size - it may not contain CMOS data');
    Halt;
    End;

    { Check file ID string }
    BlockRead(F, Temp, SizeOf(Temp));
    If Temp <> CMOSBackupID Then
    Begin
    If Not AskUser('Invalid file ID - this file may not contain CMOS data. Continue (Y/N)?') Then
    Begin
    Writeln;
    Halt;
    End;
    Writeln;
    End;

    { Load CMOS data and calculate checksum }
    BlockRead(F, j, SizeOf(j));
    BlockRead(F, CMOSData, SizeOf(CMOSData));
    CalculateChecksum;
    If Checksum <> j Then
    Begin
    If Not AskUser('Invalid checksum - file may be corrupted. Continue (Y/N)?') Then
    Begin
    Writeln;
    Halt;
    End;
    Writeln;
    End;

    { Finish access to file }
    Close(F);

    { Restore CMOS data }
    Writeln('Restoring CMOS data...');
    For i := 0 To $7F Do CMOSOut(i);
    End; { RecoverCMOS }

    Begin
    Writeln('CMOS Backup Program Version 1.0 Copyright (c) 2001 by MediaWorks Entertainment');

    If (ParamStr(1) = '') Or (ParamStr(1) = '/?') Then Help
    Else If UpperStr(ParamStr(1)) = '/B' Then BackupCMOS
    Else If UpperStr(ParamStr(1)) = '/R' Then RecoverCMOS
    Else Help;
    End. { CMOS.PAS }
    Last edited by .IndependentResearch.; 18-12-2009, 19:26.
    Quem é vc que se esconde atraz de um nome qualquer. Nao aparece p/ mim m estende a mao trazendo a chuva tocando o som do trovão...
    Similar Threads

  • Font Size
    #2
    Tópico movido: para DELPHI / PASCAL.
    Estava em Linux

    Abraços
    sigpic
    Milorde - Conhecimento não é crime
    Fui útil ? Clique em OBRIGADO


    Milorde & Marissa


    [/CENTER]

    Comment


    • Font Size
      #3
      /\ flood
      |
      Twitter: @samukt << Siga me ;D

      Comment


      • Font Size
        #4
        Poxa legal pow

        Valeu pelo tutorial.

        Comment


        • Font Size
          #5
          Éé

          vLWWW

          Comment

          X
          Working...
          X