Last active
August 29, 2015 14:05
-
-
Save ksoichiro/cfa48bcf65936032ec70 to your computer and use it in GitHub Desktop.
keystoreパスワードの復元テスト
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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[31;1m$1[m" | |
} | |
# 出力用ディレクトリ | |
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