概要
以下、自分用のメモです。忘れない内にメモメモ。。。
Pyarmorというライブラリがあるのを以下で知りました。
コードの中に見られたくない情報があるときに✨😊 pic.twitter.com/uy9juEY66W
— みやさかしんや@Python/AI/DX (@miyashin_prg) 2023年11月1日
使い方も簡単そうなので、試してみました。
試してみた
下準備
$ python3 -m venv venv $ source ./venv/bin/activate (venv) $ python --version Python 3.11.6 (venv) $ python -m pip install black bpython pyarmor
難読化してみるソースコード
import sys def main(): print(sys.version) for i in range(10): print(i) if __name__ == "__main__": main()
難読化してみる
(venv) $ pyarmor gen app.py INFO Python 3.11.6 INFO Pyarmor 8.4.2 (trial), 000000, non-profits INFO Platform linux.x86_64 INFO search inputs ... INFO find script app.py INFO find 1 top resources INFO start to generate runtime files INFO target platforms {'linux.x86_64'} INFO write dist/pyarmor_runtime_000000/pyarmor_runtime.so INFO generate runtime files OK INFO start to obfuscate scripts INFO process resource "app" INFO obfuscating file app.py INFO write dist/app.py INFO obfuscate scripts OK
完了すると dist ディレクトリ下に難読化されたソースコードが出力されています。
ディレクトリツリーは私の環境では以下のようになってました。
$ tree dist dist ├── app.py └── pyarmor_runtime_000000 ├── __init__.py ├── __pycache__ │ └── __init__.cpython-311.pyc └── pyarmor_runtime.so 3 directories, 4 files
app.py を見てみると、こんな感じ。
上のように難読化されていても当然元の通りに動きます。
$ python dist/app.py 3.11.6 (main, Oct 2 2023, 13:45:54) [GCC 11.4.0] 0 1 2 3 4 5 6 7 8 9
難読化されたソースコードを見ると trial
って見えますね。このライブラリはシェアウェア?
ドキュメントに詳しくかいてありました。
Pyarmor is published as shareware, free trial version never expires, but there are some limitations
無料体験版に期限はないけど、いくつか制限があるよってことですね。
Irreversible Obfuscation Modes
(不可逆的難読化モード?)で利用される RFT Mode と BCC Mode を利用するためには Pro ライセンスが必要とのこと。
Proライセンスの価格は2023-11-02時点では、日本円で \16,000 ぐらいでした。
参考情報
過去の記事については、以下のページからご参照下さい。
- いろいろ備忘録日記まとめ
サンプルコードは、以下の場所で公開しています。
- いろいろ備忘録日記サンプルソース置き場