400-810-1218加入收藏夹|设为主页|广告服务|网币|登录|注册
当前位置:首页 >> 技术频道 >> 防火墙

如何突破TCP-IP过滤防火墙进入内网

来源: 作者:中国IT实验室 发布时间:2009-09-18 10:05:35 发表评论

摘要:在很多企业或者公司基本上网方式基本上都是申请一条连接到Internet的线路,宽带、DDN、ADSL、ISDN等等,然后用一台服务器做网关,服务器两块网卡

关键词:TCP-IP过滤防火墙

  /*************************************************************************

  Module:TCPDataRedird.c

  Date:2001/4/16

  CopyRight(c) eyas

  HomePage:www.patching.net

  Thanks to shotgun

  说明:TCP socket数据转发,sock[0]==>sClient sock[1]==>sTarget

  *************************************************************************/

  #define BuffSize 20*1024 //缓冲区大小20k

  //此函数负责从Client读取数据,然后转发给Target

  DWORD WINAPI TCPDataC2T(SOCKET* sock)

  {

  int iRet,

  ret=-1,//select 返回值

  iLeft,

  idx,

  iSTTBCS=0;//STTBCS=SendToTargetBuffCurrentSize

  char szSendToTargetBuff[BuffSize]=,

  szRecvFromClientBuff[BuffSize]=;

  fd_set fdread,fdwrite;

  printf(" *****************Connection

  Active******************* ");

  while(1)

  {

  FD_ZERO(&fdread);

  FD_ZERO(&fdwrite);

  FD_SET(sock[0],&fdread);

  FD_SET(sock[1],&fdwrite);

  if((ret=select(0,&fdread,&fdwrite,NULL,NULL))==SOCKET_ERROR)

  {

  printf(" select() failed:%d",GetLastError());

  break;

  }

  //printf(" select() return value ret=%d",ret);

  if(ret>0)

  {

  //sClinet可读,client有数据要发送过来

  if(FD_ISSET(sock[0],&fdread))

  {

  //接收sock[0]发送来的数据

  iRet=recv(sock[0],szRecvFromClientBuff,BuffSize,0);

  if(iRet==SOCKET_ERROR)

  {

  printf(" recv() from sock[0] failed:%d",GetLastError());

  break;

  }

  else if(iRet==0)

  break;

  printf(" recv %d bytes from sClinet.",iRet);

  //把从client接收到的数据存添加到发往target的缓冲区

  memcpy(szSendToTargetBuff+iSTTBCS,szRecvFromClientBuff,iRet);

  //刷新发往target的数据缓冲区当前buff大小

  iSTTBCS+=iRet;

  //清空接收client数据的缓冲区

  memset(szRecvFromClientBuff,0,BuffSize);

0
顶一下
0
踩一下

相关文章

发表评论

请自觉遵守互联网相关政策法规,作者管理后台可以删除恶意评论、广告和违禁词语。