私の友人は彼女のZipファイルのパスワードを失いました。彼女はパスワードが数字のみ(つまり、0、1、2、3、4、5、6、7、8、および9のみ)を含み、長さが16文字程度であることを覚えています。パスワードの数字は、ランダムにキーを押すことによってランダムに選択されました。彼女は自分のパスワードをTXTファイルに保存しましたが、ファイルはなくなっています。
パスワードを回復するための実行可能な方法はありますか?もしそうなら、どうすればそれを行うことができますか?
このような長いパスワードは復元できないことをインターネットで読みましたが、パスワードは数字のみであることを知っているため、このケースは特別だと思います。私たちは数学の素人であり、私たちのケースでパスワードを解読するのに必要な時間を見積もることはできません。私の友人は単にそれを手放す必要がありますか、それともパスワードを回復するために時間と労力を費やす価値がありますか?
パスワードは、ランダムにキーを押すことにより、ランダムに選択されました
TL; DR: 実現可能 アーカイブがZipCrypto、で保護されている場合にクラックするには、実行不可能アーカイブが "WinZip" AES暗号化で保護されている場合。
ランダムな数字の16 = 10 ^ 16 =10000 000 000 000 000組み合わせ=53ビット
たとえば、100 000ハッシュ/秒のパスワード検証速度を達成できる場合、次の量がかかりますパスワードがブルートフォースになるまでの時間:
考慮すべきその他の事項(ありがとう、コメントセクション!):
hashcat
同じベンチマーク )でのPKZIPに関する測定Zipアーカイブを保護するために、少なくとも2つの異なるアルゴリズムが広く使用されています。
16文字はかなり長いです。数字だけでも時間がかかります。力ずくで攻撃するのがどれほどもっともらしいことかはわかりません。おそらく、代わりにファイル回復プログラムを使用して、パスワードのtxtファイルを回復することを検討してください。ブルートフォースでZipアーカイブを強制的に実行したい場合は、そのためのphpスクリプトを以下に示します。
脚本:
<?php
#This script will try all numeric passwords which are 16 characters long (excluding those which start with zeros), and reveal the password on completion.
#Install PHP 7, and p7Zip (eg: "Sudo apt-get install php p7Zip-full"). '/dev/null' must exist! Save this script as "script.php" in $PWD. Copy Zip archive to $PWD, and name it "file.Zip". Execute this script in terminal (eg: "php script.php").
$i = 999999999999999;
while ($i <= 9999999999999999){
echo "Trying {$i}\n";
$output = Shell_exec("7z t file.Zip -p{$i} 2>&1 > /dev/null && echo $?");
$output = trim($output);
if ($output === '0'){
echo "Password is {$i}\n";
$i = 9999999999999999;
}
$i++;
}
?>
出力例(サイズに合わせてトリミング):
user1@vm1:~/Music$ php script.php
Trying 9999999999999995
Trying 9999999999999996
Trying 9999999999999997
Trying 9999999999999998
Trying 9999999999999999
Password is 9999999999999999
user1@vm1:~/Music$