代码: 中.国.站长站
//这里定义的是13个字节作为Access2000异或的源码。与之相对应的加密标志是0x13,ccrun特此注明 ~com
//当然你可以用这一组:BE EC 65 9C FE 28 2B 8A 6C 7B CD DF 4F 与这一组相对应的加密标志是0x0c Www..com
//呵呵.程序有些乱,希望大家能看的懂 Www^^com
char PassSource2k[13]={0xa1,0xec,0x7a,0x9c,0xe1,0x28,0x34,0x8a,0x73,0x7b,0xd2,0xdf,0x50}; ^com
//Access97的异或源码 Www__com
char PassSource97[13]={0x86,0xfb,0xec,0x37,0x5d,0x44,0x9c,0xfa,0xc6,0x5e,0x28,0xe6,0x13}; 中国站长.站
以下为引用的内容:
void __fastcall TMainForm::GetMdbPass(){char PassStrTemp[26],Ver,EncrypFlag,t1;int FileHandle;String MdbPassword,MdbVersion,MdbFileName; Www@@com
FileHandle=FileOpen(MdbFileName,fmOpenRead);if(FileHandle<0){ShowMessage("文件打开错误!");return;}
//取得数据库版本FileSeek(FileHandle,0x14,0);FileRead(FileHandle,&Ver,1); 站.长.站
//取得加密标志FileSeek(FileHandle,0x62,0);FileRead(FileHandle,&EncrypFlag,1); Www~~com
//读取加密后的密码到缓冲区FileSeek(FileHandle,0x42,0);FileRead(FileHandle,&PassStrTemp,26);FileClose(FileHandle); @com
if(Ver<1){MdbVersion="Access 97";if(int(PassStrTemp[0]^PassSource97[0])==0)MdbPassword="密码为空!";else{MdbPassword="";for(int j=0;j<13;j )MdbPassword=MdbPassword char(PassStrTemp[j]^PassSource97[j]);}}else{MdbVersion="Access 2000 or 2002";MdbPassword="";for(int j=0;j<13;j ){if(j%2==0)
t1=char(0x13^EncrypFlag^PassStrTemp[j*2]^PassSource2k[j]); Www__com
//每隔一个字节就与加密标志相异或。这里的加密标志为0x13 Www^^com
else
t1=char(PassStrTemp[j*2]^PassSource2k[j]);MdbPassword=MdbPassword t1;}}if(MdbPassword[1]<0x20||MdbPassword[1]>0x7e)MdbPassword="密码为空!";EditMdbFileName->Text=MdbFileName;EditMdbPassword->Text=MdbPassword;EditMdbVersion->Text=MdbVersion;}
_com
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!



