最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

關(guān)于Python代碼混淆和加密技術(shù)

 更新時間:2023年07月27日 10:16:09   作者:小白地瓜  
這篇文章主要介紹了關(guān)于Python代碼混淆和加密技術(shù),Python進(jìn)行商業(yè)開發(fā)時, 需要有一定的安全意識, 為了不被輕易的逆向還原,混淆和加密就有所必要了,需要的朋友可以參考下

引言

Python進(jìn)行商業(yè)開發(fā)時, 需要有一定的安全意識, 為了不被輕易的逆向還原. 混淆和加密就有所必要了.

代碼混淆是將程序中的代碼以某種規(guī)則轉(zhuǎn)換為難以閱讀和理解的代碼的一種行為。

1. 混淆

  • 減少py文件的注釋、對代碼順序進(jìn)行重排:混淆力度不夠
  • 設(shè)計規(guī)則編寫腳本或者使用現(xiàn)成的混淆工具,將對應(yīng)的變量、函數(shù)、文件名、類名等進(jìn)行不同程度的無意義的字符串替換:
    單個文件或許可行,整個項目處理起來問題較多,涉及模塊引用,配置引用的問題(配置無法同步混淆,到時讀取出錯)

2. 加密

  • 只發(fā)行 pyc: 可以用現(xiàn)成工具復(fù)原
  • 用打包 exe 打包: 可以用現(xiàn)成工具復(fù)原
  • cython: 要加密單一的模塊 /特制算法很有效,不過對很多模塊的源代碼容易出問題
  • 改字節(jié)碼的 python: 未丟失信息,容易復(fù)原

PYC文件

介紹

pyc是一種二進(jìn)制文件,是由py文件經(jīng)過編譯后,生成的文件,是一種byte code,py文件變成pyc文件后,加載的速度有所提高。

而且pyc是一種跨平臺的字節(jié)碼,是由python的虛擬機來執(zhí)行的,這個是類似于JAVA或者.NET的虛擬機的概念。

pyc的內(nèi)容,是跟python的版本相關(guān)的,不同版本編譯后的pyc文件是不同的。

編寫腳本

生成 pyc_create.py 文件 注:43行 的 ‘cpython-38’ 需要根據(jù)python版本來改,3.8為38 3.7為37

import os
import sys
import shutil
from py_compile import compile
# print "argvs:",sys.argv
if len(sys.argv) == 3:
    comd = sys.argv[1]  # 輸入的命令
    path = sys.argv[2]  # 文件的地址
    if os.path.exists(path) and os.path.isdir(path):
        for parent, dirname, filename in os.walk(path):
            for cfile in filename:
                fullname = os.path.join(parent, cfile)
                if comd == 'clean' and cfile[-4:] == '.pyc':
                    try:
                        os.remove(fullname)
                        print("Success remove file:%s" % fullname)
                    except:
                        print("Can't remove file:%s" % fullname)
                if comd == 'compile' and cfile[-3:] == '.py':  # 在這里將找到的py文件進(jìn)行編譯成pyc,但是會指定到一個叫做__pycache__的文件夾中
                    try:
                        compile(fullname)
                        print("Success compile file:%s" % fullname)
                    except:
                        print("Can't compile file:%s" % fullname)
                if comd == 'remove' and cfile[-3:] == '.py' and cfile != 'settings.py' and cfile != 'wsgi.py':
                    try:
                        os.remove(fullname)
                        print("Success remove file:%s" % fullname)
                    except:
                        print("Can't remove file:%s" % fullname)
                if comd == 'copy' and cfile[-4:] == '.pyc':
                    parent_list = parent.split("\\")[:-1]
                    parent_up_path = ''
                    for i in range(len(parent_list)):
                        parent_up_path += parent_list[i] + '\\'
                    shutil.copy(fullname, parent_up_path)
                    print('update the dir of file successfully')
                if comd == 'cpython' and cfile[-4:] == '.pyc':
                    cfile_name = ''
                    cfile_list = cfile.split('.')
                    for i in range(len(cfile_list)):
                        if cfile_list[i] == 'cpython-38':
                            continue
                        cfile_name += cfile_list[i]
                        if i == len(cfile_list) - 1:
                            continue
                        cfile_name += '.'
                    shutil.move(fullname, os.path.join(parent, cfile_name))
                    print('update the name of the file successfully')
    else:
        print("Not an directory or Direcotry doesn't exist!")
else:
    print("Usage:")
    print("\tpython compile_pyc.py clean PATH\t\t#To clean all pyc files")
    print("\tpython compile_pyc.py compile PATH\t\t#To generate pyc files")

以此執(zhí)行腳本命令 注?。?!備份代碼

C:\Users\周天震\PycharmProjects\Confuse 為我的項目目錄。

1、生成pyc文件

python pyc_create.py compile C:\Users\周天震\PycharmProjects\Confuse

2、移動pyc文件

python pyc_create.py copy C:\Users\周天震\PycharmProjects\Confuse

3、刪除py文件

python pyc_create.py remove C:\Users\周天震\PycharmProjects\Confuse

4、修改文件名稱

生成的pyc文件樣式為:manage.cpython-38.pyc 需要修改為 manage.pyc

python pyc_create.py cpython C:\Users\周天震\PycharmProjects\Confuse

檢查項目

在這里插入圖片描述

到此這篇關(guān)于關(guān)于Python代碼混淆和加密技術(shù)的文章就介紹到這了,更多相關(guān)Python代碼混淆和加密內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python中的切片函數(shù)Slice詳解

    Python中的切片函數(shù)Slice詳解

    這篇文章主要介紹了Python中的切片函數(shù)Slice詳解,切片是對有序的集合而言,意思從有序集合里提取數(shù)據(jù)構(gòu)成子集集合,給定提取的起點start、終點end以及方向上的步長step,能否切出非空子集,起點start需能沿步長方向上到達(dá)終點,需要的朋友可以參考下
    2023-09-09
  • Python Flask結(jié)合前端Fetch搞定表單提交和頁面刷新

    Python Flask結(jié)合前端Fetch搞定表單提交和頁面刷新

    本文帶你深入理解現(xiàn)代前端 Fetch API 的工作原理,并手把手教你如何與 Flask 后端優(yōu)雅結(jié)合,實現(xiàn)無刷新登錄、數(shù)據(jù)動態(tài)增刪改查等交互,感興趣的小伙伴可以了解下
    2025-12-12
  • Python檢測生僻字的實現(xiàn)方法

    Python檢測生僻字的實現(xiàn)方法

    最近在工作中碰到一個需求,要求檢測字段是否包含生僻字以及一些非法字符如 ~!@#$%^&*。通過網(wǎng)上的查找資料解決了,現(xiàn)在將解決的過程和示例代碼分享給大家,有需要的可以參考借鑒。下面來一起看看吧。
    2016-10-10
  • python系列 文件操作的代碼

    python系列 文件操作的代碼

    這篇文章主要介紹了python系列 文件操作的代碼,主要是使用了python的open、read、write是些打開、讀取、寫入,導(dǎo)入numpy主要是用到數(shù)組操作,需要的朋友可以參考下
    2019-10-10
  • Python最好的日期處理庫pendulum的使用指南

    Python最好的日期處理庫pendulum的使用指南

    關(guān)于日期處理,Python?提供了很多的庫,比如標(biāo)準(zhǔn)庫?datetime、第三方庫?dateutil、arrow?等等。本文將為大家介紹一個小編最喜歡的庫?pendulum,用起來可以說非常的方便,任何對日期的操作它都能滿足
    2022-07-07
  • Python實現(xiàn)向好友發(fā)送微信消息優(yōu)化篇

    Python實現(xiàn)向好友發(fā)送微信消息優(yōu)化篇

    利用python可以實現(xiàn)微信消息發(fā)送功能,怎么實現(xiàn)呢?你肯定會想著很復(fù)雜,但是python的好處就是很多人已經(jīng)把接口打包做好了,只需要調(diào)用即可,今天通過本文給大家分享使用?Python?實現(xiàn)微信消息發(fā)送的思路代碼,一起看看吧
    2022-06-06
  • python實現(xiàn)將多個文件分配到多個文件夾的方法

    python實現(xiàn)將多個文件分配到多個文件夾的方法

    今天小編就為大家分享一篇python實現(xiàn)將多個文件分配到多個文件夾的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • Python中使用PyQt把網(wǎng)頁轉(zhuǎn)換成PDF操作代碼實例

    Python中使用PyQt把網(wǎng)頁轉(zhuǎn)換成PDF操作代碼實例

    這篇文章主要介紹了Python中使用PyQt把網(wǎng)頁轉(zhuǎn)換成PDF操作代碼實例,本文直接給出實現(xiàn)代碼,需要的朋友可以參考下
    2015-04-04
  • Anaconda多環(huán)境多版本python配置操作方法

    Anaconda多環(huán)境多版本python配置操作方法

    下面小編就為大家?guī)硪黄狝naconda多環(huán)境多版本python配置操作方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • python操作redis數(shù)據(jù)庫的三種方法

    python操作redis數(shù)據(jù)庫的三種方法

    這篇文章主要介紹了python操作redis數(shù)據(jù)庫的三種方法,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2020-09-09

最新評論

绍兴市| 白城市| 晋州市| 镇原县| 申扎县| 丹江口市| 宁化县| 阿图什市| 枝江市| 阜城县| 东乌珠穆沁旗| 五河县| 扬中市| 孝感市| 同仁县| 双江| 庐江县| 大竹县| 平舆县| 越西县| 高清| 阜南县| 抚宁县| 仁寿县| 宁德市| 都昌县| 前郭尔| 凉山| 永靖县| 涞水县| 广宗县| 河池市| 宜章县| 郑州市| 上高县| 哈巴河县| 龙山县| 彭水| 十堰市| 晴隆县| 巩义市|