- PR -

cracklibでパスワード強度チェック

投稿者投稿内容
McLaren
ぬし
会議室デビュー日: 2002/01/15
投稿数: 784
お住まい・勤務地: 東京
投稿日時: 2002-12-16 20:37
 お世話になります。

#cd /usr/include
#ln -s crack.h packer.h

で./configure に --with-crack オプションをつけて通ったのですが、その後のmakeでエラーが出ました。。

 やはりおっしゃるようにcracklibをソースからインストールするしたいと思います。
そこでclacklibのtar玉を捜したのですが、どうも見つかりません。tar玉の場合は

crack5.0.tar.gz

で良いのでしょうか。crack5.0の説明を見ていますと少し違うような。。

t-wata
大ベテラン
会議室デビュー日: 2002/07/12
投稿数: 209
お住まい・勤務地: 東京
投稿日時: 2002-12-17 09:50
http://www.users.dircon.co.uk/~crypto/download/cracklib,2.7.tgz

これだと思いますが。googleで、cracklibで検索すると、2番目にでてくる
リンクからたどれます。
McLaren
ぬし
会議室デビュー日: 2002/01/15
投稿数: 784
お住まい・勤務地: 東京
投稿日時: 2002-12-17 09:55
 いつもお世話になっております。大変たすかりました。早速インストールさせていただきます。
McLaren
ぬし
会議室デビュー日: 2002/01/15
投稿数: 784
お住まい・勤務地: 東京
投稿日時: 2003-04-14 17:34
#cd /usr/local/lib
#mkdir pw_dict
#mkdir /usr/dict/words
#chmod 777 pw_dict
#chmod 777 /usr/dict/words
#cd /usr/local/src
#tar xzvf cracklib,2.7.tar.gz
#cd cracklib,2.7
#make all
#make install

ここまで行いまして、エラーは出ませんでした。
しかし、phpの./configureで --with-crack=/usr/local/lib/pw_dict
を追加して実行しても、「そのようなファイルやディレクトリはありません」
と出ます。

 間違いなく/usr/local/lib/pw_dictは存在しております。原因がわからなくて困っておりますので、ぜひともアドバイスのほうよろしくお願いしたいと思っております。

McLaren
ぬし
会議室デビュー日: 2002/01/15
投稿数: 784
お住まい・勤務地: 東京
投稿日時: 2003-04-14 17:59
 すいません。勘違いしておりました。。
#cd /usr/include
#ln -s crack.h packer.h

でコンパイルがとおりました。

 しかし、crackibが有効になっていると思ったのですが、次のテストスクリプトを実行するとエラーが出ました。

<?php
// CrackLib辞書をオープンする
$dictionary = crack_opendict('/usr/local/lib/pw_dict')
or die('Unable to open CrackLib dictionary');

// パスワードチェックを行う
$check = crack_check($dictionary, 'gx9A2s0x');

// メッセージを取得する
$diag = crack_getlastmessage();
echo $diag; // 'strong password'

// 辞書を閉じる
crack_closedict($dictionary);
?>
「ブラウザへ出力されたエラー↓」
Fatal error: Call to undefined function: crack_opendict() in /usr/local/apache/htdocs/test/cracklib.php on line 3

 また、少し引っかかっていたのですが、インストールは成功したものの、/usr/local/lib/pw_dict/ を手動でmkdirしましたが、中に何も入っていません。これは正常なのでしょうか。。/usr/dict/words/ にも何も入っていません。

 アドバイスのほどよろしくお願いいたします。
McLaren
ぬし
会議室デビュー日: 2002/01/15
投稿数: 784
お住まい・勤務地: 東京
投稿日時: 2003-04-14 18:11
 自己レスを重ねて申し訳ございません。。
ひょっとして、./configureのオプションを変えて実行した後、さらにmake、make install を行わなければならないのでしょうか。。念のためやってみましたら

・・・
・・・
make[2]: 入ります ディレクトリ `/usr/local/src/php-4.2.2/ext/crack'
make[3]: 入ります ディレクトリ `/usr/local/src/php-4.2.2/ext/crack'
/bin/sh /usr/local/src/php-4.2.2/libtool --silent --mode=compile gcc -I. -I/usr
/local/src/php-4.2.2/ext/crack -I/usr/local/src/php-4.2.2/main -I/usr/local/src/
php-4.2.2 -I/usr/local/apache/include -I/usr/local/src/php-4.2.2/Zend -I/usr/loc
al/src/php-4.2.2/ext/mysql/libmysql -I/usr/local/pgsql//include -I/usr/local/src
/php-4.2.2/ext/xml/expat -DLINUX=22 -DUSE_HSREGEX -DSHARED_CORE -I/usr/local/sr
c/php-4.2.2/TSRM -g -O2 -prefer-pic -c crack.c
crack.c: In function `_crack_open_dict':
crack.c:68: `PWDICT' undeclared (first use in this function)
crack.c:68: (Each undeclared identifier is reported only once
crack.c:68: for each function it appears in.)
crack.c:68: `pwdict' undeclared (first use in this function)
crack.c: At top level:
crack.c:91: parse error before '*' token
crack.c: In function `_close_crack_dict':
crack.c:93: `pwdict' undeclared (first use in this function)
crack.c: In function `zif_crack_closedict':
crack.c:168: `PWDICT' undeclared (first use in this function)
crack.c:168: `pwdict' undeclared (first use in this function)
crack.c:187: parse error before ')' token
crack.c: In function `zif_crack_check':
crack.c:202: `STRINGSIZE' undeclared (first use in this function)
crack.c:204: `PWDICT' undeclared (first use in this function)
crack.c:204: `pwdict' undeclared (first use in this function)
crack.c:228: parse error before ')' token
make[3]: *** [crack.lo] エラー 1
make[3]: 出ます ディレクトリ `/usr/local/src/php-4.2.2/ext/crack'
make[2]: *** [all-recursive] エラー 1
make[2]: 出ます ディレクトリ `/usr/local/src/php-4.2.2/ext/crack'
make[1]: *** [all-recursive] エラー 1
make[1]: 出ます ディレクトリ `/usr/local/src/php-4.2.2/ext'
make: *** [all-recursive] エラー 1

と出て終わりました。正常ではないと思います。
確かにcracklibのREADMEのstep1に変数を宣言しろ。。みたいなものがかかれていましたがどうも解読できませんでした。やはりこれが原因なのでしょうか。。
t-wata
大ベテラン
会議室デビュー日: 2002/07/12
投稿数: 209
お住まい・勤務地: 東京
投稿日時: 2003-04-14 21:04
REDHATの提供してる、cracklib.rpmがどうやって作られたのか全く分からんのですが、
ln -s /usr/include/crack.h /usr/include/packer.h
では駄目ですね。もとのcracklibに含まれるpacker.hと、REDHATのRPMに含まれるcrack.h
は違うものみたいです。
で、とりあえず、素のcracklibとPHP4.3.1で試してみました。
普通にコンパイルできて、普通に使えましたよ。

tar zxf cracklib,2.7.tar.gz
cd cracklib,2.7
vi Makefile
---以下のように書き換える
DICTPATH="/usr/lib/crack_dict"
make all
cp cracklib/libcrack.a /usr/local/lib
cp cracklib/packer.h /usr/local/include
chmod 644 /usr/lib/libcrack.a
chmod 644 /usr/local/include/packer.h
cd ..
tar jxf php-4.3.1.tar.bz2
cd php-4.3.1
./configure --with-crack=/usr/local
make install

/usr/local/bin/php test.php (test.phpはokumura氏が以前に投稿したやつをそのまま流用)
----以下出力内容
Content-type: text/html
X-Powered-By: PHP/4.3.1

strong password
McLaren
ぬし
会議室デビュー日: 2002/01/15
投稿数: 784
お住まい・勤務地: 東京
投稿日時: 2003-04-15 09:09
 お世話になっております。本当にお世話になっております(しつこいですね)。このレスは保存版でTEXTコピーを取っておきます。

 おっしゃるようにやると本当にうまくいきました。感謝しております。ただ、
chmod 644 /usr/lib/libcrack.a

chmod 644 /usr/local/lib/libcrack.a
の間違いだろうと決め付けて進めましたが間違ってないでしょうか。

今後ともよろしくお願いいたします。

スキルアップ/キャリアアップ(JOB@IT)