欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

關(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的虛擬機(jī)來執(zhí)行的,這個是類似于JAVA或者.NET的虛擬機(jī)的概念。

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í)行腳本命令 注?。。浞荽a

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)文章

  • 通過conda把已有虛擬環(huán)境的python版本進(jìn)行降級操作指南

    通過conda把已有虛擬環(huán)境的python版本進(jìn)行降級操作指南

    當(dāng)使用conda創(chuàng)建虛擬環(huán)境時,有時候可能會遇到python版本不對的問題,下面這篇文章主要給大家介紹了關(guān)于如何通過conda把已有虛擬環(huán)境的python版本進(jìn)行降級操作的相關(guān)資料,需要的朋友可以參考下
    2024-05-05
  • python生成隨機(jī)圖形驗證碼詳解

    python生成隨機(jī)圖形驗證碼詳解

    這篇文章主要介紹了python生成隨機(jī)圖形驗證碼詳解,具有一定參考價值,需要的朋友可以參閱。
    2017-11-11
  • Python通過調(diào)用mysql存儲過程實現(xiàn)更新數(shù)據(jù)功能示例

    Python通過調(diào)用mysql存儲過程實現(xiàn)更新數(shù)據(jù)功能示例

    這篇文章主要介紹了Python通過調(diào)用mysql存儲過程實現(xiàn)更新數(shù)據(jù)功能,結(jié)合實例形式分析了Python調(diào)用mysql存儲過程實現(xiàn)更新數(shù)據(jù)的具體步驟與相關(guān)操作技巧,需要的朋友可以參考下
    2018-04-04
  • python geopandas讀取、創(chuàng)建shapefile文件的方法

    python geopandas讀取、創(chuàng)建shapefile文件的方法

    shapefile是GIS中非常重要的一種數(shù)據(jù)類型,在ArcGIS中被稱為要素類(Feature Class),主要包括點(diǎn)(point)、線(polyline)和多邊形(polygon),本文重點(diǎn)給大家介紹python geopandas讀取、創(chuàng)建shapefile文件的方法,需要的朋友參考下吧
    2021-06-06
  • python使用正則表達(dá)式(Regular Expression)方法超詳細(xì)

    python使用正則表達(dá)式(Regular Expression)方法超詳細(xì)

    這篇文章主要介紹了python使用正則表達(dá)式(Regular Expression)方法超詳細(xì),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • Python讀取配置文件-ConfigParser的二次封裝方法

    Python讀取配置文件-ConfigParser的二次封裝方法

    這篇文章主要介紹了Python讀取配置文件-ConfigParser的二次封裝方法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • Python?pyecharts繪制折線圖詳解

    Python?pyecharts繪制折線圖詳解

    pyecharts是一個由百度開源的數(shù)據(jù)可視化,憑借著良好的交互性,精巧的圖表設(shè)計,得到了眾多開發(fā)者的認(rèn)可。本文將利用其繪制折線圖,需要的可以參考一下
    2022-04-04
  • python實現(xiàn)ping命令小程序

    python實現(xiàn)ping命令小程序

    這篇文章主要介紹了python實現(xiàn)ping命令小程序的方法,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2020-12-12
  • Python爬取某平臺短視頻的方法

    Python爬取某平臺短視頻的方法

    這篇文章主要介紹了Python爬取某平臺短視頻的方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-02-02
  • 詳解Django中 render() 函數(shù)的使用方法

    詳解Django中 render() 函數(shù)的使用方法

    這篇文章主要介紹了Django中 render() 函數(shù)的使用方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-04-04

最新評論