GetQQCommandLine.pas
上传用户:ejatec
上传日期:2015-07-08
资源大小:1043k
文件大小:1k
源码类别:

ICQ弱点检测代码

开发平台:

Delphi

  1. unit GetQQCommandLine;
  2. interface
  3. uses
  4.   IdHashMessageDigest, SysUtils;
  5. function GetCommandLine(QQPath, QQNum, QQPw: string; QQState: integer): string;
  6. implementation
  7. function Base64(Src: string): string;
  8. const
  9.   DataSet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
  10. var
  11.   i, ModLen: integer;
  12.   Current: string;
  13.   Buf: array[1..3] of Byte;
  14.   NewBuf: array[1..4] of Byte;
  15. begin
  16.   result := '';
  17.   if Src = '' then
  18.     exit;
  19.   ModLen := Length(Src) mod 3;
  20.   while Length(Src) > 0 do
  21.   begin
  22.     FillChar(Buf, 3, #0);
  23.     Current := Copy(Src, 1, 3);
  24.     Src := Copy(Src, 4, Length(Src) - 3);
  25.     for i := 1 to 3 do
  26.       Buf[i] := Ord(Current[i]);
  27.     NewBuf[1] := Buf[1] shr 2;
  28.     NewBuf[2] := (Buf[1] shl 6 shr 2 or Buf[2] shr 4) and $3F;
  29.     NewBuf[3] := (Buf[2] shl 4 shr 2 or Buf[3] shr 6) and $3F;
  30.     NewBuf[4] := Buf[3] and $3F;
  31.     for i := 1 to 4 do
  32.       result := result + DataSet[NewBuf[i] + 1];
  33.   end;
  34.   if ModLen >= 1 then
  35.     result[Length(result)] := '=';
  36.   if ModLen = 1 then
  37.     result[Length(result) - 1] := '=';
  38. end;
  39. function GetCommandLine(QQPath, QQNum, QQPw: string; QQState: integer): string;
  40. type
  41.   TempChar = array[0..15] of char;
  42. var
  43.   md5: TIdHashMessageDigest5;
  44. begin
  45.   md5 := TIdHashMessageDigest5.Create;
  46.   result := QQPath + ' /START QQUIN:' + QQNum + ' PWDHASH:' + Base64(TempChar(md5.HashValue(QQPw))) + ' /STAT:' + IntToStr(QQState);
  47.   md5.Free;
  48. end;
  49. end.