我正在为公司构建安全实施,需要捕获在特定窗口中按下的所有键并将它们保存在缓冲区中,以便每隔5分钟将它们转储到一个文件中。
然后,每隔7分钟通过邮件发送日志并删除该文件。这样做是一个不错的选择吗?有更好的选择吗?
缓冲区用于防止在擦除文件时使用该文件。
提出给我的问题是,我应该为此目的使用什么样的缓冲区?它必须是动态的,因为我不知道在保存文件之前将按下多少个键。
或者有没有办法在每次充满文件时将静态缓冲区转储到文件中?
答案 0 :(得分:1)
简单std::vector可以用于此目的,因为它会自动增长,其增长策略可以很好地处理您的场景。您也可以使用std::list,但将矢量保存到文件可能会更容易。 对于每个按键,我都会存储一些结构来保存关于按键事件的信息。如果yoy在Windows上,那么简单地存储你处理的每个keyboard message的lParam和wParam可能是有意义的。您需要wParam来存储每个键附带的额外信息,例如按下键时的Ctrl + Alt。 例如:
#include <windows.h>
struct keypress
{
UINT lParam; // The character code of the key.
UINT wParam; // The repeat count, scan code, extended-key flag etc.
};
typedef std::vector<keypress> keystore;
你也可以使用字符串,但它不是,这里需要字符串。如果只是简单的文本输入,即使使用简单的typedef std::vector<char> keystore;