Domanda

ho scritto un app con un semplice testo che tenta di identificare un utente da loro abitudini di battitura (intervallo tra le pressioni dei tasti, chiave di durata si svolge, di tempo tra colpi di chiave cioè a-> s è più veloce rispetto a-> v per alcuni utenti, più breve per gli altri a seconda dello stile di digitazione). E 'ben lungi dall'essere perfetto, ma lo fa in modo corretto identificare moderata-grandi differenze nello stile.

spero di utilizzare questo come una forma di monitor di sicurezza -. Se lo stile di digitazione degli utenti non si adatta un modello riconosciuto, report su un server centrale

Naturalmente, il passo successivo in fase di test è quello di cominciare a catturare "normali" abitudini di battitura -. Vale a dire durante la navigazione, il passaggio tra le applicazioni, etc

Quello che non riesco a capire come fare è l'input da tastiera di cattura per tutte le applicazioni (esclusa la schermata di login / di benvenuto, desktop alternativi, ecc - non ho motivo per analizzare quello e probabilmente non è abbastanza di ingresso per analizzare in ogni caso )

Disclaimer: Sì, so che questo si avvicina pericolosamente a scrivere un keylogger che è verboten, ma se avessi voluto farlo, mi piacerebbe scrivere un driver della tastiera in C ++ - sono sicuro che sarebbe molto più snella e più facile da offuscare di una massiccia .Net MSIL assemblaggio. Non ho alcun dubbio che sarò difendersi da "Questo è un keylogger" commenti ma ho colpito un muro e bisogno di chiedere qualche parte ...

Non ho bisogno l'applicazione per essere nascosto - ma sarebbe ideale come essere in grado di ingresso di cattura senza la conferma esplicita dell'utente (al di là di installazione da un amministratore) - Se è necessaria una conferma da parte dell'utente, posso vivere con quello (solo) se può essere una tantum e ho qualche modo per monitorare e segnalare smentite.

Questo è anche possibile in Net? Gli unici esempi sono stato in grado di trovare operare sia con l'aggiunta di un gancio di evento per ogni chiave che sembra goffo e mi immagino è soggetto a errori. Oppure Essi polling lo stato della tastiera per determinare i tasti premuti. Questo non è un bene per me, come a) Ho bisogno esatto timing di tasti premuti in modo su / giù eventi sono un must e b) è brutto.

E non mi sorprenderebbe se il quadro è stato progettato specificamente vietare questo, nel qual caso dovrò ripiegare a qualche codice non gestito per fornire gli eventi. Mi piacerebbe, ovviamente, preferisco usare il codice gestito tutta la strada.

Qualsiasi aiuto apprezzato.

Modifica Grazie alla risposta di Hans Passant, questa è la migliore risorsa che ho trovato finora: http://www.codeguru.com/columns/vb/article.php/c4831

È stato utile?

Soluzione

Google SetWindowsHookEx + WH_KEYBOARD_LL, parole chiave che Google bene. Che imposta un hook basso livello della tastiera. Non è un gancio globale in modo può funzionare in un programma di VB.NET.

Altri suggerimenti

.NET non fornisce alcun servizio di questo tipo, in modo da avere per andare più bassa e l'uso P / Invoke. Le opzioni sono:

  • Win aggancia
  • Polling utilizzando GetAsyncKeyState
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top