首页  编辑  

请问如何读取BOIS和网卡信息

Tags: /超级猛料/Network.网络通讯/网卡、硬件/   Date Created:

]、。·ˉˇ¨〃々—~‖…’”〕〉》」』〗】∶!"'),.:;?]` 回复人:aiirii(2000-06-22 19:30:00 ) 得0分

读bois的程序:

procedure TForm1.Button1Click(Sender: TObject);

var data:Smallint;temp:byte;

   decode,passwd:array [0..9] of char;count,I:integer;

begin

 count:=0;

 asm

    mov al,29

    out $70,al

    mov ah,al

    mov al,28

    out $70,al

    in al,$71

    mov data,ax

 end;

while data>0 do

begin

 if (data<$80) then

   begin

    passwd[count]:=char(data);

    break;

   end

 else

   begin

      temp:=data and $3f;

      if (temp <= $20) then

             temp:=temp or $30;

      passwd[count]:=char(temp);

      count:=count+1;

      data:=data-temp;

      data:=data shr 2;

  end;

end;

i:=0;

while (count>=0) do

begin

  decode[i]:=passwd[count];

  count:=count-1;

  i:=i+1;

end;

showmessage('the CMOS passwd= '+decode);

end;

回复人:zxghl(2000-06-22 23:44:00 ) 得50分

aiirii的方法通过读取端口获得的结果是 CMOS 参数,这还是不足以作为加密依据。

因为口令等数据是会变化的。同硬盘序列号一样。

我会随后发一个控件给你,这个控件包含了在win98下读取BIOS、网卡信息的多个功能。

********************************************

另外关于读取BIOS信息,你还不妨试一下以下语句:

procedure TForm1.Button1Click(Sender: TObject);

var

 bn, bc, bd, bs: string;

begin

 try

   bn := String(Pchar(Ptr($FE061)));

   bc := String(Pchar(Ptr($FE091)));

   bd := String(Pchar(Ptr($FFFF5)));

   bs := String(Pchar(Ptr($FEC71)));

 except

   bn := 'Unsupported';

   bc := 'Unsupported';

   bd := 'Unsupported';

   bs := 'Unsupported';

 end;

 showmessage(

   '[BiosName]      ' + bn + #13 +

   '[BiosCopyright] ' + bc + #13 +

   '[BiosDate]      ' + bd + #13 +

   '[BiosSerial]    ' + bs);

end;

这段程序在我的三台机器上都通过。另外在一台DOS622机器上,用C语言编写程序读取

以上的四个地址都正确,还有直接用DEBUG也可以看到。