パスワードの一部が判明しているZIPファイルをクラックする

パスワードの一部が判明しているZIPファイルをクラックする

私はジップパスワードを忘れたため開けないファイルです。パスワードの一部は覚えているのですが、追加したバリエーションを思い出せません。試してみましたがクラックジップしかし、パスワードの一部を知っていることを示す方法がわかりません。要約すると、

  • パスワードの一部は知っています。例:こんにちは"、"世界" そして "クソ野郎「」。
  • これらのパーツは任意の順序で配置でき、すべてが使用されるわけではありません。
  • 3 ~ 5 個の小文字など、追加の小さな部分が表示される場合があります。

それができるソフトウェアをご存知ですか?

答え1

方法の概要:

  1. 次のようなユーティリティを使用するcrunchカスタム辞書ファイルを作成します。

  2. fcrackzipそのカスタム辞書を使用して実行します。

問題点:

  • 最大 3 つの文字列と 3 ~ 5 個の小文字を混ぜると、1 兆個以上のパスワードが作成されます。この辞書を生成するだけでも、しばらく時間がかかります。

  • crunch文字ベースのワイルドカードの使用は許可されますが、カスタム文字列の処理はそれほど柔軟ではありません。この Q を解決するには、、grepおよびsedsort必要と思われますが、いずれも必要な時間、つまり数時間、場合によっては数日が増加します...

おそらく次のようなものが機能するでしょう:

crunch 3 9 abcdefghijklmnopqrstuvwxyz123 | \
  grep '[123]' | # at least one number per dict entry
  egrep -v '([123]).*\1' | # remove repeated numbers
  sed 's/1/hello/;s/2/world/;s/3/shittypass/' | # replace numbers with strings
  sort -u | \
  fcrackzip -D -p /dev/stdin foo.zip 

問題セットが小さいテストケース (1 つまたは 2 つの文字列、および最大 2 つの小文字、任意の順序)。

echo foo > bar.txt  # file to archive
zip -P xhellobworld baz bar.txt   # archive with password
time crunch 2 4 abcdefghijklmnopqrstuvwxyz12 | \
     grep '[12]' | egrep -v '([12]).*\1' | \
     sed 's/1/hello/;s/2/world/' | \
     sort -n | fcrackzip -u -D -p /dev/stdin baz.zip 

出力:

Crunch will now generate the following amount of data: 3163440 bytes
3 MB
0 GB
0 TB
0 PB
Crunch will now generate the following number of lines: 637392 


PASSWORD FOUND!!!!: pw == xhellobworld

real    0m5.942s
user    0m2.240s
sys 0m1.040s

関連情報