2013年09月29日

パスワードハッシュ生成スクリプト(Solaris10)

暇だったのでちょっと遊びで作ってみました
Solaris10でのみ動作確認しましたが
きっちり動いてます
debianでもためしてみましたが
htpasswdコマンドが存在していて
指定してあげればLinuxでも動きます
ただしSolaris10とちがって
生成されるハッシュ値をLinuxにあわせないと
使い物にはなりませんが・・・

うまく動いたらハッシュの書き変わったshadowファイルもできあがるので
diffしてshadow.datと内容くらべてみてください
いちおうVM環境では書き換えたshadowファイルで
きっちり認証できましたw

準備するもの
本物のshadowファイルを書き換えるわけにはいかないので
shadowファイルをコピーしてshadow.datを作り
ShellScriptと同じディレクトリに置く
ファイルのオーナーもShellScriptを動かすユーザーに代えましょう
あとはShellScriptを打ち込んで動かしてみるだけ

ちょっと中の処理をいじれば
Solaris10のパスワード変更をShellScriptで
自動化してやれそうですが
こわいので出来ませんw

ShellScript名 : pwHash.sh

#!/bin/bash
#
#password hash make script
#2013.09.29

clear
WORKDIR=`pwd`
CMD=/usr/apache2/htpasswd

file_read(){
#shadow ファイルの読み込み
no=1
while read LINE
do
WORD[$no]=${LINE}
User_decision
let no++
done < $WORKDIR/shadow.dat
if [ "${user_flg}" = "0" ]; then
echo "ユーザが存在しませんでした"
exit
fi
}

field_cut(){
#fieldの切り分けとチェック
for((no2=3; no2<=9; no2++)){
FIELD[$no2]=`echo ${WORD[$no]} | cut -d : -f${no2}`
if [ "${FIELD[$no2]}" = ":" ]; then
FIELD[$no2] = ""
fi
}
}

User_decision(){
TMP_user=`echo $LINE | cut -d : -f1`
if [ "${USER}" = "${TMP_user}" ]; then
flag=1; user_flg=1
else
flag=0
fi
}

pw_replace(){
#passwordの置き換え
LINE=""; no=1
while read LINE
do
User_decision
if [ "${flag}" -eq 1 ]; then
#各fieldの切り出し
FIELD_TMP=${WORD[$no]}
NO_TMP=$no
PW=`$CMD -ndb $STR $STR | cut -d : -f2`
field_cut
WORD[$no]="$USER:$PW:${FIELD[3]}:${FIELD[4]}:${FIELD[5]}:${FIELD[6]}:${FIELD[7]}:${FIELD[8]}:${FIELD[9]}"
fi
let no++
done < $WORKDIR/shadow.dat
}

line_dsp(){
: > $WORKDIR/shadow
for((x=1; x echo ${WORD[$x]} >> $WORKDIR/shadow
}
echo "生成されたshadowファイルを表示します"
echo "push enter key"; echo
more $WORKDIR/shadow
}

echo -n "対象ユーザ名を入力してください?"
read USER; user_flg=0
file_read

echo -n "ハッシュ生成文字列を入力してください?"
read STR
pw_replace

echo "生成されたハッシュ: $PW"
echo "パスワードを置き換えます"
echo
echo "push enter key"; read stop
echo
echo "BEFORE : $FIELD_TMP"
echo "AFTER : ${WORD[$NO_TMP]}"
line_dsp




同じカテゴリー(ShellScript)の記事画像
シェルスクリプト(計算)
シェルスクリプト(変数内容の表示)
同じカテゴリー(ShellScript)の記事
 シェルスクリプトでcsvを扱う(bash)その2 (2015-06-20 20:30)
 シェルスクリプトでcsvを扱う(bash)その1 (2012-08-12 12:00)
 シェルスクリプトの計算速度 (2011-09-04 18:32)
 シェルスクリプト(計算) (2010-04-17 20:47)
 シェルスクリプト(変数の定義2) (2010-04-06 20:53)
 シェルスクリプト(変数内容の表示) (2010-04-04 21:12)

上の画像に書かれている文字を入力して下さい
 
<ご注意>
書き込まれた内容は公開され、ブログの持ち主だけが削除できます。

削除
パスワードハッシュ生成スクリプト(Solaris10)
    コメント(0)