免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: qucklay
打印 上一主题 下一主题

如何让Login 输入的密码显示回显星号 [复制链接]

论坛徽章:
0
21 [报告]
发表于 2007-06-20 13:35 |只看该作者
要回显星号,可以像楼上各位讲的修改login的源代码.在shadow 包里面.还有就是用expect. 好多hacker用expect来偷别人的密码的.

论坛徽章:
0
22 [报告]
发表于 2007-06-20 15:17 |只看该作者
顶,
密切关注中

论坛徽章:
0
23 [报告]
发表于 2007-06-20 15:29 |只看该作者
这个应该跟终端的选项设置有关,了解一下struct  termios,及终端设置的相关资料吧

论坛徽章:
0
24 [报告]
发表于 2007-06-22 08:49 |只看该作者
不是有没有必要,是能还是不能

论坛徽章:
0
25 [报告]
发表于 2007-06-22 08:55 |只看该作者
我感觉大家是不是弄错了一点,我认为显示星号不是 login 程序控制的,而是 getty 程序
getty程序在获取用户输入,并进行一定的判断,再调用 login 进行验证

论坛徽章:
0
26 [报告]
发表于 2007-06-24 08:57 |只看该作者
楼上的果然有研究。。。

论坛徽章:
0
27 [报告]
发表于 2007-06-24 17:57 |只看该作者
#include <unistd.h>
     #include <stdio.h>
     #include <stdlib.h>
     #include <termios.h>
     
     /* Use this variable to remember original terminal attributes. */
     
     struct termios saved_attributes;
     
     void
     reset_input_mode (void)
     {
       tcsetattr (STDIN_FILENO, TCSANOW, &saved_attributes);
     }
     
     void
     set_input_mode (void)
     {
       struct termios tattr;
       char *name;
     
       /* Make sure stdin is a terminal. */
       if (!isatty (STDIN_FILENO))
         {
           fprintf (stderr, "Not a terminal.\n");
           exit (EXIT_FAILURE);
         }
     
       /* Save the terminal attributes so we can restore them later. */
       tcgetattr (STDIN_FILENO, &saved_attributes);
       atexit (reset_input_mode);
     
       /* Set the funny terminal modes. */
       tcgetattr (STDIN_FILENO, &tattr);
       tattr.c_lflag &= ~(ICANON|ECHO); /* Clear ICANON and ECHO. */
       tattr.c_cc[VMIN] = 1;
       tattr.c_cc[VTIME] = 0;
       tcsetattr (STDIN_FILENO, TCSAFLUSH, &tattr);
     }
     
     int
     main (void)
     {
       char c;
     
       set_input_mode ();
     
       while (1)
         {
           read (STDIN_FILENO, &c, 1);
           if (c == EOF || c == '\n')          /* C-d */
             break;
           else
           {
                   putchar('*');
             fflush(NULL);
           }
         }
     
       return EXIT_SUCCESS;
     }

论坛徽章:
0
28 [报告]
发表于 2007-06-24 22:35 |只看该作者
注册1年之久,发的处男帖就这么强。。关键这么用?

论坛徽章:
0
29 [报告]
发表于 2007-06-24 23:02 |只看该作者
看了UNIX环境高级编程里面的getpass示例函数,只能达到不回显得功能,然后看了看glibc的手册,里面有这一段示例程序,觉得可能关键是ICANON吧
tattr.c_lflag &= ~(ICANON|ECHO); /* Clear ICANON and ECHO. */
然后fflush(NULL)起到及时刷新作用?

论坛徽章:
0
30 [报告]
发表于 2007-06-25 10:34 |只看该作者
是bash还是getty的source?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP