ファロットさん
そこの数値は10進ではなく16進にしないといけなかったのですね。
ユーザ数が 3のときしかテストしないで、「一応動作確認はした」は
ずいぶんいい加減でした。すみません。
スクリプトは以下のような修正でもよさそうです。
printf(OUT "\"Count\"=dword:%X\n",$no);
今度は 2000ユーザで試してみて認証も大丈夫でした。
>いとさん
ファロットです。
教えていただいたスクリプトですが、そのままではCount値が少々
おかしくなって未入力の番号ができていたのでちょっと修正しました。
>}
>print(OUT "\"Count\"=dword:$no\n");
この部分を
}
$no = sprintf('%X', $no);
print(OUT "\"Count\"=dword:$no\n");
のように修正しました。
ありがとうございました。
いとさん、どうもありがとうございました。
こちらでも何の問題もなく正常に作動しました。
ファロットさん
間に合わせに、レジストリにパスワード登録するスクリプトを書いてみました。
一応動作確認はしていますが、保証なし、責任なしでよければ試してみてください。
---- この下の行から ----
# 1. このPerlスクリプトに適当な名前をつけ(例えば cryptpwd.pl)、password.txt と同じフォルダ下に置く---- この上の行までを切り取る ----
# 2. password.txtには ユーザ名とパスワードの組を一行に一件の形式で書き並べる
# 区切りは TAB または半角空白、パスワードは8文字以下
# user1 passwd1
# user2 passwd2
# …
# 3. コマンドプロンプトから本スクリプトを実行する(perl cryptpwd.pl)
# 4. 作成された password.reg をダブルクリックし、レジストリにパスワード情報を設定する
# 5. AN HTTPDを再起動する(追記)
#
# 参考にしたページ: http://tohoho.wakusei.ne.jp/wwwperl2.htm#crypt
open(IN, "password.txt");
open(OUT, "> password.reg");
print (OUT "Windows Registry Editor Version 5.00\n\n");
print (OUT "[HKEY_LOCAL_MACHINE\\SOFTWARE\\AnHttpd\\default\\ACL\\Passwd]\n");
$no=0;
@salts = ( "A".."Z", "a".."z", "0".."9", ".", "/" );
while (chomp($data =<IN>)) {
($user, $passwd) = split(/\s+/,$data);
$salt = $salts[int(rand(64))] . $salts[int(rand(64))];
$epasswd = crypt($passwd, $salt);
print (OUT "\"$no\"=\"$user:$epasswd\"\n");
$no=$no+1;
}
print(OUT "\"Count\"=dword:$no\n");
close(OUT);
close(IN);
はじめまして、ファロットといいます。
ANHTTPを使用させていただいているのですが、少々不便なことがありまして
投稿いたしました。
ユーザ認証に関してなのですが、現在ではユーザ名とパスワードを一人づつ
入力して登録しているのですが、これを複数まとめて登録できるようにならないでしょうか?
レジストリに一括登録することも考えてみたのですが、パスワードが暗号化してレジストリに
記録されているので、テキストベースで .reg を作ってというわけにはいきませんでした。
この件以外では非常に使い勝手のよいソフトでありがたく使わせていただいているので、
ご検討いただけると嬉しいです。