自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

使用Pyarmor保護Python腳本不被反向工程

譯文
開發(fā) 前端
您可能不希望關(guān)鍵的Python腳本被惡意攻擊者進行反向工程。本文介紹了如何保護它的方法。

譯者 | 布加迪

審校 | 重樓

Python可讀性強,使用廣泛。雖然這種可讀性有利于協(xié)作,但增加了未授權(quán)訪問和濫用的風(fēng)險。如果未采取適當?shù)谋Wo,競爭對手或惡意攻擊者可以復(fù)制您的算法和專有邏輯,這將對軟件的完整性和用戶的信任產(chǎn)生負面影響。

實施可靠的安全措施(比如混淆和許可證驗證可以增強軟件防范潛在威脅的能力。保護Python腳本不僅僅是一種實踐,還是確保創(chuàng)新的保密性和在數(shù)字環(huán)境中保持用戶信任的關(guān)鍵策略。

解Pyarmor

Pyarmor是一個命令行庫。它有助于保護和混淆Python腳本和軟件包。它將原始Python代碼轉(zhuǎn)換一種更難以理解的形式,同時保持其功能?;煜^程將變量、函數(shù)和類重命名為非描述性名稱,還刪除注釋并重構(gòu)代碼。這使得代碼難以被反向工程、篡改或復(fù)制。

Pyarmor可以保護單個Python腳本和整個軟件包,甚至可以代碼添加許可驗證。

安裝Pyarmor庫

Pyarmor在Python軟件包索引PyPI可用。使用pip安裝,只需運行以下命令

pip install pyarmor

不必非得將Pyarmor安裝在托管項目的同一目錄中您可以將其安裝在計算機上的任何位置,能夠保護來自任何目錄的任何Python腳本。

然而,如果您希望運行受保護的腳本,不必在目標機器上安裝Pyarmor,則需要將其安裝在托管項目的同一目錄中。這是由于受保護的腳本將包含對Pyarmor運行時環(huán)境的引用,為了運行腳本,需要Pyarmor運行時環(huán)境

保護單個Python腳本

使用Pyarmor保護單個腳本很簡單。添加兩個數(shù)字的下列腳本將充當示例。

def add_numbers(num1, num2):
    result = num1 + num2
 print("The sum of {} and {} is: {}".format(num1, num2, result))


# Example usage
num1 = float(input("Enter the first number: "))
num2 = float(input("Enter the second number: "))
add_numbers(num1, num2)

使用命令行導(dǎo)航到已安裝Pyarmor的目錄。然后運行以下命令,對腳本進行加密和模糊處理。將main.py換腳本的名稱。

pyarmor gen --output dist main.py

運行該命令后,Pyarmor將創(chuàng)建一個名為dist的新文件夾,其中含您的受保護腳本。

打開受保護的腳本以查看其內(nèi)容。

面的屏幕截圖顯示了Pyarmor對簡單的加法腳本進行模糊和加密處理后的輸出?,F(xiàn)在,您無法僅通過查看腳本來判斷功能。

要運行受保護的腳本,打開終端或命令提示,并導(dǎo)航到含dist目錄的位置。然后使用以下命令運行腳本

python dist/main.py

將main.py換成您腳本的名稱。不用混淆處理,腳本應(yīng)該可以按原狀運行。全面測試它,以確保所有函數(shù)都按預(yù)期工作。

保護整個Python軟件包

軟件包幾個模塊或數(shù)百個模塊,這取決于用途。單獨維護每個模塊可能會很煩人。幸,Pyarmor能夠保護整個軟件包,而不必單獨指定每個模塊。

假設(shè)有一個名為sample_package的簡單Python軟件包,其結(jié)構(gòu)如下

sample_package/
|-- __init__.py
|-- module1.py
|-- module2.py

可以創(chuàng)建任意數(shù)量的模塊。

要加密和混淆軟件包,打開終端或命令提示,并導(dǎo)航到軟件包所在的目錄。然后執(zhí)行以下命令

pyarmor gen -O dist -r -i sample_package

將sample_package換成您軟件包的名稱。該命令將加密和模糊軟件包目錄,并將受保護的輸出保存到dist目錄。像使用其他任何Python軟件包一樣使用受保護的軟件包。

比如說,要使用上面的示例軟件包,在dist目錄下創(chuàng)建一個新腳本

from my_package import module1, module2

module1.say_hello()
module2.do_something()

您運行代碼時,軟件包應(yīng)該像保護它之前一樣運行。

控制對腳本的訪問

您可能希望限制用戶運行腳本的時間比如在試用期間。

要限制腳本運行的時間,請在對腳本進行混淆處理時使用以下命令。

pyarmor gen -O dist -e 30 main.py

將30換您希望腳本處于活動狀態(tài)的天數(shù)。也可以用一個確切的日期來代替。幾天過后,腳本將過期。

您可以通過設(shè)置過去的日期來測試此功能。這將使運行腳本拋出一個錯誤。使用以下命令用過期日期腳本進行混淆處理:

pyarmor gen -O dist -e 2022-01-01 main.py

然后運行受保護的腳本。

錯誤顯示許可證密鑰已過期,因此腳本無法運行。

兼顧安全與效率

雖然Pyarmor提供了強大的混淆機制來增強代碼的安全性,但兼顧安全措施維護軟件的效率和性能非常重要。可以這

  • 評估是否需要混淆如果您的軟件涉及專有算法、敏感數(shù)據(jù)或獨特的業(yè)務(wù)邏輯,混淆處理大有益。然而,針對基本上沒有知識產(chǎn)權(quán)問題的開源腳本,安全性能之間的權(quán)衡更傾向于效率。
  • 評估性能影響由于針對代碼采取的額外操作和轉(zhuǎn)換,混淆帶來了額外的運行開銷。這種影響對于小腳本來說可以忽略不計,但是對于大型項目來說比較明顯。您應(yīng)該仔細評估混淆對性能的影響,并進行測試,以確保軟件保持響應(yīng)能力和效率。
  • 進行定期更新和維護定期更新混淆的代碼、許可證和安全機制,以防止?jié)撛诘穆┒础?/span>還要考慮盡量減少對用戶造成的干擾。

有人能破解混淆處理的代碼嗎?

軟件破解是指解除軟件應(yīng)用程序的復(fù)制保護或許可機制的行為,目的是為了無需付費,未經(jīng)授權(quán)訪問軟件的全部功能。重需要注意的是混淆處理軟件并不能完全保護它避免破解。

只要有足夠的決心和資源,就可以破解混淆處理的代碼。這就需要應(yīng)該定期進行更新和維護,以修補任何可疑的漏洞。

原文標題:Safeguard Your Python Scripts Against Reverse Engineering With Pyarmor,作者:Denis Kuria


責(zé)任編輯:華軒 來源: 51CTO
相關(guān)推薦

2022-09-09 08:16:44

PyArmorpython

2011-08-22 14:04:52

2009-08-07 18:30:35

2012-11-07 15:24:01

2017-06-08 09:16:09

2021-07-28 13:40:57

區(qū)塊鏈數(shù)據(jù)技術(shù)

2017-06-03 15:39:56

2021-09-05 10:33:58

關(guān)基保護數(shù)據(jù)安全法網(wǎng)絡(luò)安全

2009-02-28 14:23:02

2024-07-30 08:16:18

Python代碼工具

2013-08-30 09:49:39

硬盤硬盤保護

2020-02-04 14:55:21

機器人人工智能系統(tǒng)

2019-11-20 10:43:52

黑客網(wǎng)絡(luò)安全軟件安全

2020-09-03 14:01:43

騰訊微信微信支付

2015-04-15 13:10:04

PowerDesign反向工程

2025-02-04 10:05:16

SpringForbiddenReferer?

2023-06-28 00:05:44

人工智能聊天機器人ChatGPT

2023-09-04 14:50:49

2021-11-26 09:00:00

數(shù)據(jù)庫數(shù)據(jù)集工具

2022-12-06 17:32:18

點贊
收藏

51CTO技術(shù)棧公眾號