免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1581 | 回复: 0
打印 上一主题 下一主题

[C] 关于获得linux伪终端回显得问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-03-05 10:41 |只看该作者 |倒序浏览
公司的一个项目是做ssh操作审核的,目的是记录开发人员在机器上的操作,但不能记录员工自己的密码,所以在遇到输入密码的情况下就必须过滤掉,不能记录。
我的想法是判断这个终端的属性,如果ECHO关闭了,说明这可能是个输入密码的操作,此时就过滤掉, 判断终端是否回显的函数如下:


  1. int test_terminal_echo(int fd)
  2. {
  3.         struct termios old_terminal;

  4.         tcgetattr(fd, &old_terminal);

  5.         if ((old_terminal.c_lflag & ICANON) && (!(old_terminal.c_lflag & ECHO)) )
  6.                 return 1;

  7.         return 0;
  8. }

  9. while(1) {
  10.    ....
  11.                         if (test_terminal_echo(STDIN_FILENO))
  12.                                 continue;
  13.                         else{
  14.                                 fwrite(buf, 1, n, file_in);
  15.         //                      fflush(file_in);
  16.                         }
  17.   .....
  18. }

复制代码


我想这个函数应该没问题, 但是还是不起作用,比如su后的密码照样是记录下来了, 请打家帮帮忙,谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP