Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
21.01.2007, 13:02
Felheart



Hi,

ok, ich hab nen Tastaturhook und möchte mit diesem die gedrückten tasten auf dem bilschirm ausgeben...

Wenn ich jetzt aber mit GetKeyNameText(...) mir den Namen der Taste hol'
dann ist es ja ok wenn bei der Eingabetaste "[EINGABE]" erscheint.

Aber leider kommt auch bei der Leertaste & Tabulator eben
"[TAB]" bzw. "[LEER]"
Die absicht war aber eigentlich das Tabulator und Leertaste durch die entsprechenden Symbole dargestellt werden! Also:
" " bzw. " "

Ich hab schon folgendes versucht:

Quellcode:...
GetKeyNameText(dwMsg,key,32);
if(key=="LEER")
    cout << " ";
if(key=="TABULATOR")
    cout << "    ";
...
Das funktioniert aber so ca. garnicht... -.-

Jetzt hab ich mir gedacht das schon bei der dwMsg (in der die Bitmaske der Taste ist?) mit den if-abfragen zu machen...

allerdings kenn ich die bitmasken von den zu änderenden tasten (ENTER, TAB, SPACE) garnicht....

Meine frage:

wie kann ich den "text" der tasten ändern ???
Hab schon in MSDN nach "GetKeyNameText" und "Key bitmask" usw. gesucht :(

--

zum Seitenanfang zum Seitenende Profil || Suche
001
21.01.2007, 13:06
theDon



Zeichenketten vergleicht man nicht mit ==, sondern zum Beispiel mit strcmp(3).

Quellcode:if(!strcmp(key, "LEER"))
{
  // key ist gleich "LEER"
}

--

\o tanz den naziprau! o/

And more than ever, I hope to never fall,
Where enough is not the same it was before

zum Seitenanfang zum Seitenende Profil || Suche
002
21.01.2007, 13:29
Felheart



Quellcode:GetKeyNameText(dwMsg,key,15);

        if(!strcmp(key,"LEER"))
            printf(" ");
        else
        {
            if(!strcmp(key,"TABULATOR"))
                printf("    ");
            else
            {
                if(!strcmp(key,"EINGABE"))
                    printf("\n");
                else
                    printf("%s",key);
            }
        }
ok, das funkt soweit, danke.
aber kann es passieren das wenn man schnell tippt,
das dann die eingabe etwas laggt ?

btw:
wie mach ich es das die ausgabe casesensitiv erfolgt ?
bei mir ist die gesammte ausgabe im CAPS-Lock :(
das kann doch ned normal sein ?

dann müsst ich ja auch noch ne abfrage machen ob SHIFT aktiv ist? oO

--


Dieser Beitrag wurde am 21.01.2007 um 13:30 von Felheart bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
003
21.01.2007, 15:07
LeJean



...oder dir deinen passwort-logger einfach sparen -.-

--

zum Seitenanfang zum Seitenende Profil || Suche
004
21.01.2007, 15:19
Felheart



Meine güte,
darf man den nix mit keyboard hooks machen ohne das man gleich geflamed wird ?
Nur weil ich wissen will wie man die abfrage casesensitv macht kannst du
doch ned sagen das ich irgend so nen logger machen will -_-

--

zum Seitenanfang zum Seitenende Profil || Suche
005
22.01.2007, 13:40
Felheart



Nur das du's weist... Hier meckert auch _NIEMAND_ obwohl der titel wohl
eindeutig ist.

Und du flamest obwohl ich sowas nichtmal im Sinn habe!

http://www.codeproject.com/system/KeyLogger.asp

http://www.codingforums.com/showthread.php?t=75704

So... und für alle die die was lernen wollen ist hier die lösung des Problems in diesem Thread:

Quellcode:__declspec(dllexport) LRESULT CALLBACK KeyEvent (int nCode,WPARAM wParam,LPARAM lParam)
{
    static bool shiftPressed = GetKeyState(VK_SHIFT) < 0;
    static bool capsLockOn = GetKeyState(VK_CAPITAL) < 0;

    if  (nCode == HC_ACTION)
    {
        if((wParam == WM_SYSKEYDOWN) || (wParam == WM_KEYDOWN)))
        {
            KBDLLHOOKSTRUCT hooked =
                *((KBDLLHOOKSTRUCT*)lParam);
            if(hooked.vkCode == VK_LSHIFT || hooked.vkCode == VK_RSHIFT)
            {
                 shiftPressed = true;
            }
            else if(hooked.vkCode == VK_CAPITAL)
            {
                capsLockOn = true;
            }
            else
            {
                char charPressed = hooked.vkCode;
                if( (0 != isalpha(charPressed)) && (shiftPressed ^ capsLockOn) )
                {
                    charPressed = tolower(charPressed);
                }

                DWORD dwMsg = 1;
                dwMsg += hooked.scanCode << 16;
                dwMsg += hooked.flags << 24;

                char key[16];
                GetKeyNameText(dwMsg,key,15);

                std::cout << key;
            }
        }
        else if((wParam == WM_SYSKEYUP) || (wParam == WM_KEYUP)))
        {
            if(hooked.vkCode == VK_LSHIFT || hooked.vkCode == VK_RSHIFT)
            {
                 shiftPressed = false;
            }
            else if(hooked.vkCode == VK_CAPITAL)
            {
                capsLockOn = false;
            }
        }
    }
    return CallNextHookEx(hKeyHook,nCode,wParam,lParam);
}
PS: Und ausserdem:

Warum verdammt nochmal sollten den ein _KEYLOGGER_ sich die mühe machen
"caps" von "nicht-caps" zu unterscheiden ???

e: thx nochmal theDon

--


Dieser Beitrag wurde am 22.01.2007 um 13:53 von Felheart bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
006
22.01.2007, 16:09
Gravok



Zitat:
Felheart postete
Warum verdammt nochmal sollten den ein _KEYLOGGER_ sich die mühe machen
"caps" von "nicht-caps" zu unterscheiden ???
e: thx nochmal theDon
Wenn du mit CAPS, uppercase und lowercase meinst, ist schon klar das ein keylogger das brauch. Weiß ja net wie du deine Passwörter gestaltest aber bei mir ist das eine Mischung aus Groß-/Kleinbuchstaben, Zahlen und Sonderzeichen :p

--

23 - Nichts ist so wie es scheint

zum Seitenanfang zum Seitenende Profil || Suche
007
22.01.2007, 17:01
Felheart



Ja, mit CAPS mein ich uppercase und lowercase.

wenn mein passwort beispielsweise "abccc" ist, dann ist das allen programmen
(ausnahme windows-login) egal ob ich "ABCCC" oder "aBccC" eingebe oder sonst
irgend eine andere kombination.

oder ?

also bei STEAM, Warcraft3(B.net), X-Fire, ICQ, Skype, Teamspeak, World of Warcraft... ist es egal wie ich mein PW eingeb'.

also was wollt ihr ?

e: und falls jetzt jemand der nix besseres zu tun hat, daherkommt und meint er müsste mir jetzt sagen das es bei ein oder zwei programmen nicht so ist:

-> kann ja sein, aber ich macht trozdem keinen logger :)

--


Dieser Beitrag wurde am 22.01.2007 um 17:03 von Felheart bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
008
22.01.2007, 23:28
oxff



Behindertes Opfer. Tagelang muss man Malware von Dilletanten wie dir anaylsieren, dabei kannst du dann nichtmals was mit den infizierten Boxen anfangen, weil du einfach noch blöder bist, als meine Oma, die jeden Anhang ausführt. Stirb!

--

mwcollect - mein Projekt | oxlog - mein blog | happyhardcore.com Stream - gute Musik

zum Seitenanfang zum Seitenende Profil || Suche
009
22.01.2007, 23:29
default



echte maenner haben eh nen atmel mit 2mb flash der die keys in hardware logged, das ist betriebssystemunabhängig

--

Du musst Deine Bandbreite verbreitern, damit du breiter wirst von der Bandbreite her und ein breiteres Publikum ansprechen kannst.

zum Seitenanfang zum Seitenende Profil || Suche
010
23.01.2007, 09:08
Flow
Moderator


0xFF: Betrachte dich hiermit als verwarnt. Die Forenregeln (insb. §1.1/2) sind einzuhalten.

--

zum Seitenanfang zum Seitenende Profil || Suche