top of page

pythonでパスワードを解読。総当たり攻撃【brute force attack】ブルートフォースアタック

ITが生活必需品となった現在、私たちは様々なパスワードに囲まれて生活しています。

キャッシュカードの暗証番号やメールアドレスのパスワード、Amazonプライムなど、様々なサービスにログインする際にパスワードを活用しています。


しかし、キャッシュカードの暗所番号の様に、未だに四桁の数字だけを設定しているサービスは多くあります。


今回はこの【四桁の数字のパスワード】が如何に簡単に解読出来るのか❓

を考察します。


まず、簡単な算数でパスワードの組み合わせが何種類存在するのか計算してみます。


【四桁の数字のみの場合】

パスワードに設定できる数字は【0,1,2,3,4,5,6,7,8,9】の10種類です。

一桁目は【0~9】までのどれか。

二桁目も【0~9】までのどれか。

三桁目、四桁目も同様です。


つまり、

10 × 10 × 10 × 10 = 10^4(10の四乗)= 10,000


10,000種類のパスワードが生成できます。


『一万種類もあるのだから、四桁の数字のパスワードでも結構堅牢性が高いのでは?』

と考えてしまうかもしれませんが、コンピューターはこういった単純な作業(数字当てゲーム)が大得意です。


人間と違い、ひたすら解読するまで総当たりで組み合わせをぶつける、といったことが容易なのです。



 

今回の例では、PDFファイルに設定された四桁の数字のパスワードを解読します。


使用するPDFファイルはこちら。ハーゲンダッツ🍨の成分表です。



energy_sp
.pdf
Download PDF • 94KB

このファイルをZIPファイルへ圧縮し、『8497』というパスワードを設定します。

その後、pythonで総当たり攻撃を行い、パスワードを解読します👇。


実行結果は3~4秒ほどでした。


一瞬でパスワードを解読することが出来ました。

もう一度やってみます。数秒のGIFに収めることができました👇。


今回は13,620回かかりました。しかし、それでもほんの数秒です。




一万通りのパスワードが如何に容易に破れるかが分かりますね。

当たり前ですが、8497のパスワードでファイルが開けました👇。





 



因みに、試したパスワードはデータフレームに格納しているので以下の様に確認することが出来ます。

ここでのコードはパスワードを解読するのに、重複を許しているので、同じパスワードを何回か使用していることが分かります。


この様に、コンピューターは単純作業が大得意です。

パスワードを設定する際には、他人に推測されにくい様、文字や数字を混ぜ、文字数の多いパスワードを設定するようにした方が良さそうです。


それでは、良きITライフを。



import zipfile
import pandas as pd
import string,random
 
file_path = 'ここに、解読したいPDFファイルのプルパスを入れてください'
size = 4
chars = '0123456789'
count = 0
numbers = []

with zipfile.ZipFile(file_path , 'r') as zf:
    for i in range(100000):
        # パスワードはバイト型で有る必要がある。random.choicesは重複あり。
        pwd = bytes(''.join(random.choices(chars,k=size)),'UTF-8')
        #print(pwd)
        numbers.append(pwd) #numbersというリストに一つずつ追加
        try:
            zf.extractall(path='.', pwd=pwd) #extractallで解凍
            print('このPDFファイルのパスワードは、 {}です'.format(pwd))
            break
        except Exception as e:
            count += 1
 
print('総当たり攻撃で解凍を試した回数は: ' , count ,"回です")
df = pd.DataFrame(numbers)







print("重複したパスワードのデータフレームは以下です。", df[df.duplicated()])
print(df.duplicated().sum(), "種類、同じパスワードを使用しました。")



今回の記事は乙py先生のプログラミング教室 さんのサイトを参考にしました。

大変参考になりました。ありがとうございました。





Mini統計沖縄では、格安の料金で統計解析レポートをご提供しています。

自社でデータ分析をする人材がいない場合や、データ分析をしたことがない、データ分析をする時間がないなどでお困りの方は是非お気軽にお問い合わせください。

閲覧数:102回0件のコメント
bottom of page