Skip to content

Instantly share code, notes, and snippets.

@ksoichiro
Last active August 29, 2015 14:05
Show Gist options
  • Save ksoichiro/cfa48bcf65936032ec70 to your computer and use it in GitHub Desktop.
Save ksoichiro/cfa48bcf65936032ec70 to your computer and use it in GitHub Desktop.
keystoreパスワードの復元テスト
#!/bin/bash
# keystoreパスワードの復元テスト
#
# 下記の
# Download now on gdrive, because gcode has deactivated downloads :(
# というリンクから AndroidKeystoreBrute_v1.05.jar をダウンロードし
# カレントディレクトリに置いて実行してください。
#
# android-keystore-password-recover
# https://code.google.com/p/android-keystore-password-recover/
#
# 以下の一連の流れが確認できます。
# 1. キーストアを新規作成
# 2. 指定したパスワードでキーストアの内容表示ができることを確認
# 3. エイリアスパスワードを変更
# 4. 変更したエイリアスパスワードをキーストアパスワードに設定
# 5. 変更したキーストアパスワードでキーストアの内容表示ができることを確認
function log() {
echo -e "\n$1"
}
# 出力用ディレクトリ
OUTDIR=out
# キーストアファイル名
KEYSTORE=$OUTDIR/my.keystore
# エイリアス
ALIAS=myapp
# 初期パスワード
FIRST_PASS=foobar
# エイリアスの新しいパスワード
NEW_ALIAS_PASS=hogehoge
# 単語リスト
WORDLIST=$OUTDIR/wordlist.txt
# 復元されたキーストアファイル名
KEYSTORE_RECOVERED=${KEYSTORE}_recovered
if [ -d $OUTDIR ]; then
log "${OUTDIR}が既に存在します"
exit
else
mkdir -p $OUTDIR
fi
log "キーストアを作成"
expect -c "
set timeout -1
spawn keytool -genkey -v -keystore $KEYSTORE -alias $ALIAS -keyalg RSA -keysize 2048 -validity 10000
expect {
\"キーストアのパスワードを入力してください:\" {
send \"$FIRST_PASS\n\"
exp_continue
}
\"新規パスワードを再入力してください: \" {
send \"$FIRST_PASS\n\"
exp_continue
}
\"Unknown\" {
send \"foo\n\"
exp_continue
}
\"いいえ\" {
send \"はい\n\"
exp_continue
}
\"キーストアのパスワードと同じ場合はRETURNを押してください\" {
send \"\n\"
exp_continue
}
}
"
log "キーストアパスワードを確認(一覧表示)"
expect -c "
set timeout -1
spawn keytool -list -keystore $KEYSTORE
expect {
\"キーストアのパスワードを入力してください:\" {
send \"$FIRST_PASS\n\"
exp_continue
}
}
"
log "エイリアスパスワードを変更"
expect -c "
set timeout -1
spawn keytool -keypasswd -keystore $KEYSTORE -alias $ALIAS
expect {
\"キーストアのパスワードを入力してください:\" {
send \"$FIRST_PASS\n\"
exp_continue
}
\"新規<myapp>の鍵のパスワード:\" {
send \"$NEW_ALIAS_PASS\n\"
exp_continue
}
\"新規<myapp>の鍵のパスワードを再入力してください:\" {
send \"$NEW_ALIAS_PASS\n\"
exp_continue
}
}
"
log "復元(エイリアスパスワードをキーストアパスワードに設定)"
echo "$NEW_ALIAS_PASS" > $WORDLIST
java -jar AndroidKeystoreBrute_v1.05.jar -m 3 -k $KEYSTORE -d $WORDLIST -w
log "キーストアパスワードを確認(一覧表示)"
expect -c "
set timeout -1
spawn keytool -list -keystore $KEYSTORE_RECOVERED
expect {
\"キーストアのパスワードを入力してください:\" {
send \"$NEW_ALIAS_PASS\n\"
exp_continue
}
}
"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment