Pythonのソースコードを保護するため高度な暗号化できるライブラリ「sourcedefender」について解説しています。
「sourcedefender」ライブラリ・モジュールは、PythonのソースコードをAES 256-bit Encryption(AES256ビット暗号化)で保護することができます。AESは暗号化と復号化の両方に同じ鍵を使用する対称アルゴリズムです。コードを暗号化するには、SOURCEdefender(https://dashboard.sourcedefender.co.uk/)アカウントを作成し、支払い方法を設定する必要があります。
支払い方法を設定する必要があるのですが、料金プランには「Free(無料)」もあります。Free(無料)では、ファイル暗号化は無制限ですが、コードの有効期限は24時間と制限があります。
Free(無料)プランを使う場合は、アカウントを作成しなくても、ライブラリをインストールすれば、使用することができます。
■Python
今回のPythonのバージョンは、「3.8.5」を使用しています。(Windows10)(pythonランチャーでの確認)
■sourcedefenderをインストールする
sourcedefenderをインストールを行いますが、今回はpipを経由してインストールを行うので、まずWindowsのコマンドプロンプトを起動します。
pip install sourcedefender
起動後、上記のコマンドを入力し、Enterキーを押します。
なお、今回は、pythonランチャーを使用しており、Python Version 3.8.5にインストールを行うために、pipを使う場合にはコマンドでの切り替えを行います。
py -3.8 -m pip install sourcedefender
切り替えるために、上記のコマンドを入力し、Enterキーを押します。
Defaulting to user installation because normal site-packages is not writeable Collecting sourcedefender Downloading sourcedefender-7.1.14.tar.gz (6.2 MB) |████████████████████████████████| 6.2 MB 72 kB/s Collecting boltons>=21.0.0 Downloading boltons-21.0.0-py2.py3-none-any.whl (193 kB) |████████████████████████████████| 193 kB 3.3 MB/s Collecting docopt>=0.6.2 Downloading docopt-0.6.2.tar.gz (25 kB) Collecting environs>=9.3.2 Downloading environs-9.3.2-py2.py3-none-any.whl (11 kB) Collecting msgpack>=1.0.2 Downloading msgpack-1.0.2-cp38-cp38-win_amd64.whl (69 kB) |████████████████████████████████| 69 kB 1.0 MB/s Collecting pendulum>=2.1.2 Downloading pendulum-2.1.2-cp38-cp38-win_amd64.whl (129 kB) |████████████████████████████████| 129 kB 6.8 MB/s Requirement already satisfied: python-dateutil>=2.8.1 in c:\users\user_\appdata\roaming\python\python38\site-packages (from sourcedefender) (2.8.1) Collecting TgCrypto>=1.2.2 Downloading TgCrypto-1.2.2-cp38-cp38-win_amd64.whl (45 kB) |████████████████████████████████| 45 kB 3.2 MB/s Requirement already satisfied: requests>=2.20.0 in c:\users\user_\appdata\roaming\python\python38\site-packages (from sourcedefender) (2.25.1) Collecting python-dotenv Downloading python_dotenv-0.18.0-py2.py3-none-any.whl (18 kB) Collecting marshmallow>=2.7.0 Downloading marshmallow-3.12.1-py2.py3-none-any.whl (47 kB) |████████████████████████████████| 47 kB 1.2 MB/s Collecting pytzdata>=2020.1 Downloading pytzdata-2020.1-py2.py3-none-any.whl (489 kB) |████████████████████████████████| 489 kB 819 kB/s Requirement already satisfied: six>=1.5 in c:\users\user_\appdata\roaming\python\python38\site-packages (from python-dateutil>=2.8.1->sourcedefender) (1.16.0) Requirement already satisfied: urllib3<1.27,>=1.21.1 in c:\users\user_\appdata\roaming\python\python38\site-packages (from requests>=2.20.0->sourcedefender) (1.26.5) Requirement already satisfied: certifi>=2017.4.17 in c:\users\user_\appdata\roaming\python\python38\site-packages (from requests>=2.20.0->sourcedefender) (2021.5.30) Requirement already satisfied: chardet<5,>=3.0.2 in c:\users\user_\appdata\roaming\python\python38\site-packages (from requests>=2.20.0->sourcedefender) (4.0.0) Requirement already satisfied: idna<3,>=2.5 in c:\users\user_\appdata\roaming\python\python38\site-packages (from requests>=2.20.0->sourcedefender) (2.10) Using legacy setup.py install for sourcedefender, since package 'wheel' is not installed. Using legacy setup.py install for docopt, since package 'wheel' is not installed. Installing collected packages: boltons, docopt, python-dotenv, marshmallow, environs, msgpack, pytzdata, pendulum, TgCrypto, sourcedefender Running setup.py install for docopt ... done Running setup.py install for sourcedefender ... done Successfully installed TgCrypto-1.2.2 boltons-21.0.0 docopt-0.6.2 environs-9.3.2 marshmallow-3.12.1 msgpack-1.0.2 pendulum-2.1.2 python-dotenv-0.18.0 pytzdata-2020.1 sourcedefender-7.1.14
Enterキーを押すと、インストールが開始され、上記のように「Successfully installed」と表示されます。これが表示されれば、sourcedefenderが正常にインストールされたことになります。
なお、今回はsourcedefenderのバージョン7.1.14をインストールしました。
■sourcedefenderライブラリを使用し、AES256ビット暗号化する
インストール完了後、sourcedefenderライブラリを使用し、AES256ビット暗号化してみます。まずはスクリプトを用意します。
■コード
print("こんにちは、世界")
今回はprint()関数を使用し、文字列を出力させるスクリプトを作りました。
作成したスクリプトを今回はPythonが実行されている作業ディレクトリ(カレントディレクトリ)(C:\Users\user_)に「hello_test.py」という名前でスクリプトを保存します。
C:\Users\user_>sourcedefender encrypt --remove --ttl=1h C:\Users\user_\hello_test.py
保存後、コマンドプロンプトを起動します。起動後、上記のコマンドを入力し、Enterキーを押します。「sourcedefender encrypt」で暗号化を行い、「–remove」オプションで、元の.pyファイルを削除し、「-ttl」オプションを使用し1時間の有効期限を強制します。最後に対象となる.pyファイル(置かれている場所)を指定します。
Enterキーを押すと、「Account Status : Trial(試用)」などと出力されます。これで暗号化は完了となります。
出力後、スクリプトを保存したディレクトリ内を確認すると、「hello_test.py」が削除され、「hello_test.pye」というpye形式のファイルが生成されていることが確認できます。
—–BEGIN SOURCEDEFENDER FILE—–
GhPf\Yg;b2p#j(!b]ZE>RQ1%(!)_8Qg].<S
GhN0\!5ngpj(XaE`r”\$SLT\3jqLQq@n8Ff
.`\1O:k4T]=S%C=/5<B9)XW=2X_jR+F/W+g
]US4sR!:(2SQY-bIim,>
——END SOURCEDEFENDER FILE——
このファイルの中身を確認すると、「hello_test.py」内のコードがAES256ビット暗号化されていることが確認できました。
■コマンドラインからPythonを実行する
確認後、暗号化されたスクリプトをコマンドプロンプトから実行してみます。
python3 -m sourcedefender C:\Users\user_\hello_test.pye
もしくは、
py -3.8 -m sourcedefender C:\Users\user_\hello_test.pye
実行するためには、上記のコマンドを入力しEnterキーを押します。
Enterキーを押すと、スクリプトが実行されて文字列が出力されることが確認できました。
コメント