こんにちは。
KSG Holdings Ltd.の司法書士 & 週末趣味プログラマーの熊木です。
「ZIPファイルを解凍するためのパスワードを忘れた!」
、、、というような場面はほとんどないですが、
勉強のため、そんなときのためのプログラムをPythonで組んでみました。
手当たり次第にパスワードを総当たりしてくれるプログラムです。
import sys import zipfile args = sys.argv dic = open(args[1], "r") passwd_list = dic.read().split("\n") with zipfile.ZipFile(args[2]) as zf: for passwd in passwd_list: try: zf.extractall(pwd=passwd) print('Completed') print('Pass: ' + passwd) break except KeyboardInterrupt: # Ctrl-C print('KeyboardInterrupt') break except: print(passwd) continue else: print('Failer...')
(いつもながら、本職のプログラマーにお見せするのは恥ずかしいレベルではありますが、)
このプログラムをつかえば、テキスト形式の辞書から、ひとつずつ単語を抽出して総当たりで試してくれて、
うまく合致するものがあればZIPファイルが解凍されます。
総当たりの元となるテキスト形式の辞書をどうやって準備するか、という点が問題ですが、
ネット上には、単なる英単語の辞書だけでなくて
単語や数字や記号の組み合わせを何万通りも列挙したようなテキスト形式の辞書が多くアップされているので、
かなり多くのパスワードの総当たりができます(誰が何のためにそのような辞書を準備しているかを考えると怖いですね)。
あるいは、
Pythonをつかえば、英語の大文字・小文字、数字、記号を任意の桁数で組み合わせた何万通りのパスワード候補を自ら作成することもできます。
実際、私のような週末プログラマーレベルでも簡単に何兆通り以上のパスワードを作成し、
それを総当たりで試す、みたいなことができます。
(私が使用している古いThinkpadでは、すべて試すには何年もかかりますが)
今回のプログラム作成を通して学んだことは
パスワードは、辞書にあるような単純なものではあっさりと破られる可能性があるので、
できれば、大文字、小文字、数字、記号を組み合わせたもので、
8桁~12桁程度のものにしておくのがよさそう、ということです。
皆さまもお気をつけ下さい。
プログラミングを学ぶならオンライン学習がおすすめ!
プログラミングを学びたい場合、まずは、Progateさんやドットインストールさんの無料レッスンを受講されるのも良いかと思いますが、
新しい知識・技術をみにつける一番重要なポイントは、継続すること。
この点、やはり身銭を切って学習に取り組んだ場合と
無料で取り組んだ場合とでは、
継続性に大きな差が出ます。
本気でプログラミングを習得したい方は、
以下のような有料サービスを初めから利用されることを検討されてもよろしいかと思います。
初級者向け
フルオーダーメイドのカリキュラムが組める!エンジニア塾【Samurai】
中級者向け向け
米国シリコンバレー発祥、世界最大級のオンライン学習プラットフォーム!【Udemy】
上級者向け
人工知能特化型プログラミング学習サービス「Aidemy Premium Plan」
それではまた。
2018年4月28日
司法書士 熊木 雄介
Email: info@office-kumaki.name
※ ご相談やお仕事のご依頼につきましては、まずはEメールにて、ご相談内容・ご依頼内容をお送りいただけますと幸いです。
※ 弊社は、毎月複数件のラブアン法人設立、就労ビザ申請、法人口座開設をお手伝いさせていただいております。また、我々司法書士には守秘義務がありますので、安心してご相談くださいませ。
※ 匿名でのお問い合わせや十分な情報をいただけないお問い合わせにはお応え致しかねます。あらかじめご了承くださいますようお願い申し上げます。
<<ラブアン法人設立サポートのウェブサイトはこちら!>>
実績多数! ラブアン法人設立サポートサービス! (新しいタブで開きます。)