いろいろ備忘録日記

主に .NET とか Go とか Flutter とか Python絡みのメモを公開しています。

Pythonメモ-127 (pyarmor)(pythonのコードを難読化)

概要

以下、自分用のメモです。忘れない内にメモメモ。。。

Pyarmorというライブラリがあるのを以下で知りました。

pyarmor.dashingsoft.com

使い方も簡単そうなので、試してみました。

試してみた

下準備

$ 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.readthedocs.io

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 ぐらいでした。

参考情報

miyashinblog.com


過去の記事については、以下のページからご参照下さい。

  • いろいろ備忘録日記まとめ

devlights.github.io

サンプルコードは、以下の場所で公開しています。

  • いろいろ備忘録日記サンプルソース置き場

github.com

github.com

github.com