iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 17
0
Security

你的數據安全嗎?系列 第 17

[數據保安] python 代碼加密工具 - Nuitka

  • 分享至 

  • xImage
  •  

之前介紹過使用cython的方式將python source code 做代碼加密, 但那篇文章使用的方式過於麻煩. 這次要介紹個工具叫做Nuitka, 可將python source code 轉成執行檔或者是靜態函式庫, 使用方式非常容易.

以下是來自官網的介紹:
https://ithelp.ithome.com.tw/upload/images/20191001/201038242ZcSly7Kb7.png

  1. 安裝Nuitka 工具
pip3 install nuitka

https://ithelp.ithome.com.tw/upload/images/20191001/20103824n1rKjMw5sG.png
PS:
(0) 若不確定是不是有存在這個套件, 可以先使用pip3 search [模組名稱]搜尋
https://ithelp.ithome.com.tw/upload/images/20191001/20103824zEjrO8g8dR.png
(1) 有興趣的朋友也可以直接到Nuitka Gihub 直接clone 最新的程式碼來使用
(2) 可以使用
apt
的方式安裝, 但版本可能較舊
2. 簡單寫一個python source file

  • 命名: demo.py
  • 功能: 呼叫function main之後會顯示demo test字樣
    https://ithelp.ithome.com.tw/upload/images/20191001/20103824sVtNWhOv3Y.png
  1. 使用Nuitka 編譯原始碼
  • module (模組型態)
nuitka3 --module demo.py

https://ithelp.ithome.com.tw/upload/images/20191001/20103824NRRfhCeMbT.png
https://ithelp.ithome.com.tw/upload/images/20191001/20103824OhbpjByjGJ.png
PS: 編譯好後在當前路徑就可以看到demo.so檔案

  • standalone (執行檔型態)
nuitka2 --standalone demo.py

https://ithelp.ithome.com.tw/upload/images/20191001/20103824eVXg9vnbDy.png
https://ithelp.ithome.com.tw/upload/images/20191001/20103824WKC1541xci.png
PS: 編譯好後可以在demo.dist子目錄中看到demo可執行檔
4. 驗證檔案型態及檔案大小

* 查詢檔案型態
file demo
* 查詢檔案大小
ls -lh demo

https://ithelp.ithome.com.tw/upload/images/20191001/20103824WF8G9QJ5Sw.png
PS: 檢查檔案後發現, 使用這種編譯方式編譯出來的執行檔非常的大, 這個容量其實跟pyinstaller 所彙編出來的大小不相上下.
5. 使用ipython 驗證編譯後的模組功能
https://ithelp.ithome.com.tw/upload/images/20191001/20103824ST7FpDAW75.png
6. 完成

後話:
每種代碼加密的方式或許在實行逆向工程的時候可以增加部分難度, 但目前幾乎沒有解不開的程式碼. 只有複雜度多寡的差別而已. 筆者還是愛用先將python代碼轉成靜態的C, 再使用gcc 彙編成執行檔的作法, 雖然麻煩, 但是檔案相對小很多.

其次, 筆者討厭使用代碼混淆的方式做加密, 因為在實行逆向工程後還是很容易看到裡頭的代碼, 因故就不介紹了.


上一篇
[數據恢復] 可救回EXT3/ EXT4 檔案格式的開源工具 - extundelete
下一篇
[數據恢復] 關於檔案系統的注意事項 -- ZFS
系列文
你的數據安全嗎?30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言