- R2
- 第 1 天,10:50‑11:20
- 中文演講/中文投影片
- 教育
- 中階
Python 開源軟體考古 - 以 Viper 為例
想成為優秀開發者,大量閱讀開源專案程式碼是必要的。本演講將分享講者閱讀開源專案時所發展與實踐之方法及技巧。內容包含降低專案複雜度、修改 module dependency 追 code 工具、專案統計數據分析、深度與廣度走訪專案程式碼。
演講詳細內容
### 演講簡報
* [簡報連結](https://docs.google.com/presentation/d/1HwBrETgmEz6-igEVaPAtQPWyuBljyFyvXtKzHLSVaMk/edit?usp=sharing)
### 為何挑選 Viper 專案與好處
* Viper 主要開發者 Claudio Guarnieri 所撰寫的程式碼以品質精良、可讀性高著稱。該作者另一知名資安專案 Cuckoo Sandbox 也亦為高品質專案。希望藉由高品質、可讀性高程式碼之導讀,使初學者提高讀 code 的意願,進而從中享受讀 code 的樂趣。
* 講者本身職業為資安工程師,平日需分析惡意程式。Viper 為分析惡意程式的 framework,開發與整合許多實用分析工具。因想了解自己每天使用之工具是如何撰寫而成,進而開始鑽研專案程式碼。
### 講者研究 Viper 的筆記 (簡報上也可找到)
* [以 module dependency 所建構之專案架構](https://github.com/18z/viper-research/blob/master/materials/2-46a2a/viper-statistics-v2.pdf) - 簡報上會呈現如何建構
* [專案深度走訪筆記 part1](https://github.com/18z/viper-research/blob/master/materials/2-46a2a/dive-in.md) - 將每隻程式逐行解讀
* [專案深度走訪筆記 part2](https://github.com/18z/viper-research/blob/master/materials/2-46a2a/lego.md) - 以摘要方式描述該隻程式功能與特色,同時將每隻程式視為一塊樂高積木,尋找積木組合出現比例高的部分,並將組合後的功能做描述
* [廣度走訪筆記](https://github.com/18z/viper-research/blob/master/materials/2-46a2a/viper-tour.md) - 搭配先前以 module dependency 所建構之專案架構,定義專案每個邏輯的起點與終點,並完整走訪所有路徑之筆記。
### 使用的第三方工具:
* [snakefood](https://pypi.python.org/pypi/snakefood/1.4) - 視覺化 python module dependency 工具。另,在簡報中第 14 頁呈現 snakefood 修改版,使得梳理 module dependency 之效率提升。
* [modulegraph](https://pythonhosted.org/modulegraph/) - 視覺化 python module dependency 工具
* [pydegraph](http://www.tarind.com/depgraph.html) - 視覺化 python module dependency 工具
投影片連結
講者介紹
KunYu Chen
Security researcher
Founder of Quark Engine.
Presented at DEF CON Blue Team Village | HITB LOCKDOWN 002
Have fun through challenging difficulties.