荔园在线
荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀
[回到开始]
[上一篇][下一篇]
发信人: spectre (Heal the world), 信区: Linux
标 题: [转载] CrackLib 简介及应用举例 (2) wwwRainbow (转寄)
发信站: BBS 荔园晨风站 (Fri Sep 1 20:25:36 2000), 转信
【 以下文字转载自 spectre 的信箱 】
【 原文由 suplaozi.bbs@smth.org 所发表 】
发信人: JeffreyDong (Jeff), 信区: Security
标 题: CrackLib 简介及应用举例 (2)
发信站: BBS 水木清华站 (Thu Jun 25 19:11:28 1998)
CrackLib 简介及应用举例 (2)
JeffreyDong
应用举例
============
这里我举一个很简单的例子, 试图用很短的篇幅来说明用法.
char *FascistCheck(char *pw, char *dictpath);
这是CrackLib中最常用的函数. pw是用户选择的密码, 你要去
验证它是不是不安全的. dictpath是字典所在路径, 注意, 要
把文件名中"."之前的部分加上.
以RedHat 5.1为例, 假设你已正确的安装了CrackLib 2.7和
FireBird BBS 2.66M. 让我们来看看如何把CrackLib加入BBS
中去. :-)
首先, 改写bbs_src目录下的register.c:
/* ----------- begin ---------- */
char *msg;
/* ----------- end ---------- */
......
while( 1 ) {
getdata(0,0,"请设定您的密码 (Setup Password): ",passbuf,PASSLEN,NOECHO,
YEA) ;
if( strlen( passbuf ) < 4 || !strcmp( passbuf, newuser.userid ) ) {
prints("密码太短或与使用者代号相同, 请重新输入\n") ;
continue;
}
/* ----------- begin ---------- */
if (msg = (char*) FascistCheck(passbuf, CRACKLIBPATH)) {
printf("请另选密码! (%s)\n",msg);
continue;
}
/* ----------- end ---------- */
strncpy( newuser.passwd, passbuf, PASSLEN );
getdata(0,0,"请再输入一次你的密码 (Reconfirm Password): ",passbuf,
PASSLEN,NOECHO,YEA);
if( strncmp( passbuf, newuser.passwd, PASSLEN ) != 0 ) {
prints("密码输入错误, 请重新输入密码.\n") ;
continue;
}
passbuf[8] = '\0' ;
strncpy( newuser.passwd, genpasswd( passbuf ), PASSLEN );
break;
}
begin和end注释所夹部分为改动处, 下同.
接着改写bbs_src目录下的userinfo.c:
/* ----------- begin ---------- */
char *msg;
/* ----------- end ---------- */
......
getdata(i++,0,"请设定新密码: ",buf,PASSLEN,NOECHO,YEA);
if( buf[0] == '\0' ) {
prints("\n\n密码设定取消, 继续使用旧密码\n");
fail++;
break;
}
strncpy(genbuf,buf,PASSLEN) ;
/* ----------- begin ---------- */
if (msg = (char*) FascistCheck(buf, CRACKLIBPATH)) {
printf("\n请另选密码! (%s)\n", msg);
prints("\n密码设定取消, 继续使用旧密码\n");
fail++;
break;
}
/* ----------- end ---------- */
getdata(i++,0,"请重新输入新密码: ",buf,PASSLEN,NOECHO,YEA);
if(strncmp(buf,genbuf,PASSLEN)) {
prints("\n\n新密码确认失败, 无法设定新密码。\n");
fail++;
break;
}
接着在bbs.h中加入:
#ifndef CRACKLIBPATH
#define CRACKLIBPATH "/usr/lib/cracklib_dict"
#endif
注意这里是字典所处的位置.
最后改动bbs的Makefile:
OS_DEF = -DLINUX -DTERMIOS
CC = gcc
CFLAGS = -O2
/* ----------- begin ---------- */
LIBS = -ltermcap -lbsd -lcrack
/* ----------- end ---------- */
然后make, make install就可以了. :-) 很简单, 不是吗?
更深入的研究
================
也许会有后续文章, 也许没有了. 更深入的研究要看你了. :-)
--
使生如夏花之绚烂,死如秋叶之静美.
※ 来源:·BBS 水木清华站 bbs.net.tsinghua.edu.cn·[FROM: 166.111.10.144]
--
※ 转载:·BBS 荔园晨风站 bbs.szu.edu.cn·[FROM: 192.168.0.108]
[回到开始]
[上一篇][下一篇]
荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店