Key logger Software Requirements Specifications
The key logging activity should be as undetected as possible and with high performance.
• Key logger for each key pressed on any open application.
• All languages should be supported.
User Classes and Characteristics
• Windows XP 32 bits.
• Windows Vista 32 bits and 64 bits.
• Windows 7 32 bits and 64 bits.
Design and Implementation Constraints
• Key logger should be delivered as a .NET assembly DLL.
• .NET framework 2.0 and up can be used as long as the DLL can be referenced via a .NET framework 2.0 projects
• The key logger should listen to every key logged and send it using a windows message to a given handle.
• The message parameter should contain the char logged.
• Copy – pasted text should also be logged, in this case, the windows message type sent should be different and the parameter should contain the text copied.
• The key logger should be case sensitive.
• For high performance issues, we advise using low level keyboard hook.
• A test solution should be included with a simple interface: buttons for install and uninstall hook, textbook to present the key pressed.
• DLL interface should be:
InstallHook( HWND hw)
o Installs the key logging hook, and sends the keys logged to the input Window handle.
o Removes the logging hook and stops the key logging.
o Returns a Boolean indicating if the hook is installed or not.
o Turn on logging.
o Turn off logging.
The documentation should include:
• Usage instructions.
• Limitations and known issues.
• Debugging instructions.
• Project properties details (Compilation used libraries, compilation command line parameters, special definitions, etc.)
Assumptions and Dependencies
The key logger DLL is planned to be loaded to a hidden window (using C# win form), the window wndproc method will be overridden and will listen to all messages sent to it by the key logger.
Please note, I need for each key logging the process name meaning if you get:
hello world then you need to add the process it came from (Visual Studio for example)
In case there is more then one user using the system, the log file with the key logs should add the user name.