icmp篇 突破TCP-IP过滤/防火墙进入内网( 五 )


sin[0][1].sin_port=htons(atoi(argv[3]));sin[0][2]=sal;memset(&sin[0][3],0,sizeof(sin[0][3]));
sin[0][3].sin_family=AF_INET;
}
else
{
sin[0][0].sin_addr.s_addr=inet_addr("127.0.0.1");
sin[0][0].sin_family=AF_INET;
sin[0][0].sin_port=htons(4000);sin[0][1].sin_addr.s_addr=htonl(INADDR_ANY);
sin[0][1].sin_family=AF_INET;
sin[0][1].sin_port=htons(atoi(argv[3]));sin[0][2]=sal;sin[0][3].sin_addr.s_addr=inet_addr(argv[2]);
sin[0][3].sin_family=AF_INET;
}
sin[1][0]=sin[0][3];
sin[1][1]=sin[0][2];
sin[1][2]=sin[0][1];
sin[1][3]=sin[0][0];if((sock[0][0]=socket(AF_INET,SOCK_DGRAM,0))==INVALID_SOCKET)
{
cout<<"Socket sock[0][0] Error: "<return -1;
}
if(bind(sock[0][0],(struct sockaddr *)&sin[0][1],addrlen)==SOCKET_ERROR)
{
cout<<"Bind sock[0][0] Error: "<return -1;
}
sock[1][1]=sock[0][0];cout<<"n正常工作中..."<hthreads[1]=CreateThread(NULL,0,i2u,(LPVOID)1,NULL,&hthreadid[1]);
while(1)
{
dwret=WaitForMultipleObjects(2,hthreads,false,INFINITE);
if(dwret==WAIT_FAILED)
{
cout<<"WaitForMultipleObjects Error: "<return -1;
}
log=dwret-WAIT_OBJECT_0;
if(log==0)
{
CloseHandle(hthreads[0]);
closesocket(sock[0][1]);
hthreads[0]=CreateThread(NULL,0,u2i,(LPVOID)0,NULL,&hthreadid[0]);
}
else if(log==1)
{
CloseHandle(hthreads[1]);
closesocket(sock[1][0]);
hthreads[1]=CreateThread(NULL,0,i2u,(LPVOID)1,NULL,&hthreadid[1]);
}
else
{
for(int no1=0;no1<2;no1)
{
CloseHandle(hthreads[no1]);
for(int no2=0;no2<2;no2)
closesocket(sock[no1][no2]);
}
}
}
WSACleanup();
return 0;
}本文相关软件T-QQ主要针对禁止使用QQ的网关 , 提供UDP , TCP及ICMP数据报转发功能 ,
本软件同样适用于各种基于UDP协议的通信软件 。其中的TCP数据报转发功能 , 也可以使用UDP数据报来转发TCP数据 。
【icmp篇 突破TCP-IP过滤/防火墙进入内网】

推荐阅读