English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
前書き
Pythonの内蔵モジュールzipfileを使用してzipファイルの解凍を実現し、パスワード解読を追加で行います。
zipfileモジュールはzip形式のエンコードおよびデコードの圧縮および解圧を行うために使用されます。zipfileには非常に重要な2つのclassがあります。それはZipFileとZipInfoです。ほとんどの情况下、この2つのclassを使用するだけで十分です。ZipFileは主なclassであり、zipファイルの作成および読み取りを行い、ZipInfoはzipファイルの各ファイルの情報を保存します。
例えば、Pythonのzipfileモジュールを読み取る場合、ここではfilenameがファイルのパスと仮定しています:
import zipfile z = zipfile.ZipFile(filename, 'r') for i in z.infolist(): print i.file_size, i.header_offset
ここではz.infolist()を使用しており、それは圧縮包内のすべてのファイルの情報を返します、それはZipInfoのリストです。ZipInfoオブジェクトには圧縮包内のファイルの情報が含まれており、最も常用されるのはfilename、file_size、header_offsetで、それぞれファイル名、ファイルサイズ、ファイルデータの圧縮包内のオフセットです。
準備段階
まず、圧縮ファイルが必要で、それにパスワードを設定し、このように見えます
それで、自動的にパスワード付きの圧縮ファイルを取得しました、それでは、これで終わりです
暴力解析
まず、暴力解析とは何かを知りましょう、単純に言えば、ループを回して比較を行う方法で、私たちは皆MD5を暗号化することは、MD5は逆転不可能です、それであれば、オンライン上でMD5解密サイトはどのように作られているか、実際には強制解析の方法です。
例を示します、MD5を暗号化した文字列 str="abc" 暗号化された結果は "3cd24fb0d6963f7d" という長い文字列は他人には読めません、MD5解密サイトはどう作られているのか、彼らが暇な時に試してみると、aa/cc/bb/abcなどのMD5を暗号化して、自分のデータベースに保存します。検索する際、彼らはあなたが提供する "3cd24fb0d6963f7d" データベース内で比較し、一致すれば見つかりません、ほとんどの場合、あなたの暗号化文字列が少し複雑であれば見つかりません、これがMD5解密、つまり強制解析です
上のコード
import zipfile #モジュールをインポート、これは圧縮と解凍を行います password="123" #私たちが設定したパスワード zfile = zipfile.ZipFile("test.zip") #解凍する压缩包 zfile.extractall(path='C:\\Users\\Administrator\\Desktop\\', members=zfile.namelist(), pwd=password.encode('utf-8')) #解凍操作を行います、pathは出力パスです
上記のコードを実行してみましょう(もちろん、あなたの暗号化パスワードは123),デスクトップにtest.zipが展開されていることが分かります。完璧なendingですが、まだ強制破壊が不足しています。自分のパスワードを知っているのに、なぜ強制破壊が必要ですか?焦らず、さらに読み進めてください。
import zipfile zfile = zipfile.ZipFile("test.zip") passFile=open('pwd.txt') # 設定したパスワードファイルを読み取る for line in passFile.readlines(): try: password = line.strip('\n') zfile.extractall(path='C:\\Users\\Administrator\\Desktop\\', members=zfile.namelist(), pwd=password.encode('utf-8')) break except: print("もう間違っています")
pwd.txt内の内容は以下の通りです
1223 abc aaa 123
ここで zip ファイルのパスワードの強制破壊が完了しました。実は、try except 異常メカニズムを非常に巧妙に利用しただけで、正常に解凍すると正常なパスワードが正常に、解凍に失敗すると例外が報告されます。実際に試してみてください。
まとめ
これでこの記事のすべての内容が終わりました。この記事の内容が皆さんの学習や仕事に参考になることを願っています。疑問がある場合は、コメントを残してください。皆さんの「呐喊教程」へのサポートに感謝します。
声明:この記事の内容はインターネットから取得しており、著作権者に帰属します。インターネットユーザーが自発的に貢献し、自己でアップロードしたものであり、このサイトは所有権を持ちません。人工的な編集は行われていません。また、関連する法的責任を負いません。著作権侵害の疑いがある場合は、メールを送信してください:notice#oldtoolbag.com(メールを送信する際には、#を@に置き換えてください。報告を行い、関連する証拠を提供してください。一旦確認がとりついたら、このサイトは即座に侵害される内容を削除します。)