2011-11-10 58 views
0

Python3中是否有任何現有的Python代碼混淆工具?Python3代碼的混淆工具

請不要試圖教我Python是不是正確的選擇,如果我想隱藏/模糊我的代碼。或者說,正確的許可證應該保護代碼而不是混淆...

更新:這個問題沒有重複的問題How do I protect Python code?:我只是問是否有一個工具來混淆Python。沒有更多,也沒有少。 (如果沒有我想知道爲什麼我會得到如此多的反饋...

回答

5

不管你做什麼,在某些時候Python解釋器將讀取未混淆的Python字節碼。從那裏很容易回到你的源代碼(減去評論和非顯而易見的佈局)。這就是爲什麼大家都說Python幾乎不可能混淆。事實上,混淆Python幾乎是不可能的,這意味着沒有好的工具可以做到。我擔心這只是一廂情願的想法,說:「我知道這不能做得非常有效,但是有沒有什麼工具可以做到呢?」

可能最好的做法是用標準加密工具加密你的代碼,然後用一些其他語言編寫一個小封裝程序來解密你的Python並運行你的程序,然後在完成時刪除未加密的代碼。如果你想付出太多的努力,你可能可以用C API做一些事情,並將Python解釋器嵌入到C程序中,以便將未加密的Python只提供給解釋器而不是內存,而不是磁盤上的文件。

請注意,這些方案仍然相對容易解決,如果您想要提供可導入的Python模塊(而不是整個程序),則完全不起作用。這就是爲什麼我不希望找到任何人已經爲你寫了一個工具來做到這一點。

+0

+1的答案,即使它不提供的現有工具的名稱/鏈接 – gecco

2

我不會去混淆的方法,如果我是你,而是調查替代方法來運送可執行的二進制文件,而不是(字節)代碼。已知我

工具(有可能是幾個人):

我不知道這些工具是如何防黑客的,但我認爲值得一看。

編輯:Damnit,錯過了Python 3的一部分。這有點難以幫助,因爲你不會寫關於產品本身的任何東西(操作系統,圖形用戶界面等)。如果它也可以是Python 2代碼,但是您已經將所有代碼寫入了Python 3,我建議使用3to2

+0

你給了py2c頁面顯示沒有證據,我其實可以找到項目現有的和工作的,並且據我所知,一個*完全一般的* Python-to-C轉換器**不能存在於任何意義上。我相信所有其他人只是將Python字節碼的Python解釋器與單個可執行文件捆綁在一起,這對於恢復源代碼而言只不過是傳送.pyc文件而已。 – Ben

2

有沒有辦法以任何有用的方式混淆Python代碼,沒有理由爲什麼你會想。您似乎想要混淆代碼以保護它。這是完全沒有意義的,因爲你可以只運送.pyc文件,這意味着你根本不運送源代碼。不僅僅只有.pyc文件纔會幫你,因爲有.pyc文件的解壓縮器。

如果你的程序相當簡單並且編碼合理,用cx-freeze,py2exe等創建可執行文件,這意味着.pyc文件最終在可執行文件內部,因此難以找到,因此它也是不太明顯的是你使用Python,所以這可能會有所幫助。但更重要的是,它可能會使用戶的安裝變得更簡單。他們喜歡那樣。

如果你真的想以有用的方式混淆你的代碼,把它轉換爲使用Cython,它將創建你可以編譯的C文件。這也將加速該計劃。然而,Cython不完全兼容Python,因此您可能需要進行更改。

而且我知道你不想聽到這個,但我會說,它爲他人謀取利益:

所有這一切當然是愚蠢和錯誤的。開源對你有好處。真。你不應該保護你的代碼,你應該儘可能多的眼睛和手。

請相信我:您的主要擔心應該是獲得更多的用戶,而不是更少的海盜。通過讓軟件更好,而不是更糟糕,您可以獲得更多用戶。開源將有助於此。

+0

我完全同意你所說的一切......如果你的軟件針對開源社區和/或私人用戶。但是,對於分配給已知客戶羣的商業應用程序,這是不正確的... – gecco

+0

@gecco:是的,對於商業應用程序來說也是如此。我在腦海中寫下了商業應用的答案。事實上,對於分發給已知客戶羣的應用程序來說,這是非常正確的,因爲你知道誰有副本,這樣你就可以有一小部分人可以首先製作副本,從而更容易找到罪魁禍首。無論如何,混淆代碼無助於保護您的應用程序免受盜版。 –

+0

[在biicode博客](http://blog.biicode.com/bii-internals-compiling-your-python-application-with-cython/)中有一個關於如何使用Cython的教程,如@LennartRegebro建議的 – hithwen

0

隱藏您的代碼的最佳方式是不釋放它。

廣告服務 - 您收到他們的數據,然後返回處理的數據。傳輸可以通過網絡,電子郵件,DHL,鴿子,電話,引力脈衝...

+0

並不是所有的軟件都可以作爲服務來分發... – gecco

+0

我承認實用性的滑動規模。您是否認爲SAS和代碼安全性之間的權衡會導致您此時不想採用SAS路線? – Paddy3118

1

Pyminifier是一個Python代碼縮小器,混淆器和壓縮器。

該工具適用於Python的3

+1

這個項目的確看起來真的很不錯,只是最後一次提交是在2015年6月,許多問題都是開放的。 – NicolasWebDev