NO.28 | 2017.12.29
banner
title資訊百科 友善列印>>
【新知分享】Python 開源軟體考古 - 以 Viper 為例_資通安全組 陳坤裕 工程師



想成為優秀開發者,大量閱讀開源專案程式碼是必要的。此次坤裕將分享講者閱讀開源專案時所發展與實踐之方法及技巧。內容包含降低專案複雜度、修改 module dependency 追 code 工具、專案統計數據分析、深度與廣度走訪專案程式碼。
 
此次心得已於 PyCon Taiwan 2017 分享。
演講簡報: https://docs.google.com/presentation/d/1HwBrETgmEz6-igEVaPAtQPWyuBljyFyvXtKzHLSVaMk/edit?usp=sharing
演講錄影: https://www.youtube.com/watch?v=TWpoBK1xhYU
 
 
一、為何挑選 Viper 專案與好處:
Viper 主要開發者 Claudio Guarnieri 所撰寫的程式碼以品質精良、可讀性高著稱。該作者另一知名資安專案 Cuckoo Sandbox 也亦為高品質專案。希望藉由高品質、可讀性高程式碼之導讀,使初學者提高讀 code 的意願,進而從中享受讀 code 的樂趣。坤裕平日需分析惡意程式。Viper 為分析惡意程式的 framework,開發與整合許多實用分析工具。因想了解自己每天使用之工具是如何撰寫而成,進而開始鑽研專案程式碼。

二、坤裕研究 Viper 的筆記:
(1)   以 module dependency 所建構之專案架構 - 簡報上會呈現如何建構。
(2)   專案深度走訪筆記 part1 - 將每支程式逐行解讀。
(3)   專案深度走訪筆記 part2 - 以摘要方式描述該支程式功能與特色,同時將每隻程式視為一塊樂高積木,尋找積木組合出現比例高的部分,並將組合後的功能做描述。
(4)   廣度走訪筆記 - 搭配先前以 module dependency 所建構之專案架構,定義專案每個邏輯的起點與終點,並完整走訪所有路徑之筆記。

三、使用的第三方工具:
(1)   snakefood - 視覺化 python module dependency 工具。另,在簡報中第 14 頁呈現 snakefood 修改版,使得梳理 module dependency 之效率提升。
(2)   modulegraph - 視覺化 python module dependency 工具。
(3)   pydegraph - 視覺化 python module dependency 工具。