|
如何突破TCP-IP过滤防火墙进入内网(2) #include #include #include "TCPDataRedird.c" #define TargetIP TEXT("192.168.1.3") #define TargetPort (int)3389 #define ListenPort (int)3389//监听端口 #pragma comment(lib,"ws2_32.lib") int main() { WSADATA wsd; SOCKET sListen=INVALID_SOCKET,//本机监听的socket sock[2]; strUCt sockaddr_in Local,Client,Target; int iAddrSize; HANDLE hThreadC2T=NULL,//C2T=ClientToTarget hThreadT2C=NULL;//T2C=TargetToClient DWord dwThreadID; __try { if(WSAStartup(MAKEWORD(2,2),&wsd)!=0) { printf("\nWSAStartup() failed:%d",GetLastError()); __leave; } sListen=socket(AF_INET,SOCK_STREAM,IPPROTO_IP); if(sListen==INVALID_SOCKET) { printf("\nsocket() failed:%d",GetLastError()); __leave; } Local.sin_addr.s_addr=htonl(INADDR_ANY); Local.sin_family=AF_INET; Local.sin_port=htons(ListenPort);
Target.sin_family=AF_INET; Target.sin_addr.s_addr=inet_addr(TargetIP); Target.sin_port=htons(TargetPort);
if(bind(sListen,(struct sockaddr *)&Local,sizeof(Local))==SOCKET_ERROR) { printf("\nbind() failed:%d",GetLastError()); __leave; } if(listen(sListen,1)==SOCKET_ERROR) { printf("\nlisten() failed:%d",GetLastError()); __leave; } //scoket循环 while(1) { printf("\n\n*************Waiting Client Connect to**************\n\n"); iAddrSize=sizeof(Client); //get socket sClient sock[0]=accept(sListen,(struct sockaddr *)&Client,&iAddrSize); if(sock[0]==INVALID_SOCKET) { printf("\naccept() failed:%d",GetLastError()); break; } printf("\nAccept client==>%s:%d",inet_ntoa(Client.sin_addr), ntohs(Client.sin_port)); //create socket sTarget sock[1]=socket(AF_INET,SOCK_STREAM,IPPROTO_IP);
|