干貨拱烁!分享解決python腳本中涉及賬號(hào)密碼泄露的方案(pyarmor)


Python加密腳本的通用方案介紹

最近想要解決關(guān)于python源碼加密的問(wèn)題暇番,相信這也是許多公司的共性問(wèn)題霜定。簡(jiǎn)單地說(shuō)就是好多測(cè)試運(yùn)維腳本中直接編寫了連接各種服務(wù)器的代碼(包括應(yīng)用服務(wù)器档悠,數(shù)據(jù)庫(kù)服務(wù)器等等),這是非常不安全的做法望浩!看了一下辖所,目前網(wǎng)上大概的解決方案如下:

1.把.py文件轉(zhuǎn)換為.pyc文件(比較容易破解)

2.將.py編譯為.c文件,再將.c文件編譯為.so

3. 把py打包成在某一平臺(tái)的可執(zhí)行文件磨德,例如生成exe文件

4.代碼混淆加密(今天重點(diǎn)介紹)

本文講述如何通過(guò)代碼混淆加密來(lái)解決這個(gè)問(wèn)題

核心思路

把連接各種服務(wù)器的代碼統(tǒng)一寫到一個(gè)py文件中缘回,并對(duì)外提供訪問(wèn)api

把步驟1中的py代碼混淆加密

無(wú)需加密的腳本中通過(guò)步驟1中的api,進(jìn)行服務(wù)器的連接相關(guān)操作

在網(wǎng)上找到了一款比較優(yōu)秀的工具pyarmor可以實(shí)現(xiàn)這一需求典挑,github star 目前1.8k

https://github.com/dashingsoft/pyarmor

pyarmor基礎(chǔ)使用介紹

pyarmor是可以保護(hù) Python 腳本的工具酥宴,能夠加密 Python 腳本,保護(hù)運(yùn)行時(shí)刻的 Python 代碼不被泄露您觉,設(shè)置加密腳本的有效期限拙寡,綁定加密腳本到硬盤、網(wǎng)卡等硬件設(shè)備琳水。

基本使用也非常的方便

最簡(jiǎn)單的安裝方式:pip install pyarmor

查看版本號(hào):

pyarmor --version肆糕,成功在終端看到版本號(hào)即安裝成功,目前版本7.7.0在孝。

使用命令 obfuscate 用來(lái)加密腳本诚啃。最常用的一種情況是切換到腳本main.py所在的路徑,然后執(zhí)行私沮。加密:

pyarmor obfuscate main.py始赎,PyArmor 會(huì)加密 main.py 相同目錄下面的所有 *.py 文件到dist文件夾中。

運(yùn)行加密代碼:

cd dist之后仔燕,python main.py即可造垛。

我遇到安裝pyaramor的大坑

接下來(lái)我要介紹一下安裝pyaramor時(shí),我遇到的大坑涨享,在這里分享出來(lái)筋搏,幫助看到文章的同學(xué)節(jié)省時(shí)間調(diào)試厕隧!

有的同學(xué)如果用ide查看加密文件的源碼可能會(huì)發(fā)現(xiàn)奔脐,無(wú)法識(shí)別pyarmor_runtime 和__pyaramor__的問(wèn)題,如下圖:

如果大家想解決這個(gè)問(wèn)題吁讨,就會(huì)遇到大坑髓迎!接下來(lái)我把自己的血淚史介紹給大家:

看到上面的截圖,相信很多人很自然地會(huì)去重新安裝包pytransform建丧,然后大家又會(huì)遇到下面這個(gè)問(wèn)題

Preparing metadata (setup.py) ... error

error: subprocess-exited-with-error

× python setup.py egg_info did not run successfully.

│ exit code: 1

╰─> [7 lines of output]

Traceback (most recent call last):

File "<string>", line 36, in <module>

File "<pip-setuptools-caller>", line 34, in <module>

File "C:\Users\XK-ADMIN\AppData\Local\Temp\pip-install-cnikyffq\mdanalysis_eeb11174b9ff49c4a5b48e03d806aa22\setup.py", line 58

print "MDAnalysis requires Python 2.6 or better. Python %d.%d detected" % \

^

SyntaxError: Missing parentheses in call to 'print'. Did you mean print("MDAnalysis requires Python 2.6 or better. Python %d.%d detected" % \)?

[end of output]

note: This error originates from a subprocess, and is likely not a problem with pip.

error: metadata-generation-failed

× Encountered error while generating package metadata.

╰─> See above for output.

note: This is an issue with the package mentioned above, not pip.

hint: See above for details.

想要解決上面的問(wèn)題排龄,需要手動(dòng)下載pytransform-0.2.3.2.tar.gz,然后修改配置文件后手動(dòng)重新打包翎朱,步驟如下:

解壓壓縮包橄维,修改setup.py文件

修改requires=['MDAnalysis==0.8.1']

信息如下:

install_requires=['MDAnalysis']

接下來(lái)執(zhí)行如下命令:

python setup.py build

python setup.py install

注意:安裝時(shí)可能出現(xiàn)類似報(bào)錯(cuò):MDAnalysis requires Python 3.8 or better. Python 3.7 detected

也就是說(shuō)我們的python版本不能低于3.8尺铣!然后大家又會(huì)去升級(jí)py3.8!

看到這里我來(lái)告訴大家:上面這些步驟完全不需要U琛A莘蕖!>捍ā店溢!

應(yīng)該是新版本的pyarmor做了相關(guān)優(yōu)化!

我們只需要老老實(shí)實(shí)地執(zhí)行 pip install pyarmor 即可委乌,也不需要升級(jí)py到3.8

我親自嘗試床牧,python 3.7.4和pyarmor 7.7.0 是完成可行的。

pyarmor完成腳本加密實(shí)戰(zhàn)

大家只需按照以下步驟即可完成對(duì)需要的腳本進(jìn)行加密然后進(jìn)行調(diào)用的過(guò)程:

1.pyarmor obfuscate 你的py腳本.py遭贸。執(zhí)行后會(huì)在當(dāng)前目錄下生成一個(gè)dist目錄如下圖戈咳,當(dāng)前目錄下的py文件是沒(méi)有被加密的

2.進(jìn)入dist目錄,打開(kāi)py文件革砸,如下:

這個(gè)文件是完全可以直接通過(guò)命令:python sql_test.py 直接運(yùn)行的除秀!

3.如果大家想通過(guò)其他非加密的py腳本調(diào)用sql_test.py中的函數(shù),也非常方便算利!

首先把加密的py腳本拷貝到dist目錄

然后直接運(yùn)行調(diào)用腳本册踩,即下圖中的call_script.py即可

實(shí)測(cè)可以正常運(yùn)行!原創(chuàng)不易效拭,如果文章幫到了你暂吉,勞煩點(diǎn)贊轉(zhuǎn)發(fā)!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末缎患,一起剝皮案震驚了整個(gè)濱河市慕的,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌挤渔,老刑警劉巖肮街,帶你破解...
    沈念sama閱讀 217,734評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異判导,居然都是意外死亡嫉父,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門眼刃,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)绕辖,“玉大人,你說(shuō)我怎么就攤上這事擂红∫羌剩” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 164,133評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)树碱。 經(jīng)常有香客問(wèn)我肯适,道長(zhǎng),這世上最難降的妖魔是什么赴恨? 我笑而不...
    開(kāi)封第一講書人閱讀 58,532評(píng)論 1 293
  • 正文 為了忘掉前任疹娶,我火速辦了婚禮,結(jié)果婚禮上伦连,老公的妹妹穿的比我還像新娘。我一直安慰自己钳垮,他們只是感情好惑淳,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,585評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著饺窿,像睡著了一般歧焦。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上肚医,一...
    開(kāi)封第一講書人閱讀 51,462評(píng)論 1 302
  • 那天绢馍,我揣著相機(jī)與錄音,去河邊找鬼肠套。 笑死舰涌,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的你稚。 我是一名探鬼主播瓷耙,決...
    沈念sama閱讀 40,262評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼刁赖!你這毒婦竟也來(lái)了搁痛?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 39,153評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤宇弛,失蹤者是張志新(化名)和其女友劉穎鸡典,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體枪芒,經(jīng)...
    沈念sama閱讀 45,587評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡彻况,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,792評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了病苗。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片疗垛。...
    茶點(diǎn)故事閱讀 39,919評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖硫朦,靈堂內(nèi)的尸體忽然破棺而出贷腕,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 35,635評(píng)論 5 345
  • 正文 年R本政府宣布泽裳,位于F島的核電站瞒斩,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏涮总。R本人自食惡果不足惜胸囱,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,237評(píng)論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望瀑梗。 院中可真熱鬧烹笔,春花似錦、人聲如沸抛丽。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,855評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)亿鲜。三九已至允蜈,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間蒿柳,已是汗流浹背饶套。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,983評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留垒探,地道東北人妓蛮。 一個(gè)月前我還...
    沈念sama閱讀 48,048評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像叛复,于是被迫代替她去往敵國(guó)和親仔引。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,864評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容