既知の部分パスワードを持つzipファイルのクラッキング

既知の部分パスワードを持つzipファイルのクラッキング

圧縮パスワードを忘れて開けないファイルです。このパスワードの一部の内容はかなり確信していますが、パスワードに追加されたバリエーションは覚えていません。頑張った亀裂圧縮パッケージしかし、パスワードの一部を知っていることをどのように見せるべきかわかりません。結論として:

  • 私は 'のようなパスワードの一部を知っています。こんにちは「、」世界「そして」悪いパス」。
  • 部品は順序に関係なく配置できますが、すべて使用することはできません。
  • 小文字3~5文字など、若干の細かい部分が追加されている場合があります。

これを行うことができるソフトウェアをご存知ですか?

答え1

方法の概要:

  1. このようなユーティリティを使用してくださいcrunchカスタム辞書ファイルを作成します。

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

質問:

  • 最大3つの文字列と3〜5個の小文字を混在させることで、1兆個以上のパスワードを作成できます。辞書の作成には時間がかかります。

  • crunch文字ベースのワイルドカードは許可されていますが、カスタム文字列の処理に柔軟性がありません。この問題を解決するには、、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

関連情報