2009-01-24 171 views
6

如果真的有一個'最好'的方法,是什麼是發佈python應用程序的最佳方式,並確保人們不能(容易)逆向工程算法/安全/一般工作?Python應用程序:你可以保護你的代碼嗎?

如果沒有「最佳」方式,有哪些不同的選擇?

背景: 我喜歡使用Python進行編碼,並且很想用它發佈更多的應用程序。我想知道的一件事是人們可能會繞過我放入的任何授權代碼,或者能夠剝離我的整個源代碼。我聽說過Py2Exe和類似的應用程序,但我很好奇,如果有這樣做的「首選」方式,或者這個問題只是生活中的一個事實。

+0

編譯通常是要走的路,但這是PHP(Zend的東西)。我想知道Py是否有其他保障設施? – willoller 2009-01-24 00:43:13

+0

這是使用Perl,PHP,Python等發佈產品的缺點。真的沒有太多可以做的事情。 – cletus 2009-01-24 01:02:45

+0

Dupe? http://stackoverflow.com/questions/261638/how-do-i-protect-python-code – 2009-01-24 03:00:27

回答

12

安全通過默默無聞從來沒有工程。如果您必須使用專有許可證,請通過法律強制執行此許可證,而不是進行一半的混淆嘗試。

如果您擔心他們學習您的安全(例如密碼學)算法,同樣適用。即使該算法是完全已知的,真正有用的安全算法(如AES)也是安全的。

3

你正在尋找的詞是混淆。快速谷歌顯示:

http://www.lysator.liu.se/~astrand/projects/pyobfuscate/

但:

a)若侵犯著作權成爲一個問題,那麼法律就在你身邊(只要您在所有文件中的相應的版權聲明) 。

b)如果您對此有興趣,也可以在開源應用程序上獲利。如果你想讓你的知識產權真正安全,那麼唯一的答案就是不要讓任何人把它放在第一位:把你的應用程序寫成一個網絡應用程序,(我推薦使用django),只有你的應用程序虛擬主機提供商可以訪問您的代碼。

7

即使您使用像C#或Java這樣的編譯語言,人們也可以執行逆向工程,只要他們具有動力和技術上的能力。混淆並不是對此的可靠保護。

您可以禁止反向工程到您的軟件的最終用戶許可協議。大多數專有公司都這樣做。但是這並不能防止違規,它只會給你法律追索權。

最好解決方案是提供產品和服務,其中用戶的閱讀代碼的訪問不會損害您的產品或服務的銷售能力。將您的業務建立在提供的服務基礎上,或定期更新數據,而不是代碼本身。

示例:Slashdot實際上使其網站的代碼可用。這是否會損害他們運行網站的能力?

另一個補救措施是設置你的價格點,以便盜取你的代碼比單純購買使用你的產品的合法許可證更加昂貴。 Joel Spolsky在他的文章和播客中提出了這個建議。

1

py2exe

在窗口py2exe是航運代碼的一種方式給最終用戶,py2exe捆綁了Python解釋器,必要的DLL和你的代碼編譯成字節碼蟒蛇。

這裏有蟒蛇字節碼指令得到一些線索是什麼樣子:

http://www.python.org/doc/2.5.2/lib/bytecodes.html

或者你可以使用DIS拆卸一些PYC /杓文件。

因此,使用py2exe類似於分發編譯的python(pyc/pyo)文件。

Shedskin C++編譯器

的Shedskin編譯器編譯蟒的一個子集,以C++,你可以使用任何編譯器編譯成本機代碼。

pypy

我不知道PyPy太多。根據他們的文檔,Pypy能夠生成C代碼。

相關問題