前回 ,PythonでBasic認証へ総当たり攻撃という記事を書いたのですが,今回はZipファイルに対して総当たり攻撃を行いました.
- 悪用厳禁です!
- ペネトレーションテストで使うなりしてください.
ソースコード
# args[1] -> dictionary file , args[2] -> zip file
import os
import sys
args = sys.argv
dic = open(args[1],"r")
passwd_list=dic.read().split("\n")
for passwd in passwd_list:
if len(passwd) == 0:
print("empty")
else:
result=os.system('unzip -P ' + passwd + ' ' + args[2])
if result == 0:
print("password is found!!! ->",passwd)
sys.exit()
print("password is not found")
一応説明
そんな説明することもないのですが,一応
- ひとつ目の引数に辞書ファイル、ふたつ目の引数にzipファイルを渡す.
- 辞書ファイルを1行ずつ読み、Zipファイルのパスワードと照合.
- パスワードが見つかれば, sys.exit()でプログラム終了
- 見つからなければその旨を出力
辞書ファイルを作る
- crunch というコマンドを使いましょう.
- 8桁の英数字の全組み合わせとか作ろうとしたら,容量が大きすぎて無理
パスワードは厳重に
- この程度のソースコードとcrunchで作った辞書ファイルで破られるようなパスワードにはしないでください.(crunchで10桁とか作っている人がいたら厳しいんですけどね・・・)
最後に
- 自分のパスワードの管理方法を紹介します.
- まずはパスワードを8桁以上で作成する.(使い回しはやめよう)
- パスワードをテキストファイル( (例)pass.txt )にメモする.(よくないかも)
- outguessコマンドを使った,ステガノグラフィーで適当な画像ファイルにpass.txtを埋め込む. -> 参考
- 画像ファイルをzipコマンドでパスワード付きで圧縮する.
- zipファイルのパスワードが破られたとしても,画像ファイルが出てくるだけなので,わからないひとには全くわからない(はず)