- 论坛徽章:
- 0
|
公司的一个项目是做ssh操作审核的,目的是记录开发人员在机器上的操作,但不能记录员工自己的密码,所以在遇到输入密码的情况下就必须过滤掉,不能记录。
我的想法是判断这个终端的属性,如果ECHO关闭了,说明这可能是个输入密码的操作,此时就过滤掉, 判断终端是否回显的函数如下:
- int test_terminal_echo(int fd)
- {
- struct termios old_terminal;
- tcgetattr(fd, &old_terminal);
- if ((old_terminal.c_lflag & ICANON) && (!(old_terminal.c_lflag & ECHO)) )
- return 1;
- return 0;
- }
- while(1) {
- ....
- if (test_terminal_echo(STDIN_FILENO))
- continue;
- else{
- fwrite(buf, 1, n, file_in);
- // fflush(file_in);
- }
- .....
- }
复制代码
我想这个函数应该没问题, 但是还是不起作用,比如su后的密码照样是记录下来了, 请打家帮帮忙,谢谢 |
|