[發(fā)明專利]一種基于模塊鉤子的Python字節(jié)碼文件保護方法有效
| 申請?zhí)枺?/td> | 201611123379.0 | 申請日: | 2016-12-08 |
| 公開(公告)號: | CN106599628B | 公開(公告)日: | 2019-04-02 |
| 發(fā)明(設計)人: | 顧乃杰;陳悟;王小強;王巖 | 申請(專利權)人: | 合肥康捷信息科技有限公司 |
| 主分類號: | G06F21/14 | 分類號: | G06F21/14 |
| 代理公司: | 安徽省合肥新安專利代理有限責任公司 34101 | 代理人: | 陸麗莉;何梅生 |
| 地址: | 230000 安徽省合肥市望江西路和創(chuàng)新大*** | 國省代碼: | 安徽;34 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 基于 模塊 鉤子 python 字節(jié) 文件 保護 方法 | ||
1.一種基于模塊鉤子的Python字節(jié)碼文件保護方法,是應用于開發(fā)者端和客戶端之間;所述客戶端利用Python解釋器執(zhí)行所述開發(fā)者端提供的Python應用程序的主程序;所述應用程序中包含所述主程序和若干個Python字節(jié)碼文件;所述主程序在執(zhí)行過程中按默認方式導入若干個Python字節(jié)碼文件,從而得到所述Python應用程序的執(zhí)行結果;其特征是,
所述Python字節(jié)碼文件保護方法是按如下步驟進行:
步驟1、對所述開發(fā)者端提供的Python字節(jié)碼文件進行加密處理,得到加密后的Python字節(jié)碼文件;
步驟1.1、使用隨機數(shù)發(fā)生器生成對稱密鑰K;
步驟1.2、根據所述對稱密鑰K,使用對稱加密算法對所述Python字節(jié)碼文件進行加密,得到密文F;
步驟1.3、在所述密文F的前端添加識別標簽,得到標簽密文F′;
步驟1.4、利用Shamir(t,n)門限方案將所述對稱密鑰K分解成n份影子信息;并將所述n份影子信息隨機打亂后寫入所述密文F和識別標簽之間,從而得到混合密鑰的密文F*作為加密后的Python字節(jié)碼文件;
步驟2、設計Python模塊鉤子及其對應的注冊腳本;
步驟2.1、根據所述Python模塊鉤子的協(xié)議規(guī)定,定義查找器為包含有查找所述混合密鑰密文F*功能的find_module函數(shù)的類;定義加載器為包含有加載混合密鑰密文F*功能的load_module函數(shù)的類;定義模塊鉤子的注冊函數(shù)為能將實例化的查找器類插入到查找器的存儲列表sys.meta_path中的函數(shù);
由所述查找器、加載器和模塊鉤子的注冊函數(shù)組成所述Python模塊鉤子;
步驟2.2、定義一個sitecustomize.py文件,在所述sitecustomize.py文件中添加導入所述Python模塊鉤子的語句,再添加調用所述模塊鉤子的注冊函數(shù)的語句,從而得到所述Python模塊鉤子所對應的注冊腳本;
步驟3、在所述客戶端的Python解釋器的源碼文件中添加所述Python模塊鉤子及其對應的注冊腳本:
步驟3.1、利用Cython工具將所述Python模塊鉤子轉換為.c文件,再編譯成.so共享庫文件后,將所述.so共享庫文件復制到Python解釋器源碼文件中的site-package目錄下;
步驟3.2、將所述Python模塊鉤子所對應的注冊腳本復制到所述Python解釋器的源碼文件中的site-package目錄下,從而得到新的Python解釋器的源碼文件;
步驟4、所述開發(fā)者端將主程序和加密后的Python字節(jié)碼文件發(fā)布給所述客戶端,并將所述新的Python解釋器的源碼文件提供給所述客戶端;
步驟5、所述客戶端對添加Python模塊鉤子及其對應的注冊腳本后的Python解釋器的源碼文件進行編譯,得到編譯后的Python解釋器;
步驟6、所述客戶端利用編譯后的Python解釋器執(zhí)行所述主程序;
步驟6.1、編譯后的Python解釋器執(zhí)行所述Python模塊鉤子的注冊腳本,從而在所述sys.meta_path列表中插入所述實例化的查找器類,完成所述Python模塊鉤子的注冊;
步驟6.2、在主程序在執(zhí)行過程中導入若干個加密后的Python字節(jié)碼文件時,觸發(fā)所述sys.meta_path列表中實例化的查找器類;
步驟6.3、所述查找器利用find_module函數(shù)對加密后的Python字節(jié)碼文件進行判斷,若加密后的Python字節(jié)碼文件為混合密鑰的密文F*,則利用所述加載器的load_module函數(shù)對所述混合密鑰的密文F*進行加載后,執(zhí)行步驟6.4;否則,按照默認方式進行加載和導入;
步驟6.4、所述加載器的load_module函數(shù)在所述混合密鑰密文F*中獲取隨機打亂后的n份影子信息,并在n份影子信息中隨機獲取t份影子信息后,利用Shamir(t,n)門限方案還原出對稱密鑰K;
步驟6.5、所述加載器利用所述對稱密鑰述K在內存中對所述密文F進行解密,得到所述Python字節(jié)碼文件;
步驟6.6、所述加載器在內存中提取所述Python字節(jié)碼文件中的代碼對象codeobject,從而完成所述加密后的Python字節(jié)碼文件的加載和導入。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于合肥康捷信息科技有限公司,未經合肥康捷信息科技有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業(yè)授權和技術合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201611123379.0/1.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:基于虛擬機保護應用安全的方法及裝置
- 下一篇:一種安卓應用程序加固方法及裝置
- 一種基于Python語言的網格系統(tǒng)實現(xiàn)方法
- 一種基于模塊鉤子的Python字節(jié)碼文件保護方法
- 一種通過加密Python明文源碼token的知識產權保護系統(tǒng)
- 一種創(chuàng)建Python沙盒環(huán)境的方法及電子設備
- 圖形化Python編程交互方法、系統(tǒng)及電子設備
- 一種基于Ambari實現(xiàn)Python組件管理的方法
- 一種基于Java自動調用Python腳本的方法
- Python與Scratch交互式編程方法及電子設備
- 一種 Python 源碼安全防護的實現(xiàn)方法及系統(tǒng)
- 一種生成python項目結構圖的方法、系統(tǒng)及介質





