🕌
pythonコードを暗号化(難読化)【pyarmor】
pythonファイルを共有するときに見られたくない部分があるかと思います。
「pyarmor」を利用することで、それを可能にすることができます。
python -m venv test
.\test\Scripts\Activate
pip install pyarmor
今回暗号化するのはこのarmor.py
ファイル
import tkinter
import tkinter.ttk as ttk
class Application(tkinter.Frame):
def __init__(self, root):
super().__init__(root)
root.title('Sample')
root.geometry('400x300')
self.set_widgets(root)
def set_widgets(self, root):
select_list = ['SelectA', 'SelectB']
combobox = ttk.Combobox(root, values=select_list)
combobox['values'] = ['SelectA', 'SelectB']
combobox.pack()
button = tkinter.Button(text="表示",command=lambda:print(combobox.get()))
button.pack()
def main():
root = tkinter.Tk()
app = Application(root)
root.mainloop()
if __name__ == "__main__":
main()
難読化してみます。
pyarmor obfuscate armor.py
作成できたファイルは、dist
ディレクトリ内に格納されているので、開いてみます。
問題ないく、難読化できていることが確認できました。
ただ、実行してみると日本語が文字化けしてしまいました。
ソースの最初に以下の文字コードを追加して再度難読化してみます。
# -*- coding: utf-8 -*-
次は問題なく、難読化することができました。
使い方がわからなくなった。
そんな場合は、どのライブラリでも--help
オプションが用意しているので、確認してみてね。
pyarmor --help
実行結果
usage: pyarmor [-h] [-v] [-q] [-d] [--home HOME] [--boot BOOT] ...
PyArmor is a command line tool used to obfuscate python scripts,
bind obfuscated scripts to fixed machine or expire obfuscated scripts.
optional arguments:
-h, --help show this help message and exit
-v, --version show program's version number and exit
-q, --silent Suppress all normal output
-d, --debug Print exception traceback and debugging message
--home HOME Change pyarmor home path
--boot BOOT Change boot platform
The most commonly used pyarmor commands are:
obfuscate (o)
Obfuscate python scripts
licenses (l)
Generate new licenses for obfuscated scripts
pack (p) Pack obfuscated scripts to one bundle
init (i) Create a project to manage obfuscated scripts
config (c) Update project settings
build (b) Obfuscate all the scripts in the project
info Show project information
check Check consistency of project
hdinfo Show all available hardware information
benchmark Run benchmark test in current machine
register Make registration keyfile work
download Download platform-dependent dynamic libraries
runtime Generate runtime package separately
help Display online documentation
See "pyarmor <command> -h" for more information on a specific command.
More usage refer to https://pyarmor.readthedocs.io
Discussion