转载:unit Unit1;interfaceuses
sysutils,forms,Dialogs, StdCtrls, Controls, Buttons, Classes;
type
TForm1 = class(TForm)
FileNameEdit: TEdit;
Label1: TLabel;
Button1: TBitBtn;
passEdit: TEdit;
chk2000: TCheckBox;
SpeedButton1: TSpeedButton;
dlgOF: TOpenDialog;
procedure Button1Click(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.DFM}procedure TForm1.Button1Click(Sender: TObject);
const
xorString:array[0..12]of byte=
( $86, $FB, $EC, $37,
$5D, $44, $9C, $FA,
$C6, $5E, $28, $E6,$13 );
xorString2:array[0..20]of byte=
( $D3, $EC, $08, $9C,
$93, $28, $46, $8A,
$01, $7B, $A0, $DF,
$22, $13, $9A, $B1,
$61, $79, $C7, $7C,$5B);
var
passBuf:array[0..14]of byte;
pass:array[0..14]of char;
passBuf2:array[0..40]of byte;
pass2:array[0..20]of char;
B:Byte;
F:TFileStream;
I,j:integer;
begin
if not FileExists(FileNameEdit.Text) then
begin
Showmessage('唉,快被老兄你玩死了,OK,我不玩了!古得掰。');
Application.Terminate;
exit;
end;
F:=TFileStream.Create(FileNameEdit.Text,fmOpenRead);
if NOT chk2000.Checked then
try
F.Seek($42,soFromBeginning);
F.Read(passBuf,14);
for I:=0 to 13 do
begin
B := passBuf[i] xor xorString[i];
pass[i]:=char(B);
end;
pass[sizeof(pass) - 1] := #0;
passEdit.Text:=StrPas(Pass);
finally
F.Free;
end else
try
F.Seek($42,soFromBeginning);
F.Read(passBuf2,40);
I:=0;j:=0;
while I<40 do
begin
B := passBuf2[i] xor xorString2[j];
pass2[j]:=char(B);
inc(i,2);inc(j);
end;
pass2[sizeof(pass2) - 1] := #0;
passEdit.Text:=StrPas(Pass2);
finally
f.Free;
end;end;procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
if dlgOF.Execute then FileNameEdit.Text:=dlgOF.FileName;
end;end.
sysutils,forms,Dialogs, StdCtrls, Controls, Buttons, Classes;
type
TForm1 = class(TForm)
FileNameEdit: TEdit;
Label1: TLabel;
Button1: TBitBtn;
passEdit: TEdit;
chk2000: TCheckBox;
SpeedButton1: TSpeedButton;
dlgOF: TOpenDialog;
procedure Button1Click(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.DFM}procedure TForm1.Button1Click(Sender: TObject);
const
xorString:array[0..12]of byte=
( $86, $FB, $EC, $37,
$5D, $44, $9C, $FA,
$C6, $5E, $28, $E6,$13 );
xorString2:array[0..20]of byte=
( $D3, $EC, $08, $9C,
$93, $28, $46, $8A,
$01, $7B, $A0, $DF,
$22, $13, $9A, $B1,
$61, $79, $C7, $7C,$5B);
var
passBuf:array[0..14]of byte;
pass:array[0..14]of char;
passBuf2:array[0..40]of byte;
pass2:array[0..20]of char;
B:Byte;
F:TFileStream;
I,j:integer;
begin
if not FileExists(FileNameEdit.Text) then
begin
Showmessage('唉,快被老兄你玩死了,OK,我不玩了!古得掰。');
Application.Terminate;
exit;
end;
F:=TFileStream.Create(FileNameEdit.Text,fmOpenRead);
if NOT chk2000.Checked then
try
F.Seek($42,soFromBeginning);
F.Read(passBuf,14);
for I:=0 to 13 do
begin
B := passBuf[i] xor xorString[i];
pass[i]:=char(B);
end;
pass[sizeof(pass) - 1] := #0;
passEdit.Text:=StrPas(Pass);
finally
F.Free;
end else
try
F.Seek($42,soFromBeginning);
F.Read(passBuf2,40);
I:=0;j:=0;
while I<40 do
begin
B := passBuf2[i] xor xorString2[j];
pass2[j]:=char(B);
inc(i,2);inc(j);
end;
pass2[sizeof(pass2) - 1] := #0;
passEdit.Text:=StrPas(Pass2);
finally
f.Free;
end;end;procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
if dlgOF.Execute then FileNameEdit.Text:=dlgOF.FileName;
end;end.
解决方案 »
- 请教:DBGridEH最后一行如何才能在追加一行前生效?
- 请问用Delphi如何检测操作系统是否安装了.NETFramework(.NET框架)
- 我是个绝对的笨蛋,请比我聪明的朋友进来帮忙,得到结果我就散分,谢谢!(在线等待)
- SQL_DMO问题,如何修改还原后的数据库文件路径
- 谁有这本书?
- 请教一下关于一个数据库的效率问题?
- 覺得CSDN論壇改版後,少了好多人氣,不知道咋回事?
- 关于一个函数的用法,急啊。。。。。。
- delphi5.0的补丁怎么装?特别是ado的补丁。
- DELPHI和哪个数据库连接的更好,更稳定一些!!!!
- 难题:如何在delphi中编写这样的组件:可以加入KODAK 的imgedit,imgscan组件和TOOLBAR.
- 关于查询的问题,请赐教!
来信后,一日内给你发过去一个现成的软件包(已经实现)
会引用多用户冲突,换成:F:=TFileStream.Create(FileNameEdit.Text,
fmShareDone);//fmShareDone好像是这个,查一下,叫什么共享打开那个参数,就可以了。
读出来的密码不对.
你那里试过能用吗?To IUPRG(幕后工作者)
我的e-mail : [email protected]
( $D3, $EC, $08, $9C,
$93, $28, $46, $8A,
$01, $7B, $A0, $DF,
$22, $13, $9A, $B1,
$61, $79, $C7, $7C,$5B);
上面的XorString2好像不对吧??我试了几台机子,好像是不固定的~~~~~~~