markdown

Keyboard Input Event Logger Summary

Overview

This C program captures keyboard input events, resolves device names, and logs these events into a specified SQLite database tikker.db. It utilizes a custom library sormc.h for database management.

Features

  • Key Event Mapping: Maps keycodes to their respective characters for better representation.
  • Event Logging: Logs key events with timestamps efficiently into the database.
  • User Configuration: Allows device selection via a command-line option for targeted event capturing.
  • MIT License: Allows free use, modification, and distribution of the software.

Bugs and Issues

  1. Undefined Functions: Missing definitions for rargs_get_option_string, sormc, and sormq, leading to potential undefined behavior.
  2. Device Resolution: Uses O_RDONLY to open devices, which may need root access, potentially causing permission issues.
  3. Array Boundaries: Access to keycode_to_char without bounds checking could lead to undefined behavior.
  4. Error Handling: Lack of checks after using snprintf, open, and ioctl, leading to potential failures and bugs.

Recommendations

  • Argument Parsing: Use robust libraries for better flexibility and error management.
  • Signal Handling: Implement graceful termination with proper file descriptor management.
  • Error Checking: Add checks post snprintf, open, and ioctl to handle errors effectively.
  • Optimize Performance: Reduce redundancy in printf statements for better efficiency.

Positive Attributes

  • Effectively maps keycodes to characters.
  • Provides informative console output for ongoing events.
  • Efficient database logging of key events.

Potential Improvements

To enhance its robustness and user-friendliness, the program needs the implementation of missing functions and improved error-handling mechanisms.

Alternative Open Source Tools

  • logkeys: A Linux keylogger similar in function.
  • Keylogger (Python): Uses pynput for cross-platform keylogging.
  • Linux-dirty-injector: Provides additional functionalities including keylogging.

Note: The program is reviewed with a grade of 6.0, suggesting more development is needed in error handling and functionality completion.