#include
"stdafx.h"
#include
<WinSock2.h>
#include
<fstream>
#include
"iostream"
using
namespace std;
#pragma
comment(lib,"ws2_32.lib")
int
main()
{ WORD wVersionRequested; WSADATA wsaData;
int
err;
wVersionRequested = MAKEWORD( 1, 1 ); err = WSAStartup( wVersionRequested, &wsaData );
if
( err != 0 )
{
return
-1;
}
if
( LOBYTE( wsaData.wVersion ) != 1 ||
HIBYTE( wsaData.wVersion ) != 1 ) { WSACleanup( );
return
-1;
} SOCKET sockClient = socket(AF_INET,SOCK_STREAM,0); SOCKADDR_IN addrSrv; addrSrv.sin_addr.S_un.S_addr=inet_addr(
"127.0.0.1"
);
addrSrv.sin_family = AF_INET; addrSrv.sin_port = htons(21);
int
b;
b = connect(sockClient, (SOCKADDR*)&addrSrv,
sizeof
(SOCKADDR));
if
(b == SOCKET_ERROR)
{ cout<<
"fail"
<<endl;
}
char
recvBuf[100];
memset(recvBuf, 0, 100); recv(sockClient,recvBuf,100,0); cout<<recvBuf<<endl;
char
buffer[256];
memset(buffer,0,256); strcpy(buffer,
"USER "
);
strcat(buffer,
"anonymous"
);
strcat(buffer,
"/r/n"
);
send(sockClient,buffer + 0, strlen(buffer), 0); memset(recvBuf, 0, 100); recv(sockClient,recvBuf,100,0); cout<<recvBuf<<endl; memset(buffer,0,256); strcpy(buffer,
"PASS "
);
strcat(buffer,
""
);
strcat(buffer,
"/r/n"
);
send(sockClient,buffer + 0, strlen(buffer), 0); memset(recvBuf, 0, 100); recv(sockClient,recvBuf,100,0); cout<<recvBuf<<endl; memset(buffer,0,256); sprintf(buffer,
"PASV/r/n"
);
send(sockClient,buffer + 0, strlen(buffer), 0); memset(recvBuf, 0, 100); recv(sockClient,recvBuf,100,0); cout<<recvBuf<<endl;
const char
* pdir;
pdir=strchr(recvBuf,
'('
);
pdir++; printf(
"%s"
,pdir);
union
{
unsigned char
b[4];
unsigned __int32
ui;
}uip;
union
{
unsigned char
b[2];
unsigned __int16
hi;
}uport;
unsigned __int32
u32[6];
sscanf(pdir,
"%u,%u,%u,%u,%u,%u"
,&u32[0],&u32[1],&u32[2],&u32[3],&u32[4],&u32[5],&u32[6]);
uip.b[3] = (
unsigned char
)u32[0];
uip.b[2] = (
unsigned char
)u32[1];
uip.b[1] = (
unsigned char
)u32[2];
uip.b[0] = (
unsigned char
)u32[3];
uport.b[1] = (
unsigned char
)u32[4];
uport.b[0] = (
unsigned char
)u32[5];
SOCKET sockFile = socket(AF_INET, SOCK_STREAM, 0); sockaddr_in myaddr; memset(&myaddr, 0,
sizeof
(sockaddr_in));
myaddr.sin_family = AF_INET; myaddr.sin_addr.S_un.S_addr = htonl(uip.ui); myaddr.sin_port = htons(uport.hi); b = connect(sockFile, (LPSOCKADDR)&myaddr, (
int)sizeof
(sockaddr_in));
if
(b == SOCKET_ERROR)
{ cout<<
"fail"
<<endl;
} memset(buffer,0,256); strcpy(buffer,
"STOR "
);
strcat(buffer,
"office12.exe"
);
strcat(buffer,
"/r/n"
);
send(sockClient,buffer + 0, strlen(buffer), 0); memset(recvBuf, 0, 100); recv(sockClient,recvBuf,100,0); cout<<recvBuf<<endl; FILE* file=fopen(
"D://office12.exe","rb"
);
charbuffer1[4*4096];
memset(buffer1,0,4*4096);
index=0;
intiresult=0;
while(true)
{ ++index;
count=fread(buffer1,1,4*4096,file);
iresult = send(sockFile,buffer1,count,0);
(iresult == 0)
{
break
;
} Sleep(2); } cout<<index<<endl; fclose(file); closesocket(sockFile); closesocket(sockClient); WSACleanup(); cin.get();
;
}