Keylogger Implementation

According to Wikipedia, "Keystroke logging (often called keylogging) is the action of tracking (or logging) the keys struck on a keyboard, typically in a covert manner so that the person using the keyboard is unaware that their actions are being monitored." Parents often install keylogger software on the home computer so they can track what their kids do on the computer and particularly what websites they visit.

Some keylogger software will not only record the sequence of keys struck but also their timing information, that is when a key is struck and when it is released. If this timing information is sufficiently accurate, it can be used for biometric purposes.

Over the last seven or so years we have developed the powerful Pace University Keystroke Biometric System (PKBS). Two data capturing systems were used in this work - a Java applet and a freely available keylogger developed by Eric Fimbel. Although these systems record the keystroke timing information in millisecond format, the actual resolution has been estimated to be only about 15 milliseconds [2].


This project will develop a more accurate keylogger, possibly with a resolution of 200 microseconds [1]. A Google search on "keylogger c++" will yield some possibilities.


  1. Maxion, Roy A. and Killourhy, Kevin S. (2010). Keystroke Biometrics with Number-Pad Input. In IEEE/IFIP International Conference on Dependable Systems & Networks (DSN-10), pp. 201-210, Chicago, Illinois, 28 June to 01 July 2010. IEEE Computer Society Press, Los Alamitos, California, 2010.
  2. Killourhy, Kevin S. and Maxion, Roy A. (2011). The Effect of Clock Resolution on Keystroke Dynamics. In 11th International Symposium on Recent Advances in Intrusion Detection (RAID-08), 15-17 September 2008, Cambridge, Massachusetts, R. Lippmann, E. Kirda and A. Trachtenberg (Eds.), Lecture Notes in Computer Science (LNCS), Vol. 5230, pp. 331-350, Springer-Verlag, Berlin, Heidelberg.