免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 5055 | 回复: 4

[FreeBSD] FreeBSD最大密码长度 [复制链接]

论坛徽章:
54
2017金鸡报晓
日期:2017-02-08 10:39:42操作系统版块每日发帖之星
日期:2016-03-08 06:20:00操作系统版块每日发帖之星
日期:2016-03-07 06:20:00操作系统版块每日发帖之星
日期:2016-02-22 06:20:00操作系统版块每日发帖之星
日期:2016-01-29 06:20:00操作系统版块每日发帖之星
日期:2016-01-27 06:20:00操作系统版块每日发帖之星
日期:2016-01-20 06:20:00操作系统版块每日发帖之星
日期:2016-01-06 06:20:0015-16赛季CBA联赛之江苏
日期:2015-12-21 20:00:24操作系统版块每日发帖之星
日期:2015-12-21 06:20:00IT运维版块每日发帖之星
日期:2015-11-17 06:20:002015亚冠之广州恒大
日期:2015-11-12 10:58:02
发表于 2015-06-24 17:06 |显示全部楼层

        突然有个奇怪的问题:默认的FreeBSD中,密码最长是多少个字符?

        答案是:128

        在/usr/src/include/pwd.h里面有定义:
  1. #define _PASSWORD_LEN           128     /* max length, not counting NULL */

  2. struct passwd {
  3.         char    *pw_name;               /* user name */
  4.         char    *pw_passwd;             /* encrypted password */
  5.         uid_t   pw_uid;                 /* user uid */
  6.         gid_t   pw_gid;                 /* user gid */
  7.         time_t  pw_change;              /* password change time */
  8.         char    *pw_class;              /* user access class */
  9.         char    *pw_gecos;              /* Honeywell login info */
  10.         char    *pw_dir;                /* home directory */
  11.         char    *pw_shell;              /* default shell */
  12.         time_t  pw_expire;              /* account expiration */
  13.         int     pw_fields;              /* internal: fields filled in */
  14. };
复制代码
_PASSWORD_LEN就是最大的密码长度。另外从上面的passwd结构体中,可以看到密码结构包令的信息还是挺多的,包括密码创建的时间都有。

        获取密码的函数为getpass,源代码文件为/usr/src/lib/libc/gen/readpassphrase.c:

  1. ……
  2. char *
  3. getpass(const char *prompt)
  4. {
  5.         static char buf[_PASSWORD_LEN + 1];

  6.         if (readpassphrase(prompt, buf, sizeof(buf), RPP_ECHO_OFF) == NULL)
  7.                 buf[0] = '\0';
  8.         return(buf);
  9. }
  10. ……
复制代码
另外还有一个典型的应用,在/usr/src/sbin/init/init.c中:

  1.                         for (;;) {
  2.                                 clear = getpass("Password:");
  3.                                 if (clear == 0 || *clear == '\0')
  4.                                         _exit(0);
  5.                                 password = crypt(clear, pp->pw_passwd);
  6.                                 bzero(clear, _PASSWORD_LEN);
  7.                                 if (password == NULL ||
  8.                                     strcmp(password, pp->pw_passwd) == 0)
  9.                                         break;
  10.                                 warning("single-user login failed\n");
  11.                         }
复制代码
注意这个地方输入的时候没提_PASSWORD_LEN的事,然后就直接对输入的字符串进行了crypt,是不是会有点漏洞呢?其实没有问题,因为这个地方调用了getpass函数(见上文),在getpass中,已经使用了sizeof(buf),buf的长度又限定为_PASSWORD_LEN,所以不存在超长的问题。


        如果你想增加这个最大密码长度,可以修改pwd.h后重新编译基本系统,即重新make world一次,虽然/usr/include中也有一个pwd.h,但修改这个文件不会产生效果,因为这个文件是给后来链接libc的程序使用的,编译基本系统时不会读取这个头文件。









另发于:landingby

论坛徽章:
154
2022北京冬奥会纪念版徽章
日期:2015-08-07 17:10:5720周年集字徽章-年
日期:2022-10-26 16:44:2015-16赛季CBA联赛之深圳
日期:2022-11-02 14:02:4515-16赛季CBA联赛之八一
日期:2022-11-28 12:07:4820周年集字徽章-20	
日期:2023-07-19 08:49:4515-16赛季CBA联赛之八一
日期:2023-11-04 19:23:5115-16赛季CBA联赛之广夏
日期:2023-12-13 18:09:34
发表于 2015-06-24 22:26 来自手机 |显示全部楼层
虽然有点冷门,但还是够强的

感觉密码有上20位就比较强的了,个人目前是12~16位

论坛徽章:
54
2017金鸡报晓
日期:2017-02-08 10:39:42操作系统版块每日发帖之星
日期:2016-03-08 06:20:00操作系统版块每日发帖之星
日期:2016-03-07 06:20:00操作系统版块每日发帖之星
日期:2016-02-22 06:20:00操作系统版块每日发帖之星
日期:2016-01-29 06:20:00操作系统版块每日发帖之星
日期:2016-01-27 06:20:00操作系统版块每日发帖之星
日期:2016-01-20 06:20:00操作系统版块每日发帖之星
日期:2016-01-06 06:20:0015-16赛季CBA联赛之江苏
日期:2015-12-21 20:00:24操作系统版块每日发帖之星
日期:2015-12-21 06:20:00IT运维版块每日发帖之星
日期:2015-11-17 06:20:002015亚冠之广州恒大
日期:2015-11-12 10:58:02
发表于 2015-06-25 07:55 |显示全部楼层
回复 2# shang2010


三四年前据说zf的破解能力是12位,干坏事的时候最好再长一些   

论坛徽章:
154
2022北京冬奥会纪念版徽章
日期:2015-08-07 17:10:5720周年集字徽章-年
日期:2022-10-26 16:44:2015-16赛季CBA联赛之深圳
日期:2022-11-02 14:02:4515-16赛季CBA联赛之八一
日期:2022-11-28 12:07:4820周年集字徽章-20	
日期:2023-07-19 08:49:4515-16赛季CBA联赛之八一
日期:2023-11-04 19:23:5115-16赛季CBA联赛之广夏
日期:2023-12-13 18:09:34
发表于 2015-06-25 17:01 |显示全部楼层
没关系,目前真有点实力的破解公司还是很少的


再说我一人做事一人当,没什么好虚伪的品德

论坛徽章:
9
2015年亚洲杯之卡塔尔
日期:2015-05-07 07:05:542015亚冠之鹿岛鹿角
日期:2015-05-29 14:55:522015亚冠之鹿岛鹿角
日期:2015-06-11 09:55:192015亚冠之山东鲁能
日期:2015-06-19 23:53:042015亚冠之大阪钢巴
日期:2015-06-23 21:03:17操作系统版块每日发帖之星
日期:2015-06-23 22:20:00操作系统版块每日发帖之星
日期:2015-06-27 22:20:002015亚冠之布里斯班狮吼
日期:2015-07-04 03:40:012015亚冠之平阳省
日期:2015-07-12 09:32:55
发表于 2015-06-26 19:13 |显示全部楼层
取得root权限

密码登录只是其中一个选择

根据中国计算机管理条例

省略千字
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP