web-dev-qa-db-ja.com

Pythonコード難読化

pythonコードを難読化するのに役立つツールを知っていますか?

38
vishal

あなたの問題空間は十分に指定されていません。これはコマンドラインアプリ用ですか?このコードはライブラリとして使用されるはずですか?

他の2つの答えに加えて、コードをバイナリに埋め込むことができます。起動したら、コードをデコードして文字列を評価します。これは、共有ライブラリ拡張でも機能します。バイトコードでも同じことができると思いますが、Py_EvalCodeを呼び出すほど簡単ではありません。

py2exeまたは凍結は、コードを実行可能ファイルに変換する他のソリューションです。バイナリにコードが含まれているだけであり、深刻な難読化は行われませんが、.pyファイルを開くよりも困難です。

Pythonに似たコードをCythonで記述し、.soとして使用するためにCでPython拡張ファイルを記述します。これはおそらく最も難しいでしょう。これらのうち、リバースエンジニアリングを行い、開発用の高級言語を提供します。

すべてのソリューションと同様に、それらはすべてハッキング可能です。あなたはそれがどれほど難しいことを望みますか?

15
Andrew Dalke
12
Nick Fortescue

基本的にPythonをC++に変換し、静的にリンクされたバイナリファイルを作成する、非常に素晴らしいプロジェクトを実際に見つけました。

これをチェックしてください: http://www.nuitka.net/

9
Adir Iakya

多くの状況で、.pyソースファイルの代わりにバイトコンパイルされた.pycファイルを出荷できます。これにより、ある程度の難読化が行われます。 pyobfuscate READMEが示唆するように、これには制限があります。しかし、2つのアプローチを組み合わせることができる場合があります。

5
Greg Ball

Pythonの標準ライブラリには compileall.py が含まれています。これをディレクトリで実行すると、すべてのソースファイルの.pycファイルが生成されます。 .pycファイルにはバイトコードとドキュメント文字列のみが含まれ、すべてのコメントが削除されます。次に、このディレクトリをコピーし、rm -rf $(find . -name .py)などを実行して、元のソースファイルを削除します。

4
Cerin

あなたの最善の策は、実験的なPython-to-C++コンパイラである Shed Skin を使用してコンパイルすることです。

2
user7305

難読化は行いませんが、この Pythonレシピ は、コメントの除去を含むPythonコードのサイズの最小化に非常に有効です。

0
Isaac