delphi获取mdb密码

function GetPasswordFromAccess(AFileName: string): string;
var
  myms: TMemoryStream;
  b: array of Byte;
  a: array[0..33] of Byte;
  mysFileName, mysPwd: string;
  I: Integer;
  ver: Byte;
  mybyte1, mybyte2: byte;
const
  ar_key: array[0..31] of Integer=($39,$59,$EC,$37,$E2,$e6,$9C,$FA,$79,$FC,$28,$E6,$AC,$14,$8A,$60,$EB,$36,$7B,$36,$4A,
  $D0,$DF,$B1,$C8,$56,$13,$43,$70,$0D,$b1,$33);
  flagbyte1 = $8b;
  flagbyte2 = $C3;
begin
  if not FileExists(AFileName) then Exit;
  mysFileName := AFileName;
  myms := TMemoryStream.Create;
  try
    myms.LoadFromFile(mysFileName);
    myms.Position := 0;
    myms.Seek($14, 0);
    myms.Read(ver, SizeOf(Byte)); //here we get access version ,1 is 2000 and 0 is97
    SetLength(b, 2);
    myms.Seek($42, 0);
    myms.Read(a[0], sizeof(a));
    mybyte1 := a[32] xor flagbyte1;
    mybyte2 := a[33] xor flagbyte2;
    for I := 0 to 15 do
    begin
      b[0] := ar_key[i*2] xor a[i*2];
      b[1] := ar_key[i*2+1] xor a[i*2+1];
      if (i mod 2 = 0) and (ver = 1) then
      begin
        b[0] := b[0] xor mybyte1;
        b[1] := b[1] xor mybyte2;
      end;
      mysPwd := mysPwd + Char(b[0]+b[1]);
    end;
    Result := mysPwd;
  finally
    SetLength(b, 0);
    myms.Free;
  end;
end;

时间: 09-21

delphi获取mdb密码的相关文章

mysql5.7.16安装 初始密码获取及密码重置

在window7下面安装mysql5.7.16,出现一个问题,在初始化时,默认生成了一个密码,导致连接不了数据库.而在5.7以前,默认密码是空的,可以不用密码即可进入数据库.5.7之后的就遇到坑了,下面就来获取初始密码. 1.新建my.ini ,放到C:\windows下面,文件内容如下: port=3306 basedir=D:\dev\mysql\mysql-5.7.9-winx64 datadir=D:\dev\mysql\mysql-5.7.9-winx64\data max_conne

获取mdb下要素类FeatureClass,独立要素类,没有dataset获取要素类

转载自:http://blog.sina.com.cn/s/blog_6faf711d0100za4x.html 获取mdb数据库要素类的名称 整体思路如下:1.通过IWorkspace的Datasets属性获取工作空间中的所有Dataset对象(IEnumDataset)2.枚举EnumDataset,获取Dataset对象3.如果该Dataset是FeatureDataset4.QI到IFeatureClassContainer接口for(int i=0;i < pFClContainer.

Delphi获取当前系统时间(使用API函数GetSystemTime)

在开发应用程序时往往需要获取当前系统时间.尽管Y2K似乎已经平安过去,但在我们新开发的应用程序中还是要谨慎处理“时间”问题. 在<融会贯通--Delphi4.0实战技巧>(以下简称“该书”)第89页专门介绍了两种获取当前系统时间的方法,但这两种方法都存在不足或错误,以下就此进行讨论. 该书第一种方法是利用Time()函数获得当前系统时间,返回结果是TDateTime结构类型的变量.例如: procedure TForm1.Button2Click(Sender: TObject); var D

Delphi获取与设置系统时间格式,即GetLocaleInfo和SetLocaleInfo

在Delphi中,特别是在写管理系统软件时,经常要用到 FormatDateTime 以将 TDateTime 格式的日期时间转换成字符串形式的值显示或保存起来,或者用 StrToDateTime将字符串形式的日期时间转换成 TDateTime 然后再做其他操作. 在进行时间或日期的转换时,会使用系统当前设定的时间日期格式.而如果时间日期格式与字符串中的表示方式不相符,会使转换过程失败.例如当前短日期格式设定为'yyyy/MM/dd',而要转为 '2006-10-20'这样的字符串为日期,就会报

delphi 获取可执行文件的当前路径

在Delphi SysUtils 单元中有 ExtractFileDir 与 ExtractFilePath两个类似的函数, 两个函数有以下的区别: ExtractFilePath 传回值的最後一个字元是反斜杠“/”. ShowMessage(ExtractFileDir(Application.Exename)); // 返回值为 c:/temp ShowMessage(ExtractFilePath(Application.Exename)); // 返回值为 c:/temp/ 相同点: 如

delphi获取文件路径

ExpandFileName(Application.ExeName);//返回文件的全路径(含驱动器.路径) D:\delphi程序\20170427\Win32\Debug\MyTestProject.exeExtractFileExt(Application.ExeName); //从文件名中抽取扩展名 .exeExtractFileName(Application.ExeName); //从文件名中抽取不含路径的文件名 MyTestProject.exeExtractFilePath(A

Delphi 获取北京时间(通过百度和timedate网站)

方法一: [delphi] view plaincopyprint? uses ComObj, DateUtils; function GetInternetTime: string; var XmlHttp: OleVariant; datetxt: string; DateLst: TStringList; mon: string; timeGMT, GetNetTime: TDateTime; s: string; begin XmlHttp := CreateOleObject('Mic

Delphi 获取网站验证码的图片

[delphi] view plain copy print? uses ActiveX,ComObj; procedure TfrmMain.FormCreate(Sender: TObject); begin OleInitialize(nil); end; procedure TfrmMain.DomImg2Image(wb:TWebBrowser); var i:Integer; rang:IHTMLControlRange; s:string; begin try //pic是图片的节

delphi 获取颜色值的RGB

前言:http://www.cnblogs.com/studypanp/p/5002953.html 获取的颜色值 前面获取到一个像素点的颜色值后(十六进制),比如说(黄色):FFD1C04C(共八位),我自认为前面两位代表透明度,其它顺序为R-G-B, 没想到顺序是G-B-R 下面为从十六进制解析RGB的函数:(这里是把FF当成了R) function TForm2.HexColorToRGB(s: string): string; // 传进来的是颜色值 var i: Integer; R,