パスワードリストを7zipに渡す

パスワードリストを7zipに渡す

7zip、rarなどの抽出操作を自動化するシェルスクリプトを作成しています。通常、JDownloader2を介してファイルをダウンロードするときにJDownloader2はこれを行いますが、手動でファイルをダウンロードするときはまだ解凍する必要があります。アーカイブがパスワードで保護されていない場合、スクリプトはバックグラウンドで正常に実行できます。ただし、アーカイブがパスワードで保護されている場合、パスワードを手動で入力できないため、抽出は失敗します。そのため、パスワードのリストをスクリプトから7zipまたはunrarに渡してパスワードを1行ずつ読み、正しいパスワードを取得する簡単な方法があるかどうか疑問に思います。

答え1

以下は、パスワードのリストを取得して各行をテストし、パスワードが正しいかを抽出するシェルスクリプトです。

#!/bin/bash
passwordlist="/path/to/password-list"
outdir="/wherever"
cat "$passwordlist" | tr -d '\r' | while IFS= read -r PW 
do 
    if [[ $(7z l -p"$PW" "$1" 2>&1 | grep --count "ERROR") == 0 ]] 
    then
        echo "$PW" 
        7z x -p"$PW" -o"$outdir" -y "$1" 
        exit 0
    fi
done

関連情報