黑客风云——风云网络
设为首页 加入收藏 我要投稿 网站地图

您现在的位置: 黑客风云 >> 黑客文章 >> 黑客进阶 >> 黑客编程 >> 正文
·没有路由密码权限时的鸽08-23·上网安全 Vista自我防范10-11
·让濒临崩溃的Windows XP10-11·有备无患,快速自制救急10-11
·要你好看!Windows看图工10-11·空间赞助网提供不同类型10-11
·讨论net.exe和net1.exe的10-10·让3389远程桌面传输更通10-10
·巧妙入侵渗透赌博站10-10·Aspx空间扫权限工具10-10
·Windows2003最新提权工具10-10·易淘乐提供100M免费全能10-10
·系统开机密码忘了不着急10-09·中意网络提供免费100M免10-09
·与众不同 Windows XP开始10-08·让桌面图标翻跟斗 在XP上10-08
·上海宽元站长资助计划-提10-08·个性化Windows XP的任务10-07
·趣盘提供3G免费网络硬盘10-07·秀山热线提供200MB免费全10-07
·一次艰辛的提权过程10-06·成功入侵IT大卖场的渗透10-06
·mysqlhack- MYSQL利用工10-06·lanker一句话PHP后门客户10-06
·WIXI提供3G免费多媒体网10-06·新人网络提供100M/ftp免10-06
·如何利用QQ带来高流量10-05·UuShare提供免费网络文件10-05
[推荐]端口映射源代码,对于公网访问内网服务有一定好处
      ★★★★★

端口映射源代码,对于公网访问内网服务有一定好处

文章整理发布:黑客风云 文章来源:www.05112.com 更新时间:2006-10-26 9:30:05
 
 //表示公网计算机监听了这个端口
 nRecv = recv(CtrlSocket, (char*)&ReqPort, sizeof(ReqPort), 0);
 if(nRecv <= 0)
 goto error;
 nTimes++;
 ConfigInfo.LocalData.Push(ReqPort);//传递信息的结构
 hThread = CreateThread(NULL, 0, PortTransfer_2, (LPVOID)&ConfigInfo, NULL, &dwThreadId);
 if(hThread)
 CloseHandle(hThread);
 else
 Sleep(1000);
 }
error:
 printf("Error.\r\n");
 closesocket(CtrlSocket);
 return false;
}

DWORD WINAPI PortTransfer_3(LPVOID lParam)
{
 SOCKINFO socks;
 SOCKET ClientSocket, ServerSocket, CtrlSocket, tmpSocket;
 TransferParam<SOCKET, SOCKET> *ConfigInfo = (TransferParam<SOCKET, SOCKET>*)lParam;
 CtrlSocket = ConfigInfo->GlobalData;
 ClientSocket = ConfigInfo->LocalData.Pop();

 WORD wPort;
 tmpSocket = CreateTmpSocket(&wPort);//创建个临时端口

 if(tmpSocket <= 0 || wPort <= 0)
 {
 closesocket(ClientSocket);
 return 0;
 }
 //通知内网用户发起新的连接到刚创建的临时端口
 if(send(CtrlSocket, (char*)&wPort, sizeof(wPort), 0) == SOCKET_ERROR)
 {
 closesocket(ClientSocket);
 closesocket(CtrlSocket);
 return 0;
 }
 printf("ThreadID: %d ==> Waiting for server connection...", nTimes);
 ServerSocket = accept(tmpSocket, NULL, NULL);
 if(ServerSocket == INVALID_SOCKET)
 {
 printf("Error.\r\n");
 closesocket(ClientSocket);
 return 0;
 }
 printf("OK.\r\n");
 socks.ClientSock = ClientSocket;
 socks.ServerSock = ServerSocket;
 //进入纯数据转发状态
 return TransmitData((LPVOID)&socks);
}

BOOL PortTransfer_3(WORD wCtrlPort, WORD wServerPort)//监听的两个端口
{
 HANDLE hThread;
 DWORD dwThreadId;
 BOOL bOptVal = TRUE;
 int bOptLen = sizeof(BOOL);
 TransferParam<SOCKET, SOCKET> ConfigInfo;
 SOCKET ctrlsockid, serversockid, CtrlSocket, AcceptSocket;
 
 ctrlsockid = CreateSocket(INADDR_ANY, wCtrlPort);//创建套接字
 if(ctrlsockid <= 0)
 goto error2;
 serversockid = CreateSocket(INADDR_ANY, wServerPort);//创建套接字
 if(serversockid <= 0)
 goto error1;
 CtrlSocket = accept(ctrlsockid, NULL, NULL);//接受来自(内网用户发起)PortTransfer_2模式建立控制管道连接的请求
 if(CtrlSocket == INVALID_SOCKET)
 goto error0;
 //setsockopt( keep-alive......
 if (setsockopt(CtrlSocket, SOL_SOCKET, SO_KEEPALIVE, (char*)&bOptVal, bOptLen) == SOCKET_ERROR) {
 goto error0;
 //printf("Set SO_KEEPALIVE: ON\n");
 }
 //与内网用户建立了连接后就相当端口映射成功了
 //准备进入接收服务请求状态,并将在新起的线程中通过控制管道通知内网用户发起新的连接进行数据转发
 ConfigInfo.GlobalData = CtrlSocket;
 while(1)
 {
 printf("Accepting new Client...\r\n");
 AcceptSocket = accept(serversockid, NULL, NULL);
 if(AcceptSocket == INVALID_SOCKET)
 {
 printf("Error.\r\n");
 Sleep(1000);
 continue;
 }
 nTimes++;
 printf("OK.\r\n");
 ConfigInfo.LocalData.Push(AcceptSocket);//把接受到的套接字Push到栈结构中,传到新起线程那边可以再Pop出来
 hThread = CreateThread(NULL, 0, PortTransfer_3, (LPVOID)&ConfigInfo, NULL, &dwThreadId);
 if(hThread)
 CloseHandle(hThread);
 else
 Sleep(1000);
 }

error0:
 closesocket(CtrlSocket);
error1:
 closesocket(serversockid);
error2:
 closesocket(ctrlsockid);
 return false;
}

void Usage(char *ProName)
{
 printf (SERVERNAME" "VERSION" " "By LZX.\r\n");
 printf ("Usage:\r\n"
 " %s ctrlPort ServerPort\r\n"
 " %s Port Dest_IP Port\r\n"
 " %s ctrlIP ctrlPort Dest_IP Port\r\n", ProName, ProName, ProName);
}

int main(int argc, char **argv)
{

 if(! InitSocket())
 return 0;
 if(argc == 3)
 PortTransfer_3(atoi(argv[1]), atoi(argv[2]));
 else if(argc == 4)
 PortTransfer_1(atoi(argv[1]), argv[2], atoi(argv[3]));
 else if(argc == 5)
 PortTransfer_2(argv[1], atoi(argv[2]), argv[3], atoi(argv[4]));
 else
 Usage(argv[0]);

 WSACleanup();
 return 0;
}

上一页  [1] [2] [3] 

文章录入:cainiaowang    责任编辑:cainiaowang 
  • 上一篇文章:

  • 下一篇文章:
  • 【字体:
    中介交易区
    最 新 热 门
    网游盗号木马实现手记01-09
    黑色技术蠕虫下载者[完整源码]11-01
    利用BCB自己打造QQ炸弹10-23
    从内存中加载并启动一个exe(delp09-27
    开启和关闭Windows xp 防火墙(de09-27
    让你的程序通过XP防火墙(delphi编09-27
    如何让你的程序安全通过windows防08-20
    如何透过程序来控制 Windows (XP08-20
    动易2005-2006算号器的源代码08-11
    API对注册表进行操作(Delphi编程07-30
    一段隐藏注册表项的代码07-26
    了解VB编写病毒的大体方法07-02
    相 关 文 章
    美服,欧服WOW木马核心源代码,游戏版本
    PCSHARE VIP 2005源代码
    NBSI_1.157源代码
    强悍挂马工具:IIS_AD IIS扩展(附源代码
    三种语言的下载者源代码:C Delphi Vb
    动易2005-2006算号器的源代码
    通杀网页加密源代码
    HDSI3+网络僵尸的完整源代码
    熊猫烧香专杀工具源代码 解除被感染的e
    红狼下载者v1.0源代码
    无Dll插入进程,下载者VC源代码
    内网ADSL 端口映射准备工作!新手必看!
    Copyright @2006 黑客风云 ●业务联系:QQ 联系怪人 联系奇人 Email:给怪人发邮件 给奇人发邮件
    ICP备案:冀06009886