跳轉到

翻譯聲明

本頁中文內容由 Anthropic Claude 自動翻譯,可能有不精確或不通順之處。如有疑義,請以英文原文為準(可用頁面上方的語言切換查看);也歡迎至 GitHub 指正或送出 Pull Request。

資安相關的程式設計與演算法

  • 基礎
  • 條件判斷(if、else)
  • 迴圈(for 迴圈、while 迴圈)
  • 字典(dictionary)
  • 切片(slice)/清單(list)/陣列(array)
  • 字串/陣列操作(split、contaings、length、正規表示式)
  • 虛擬碼(pseudo code,簡潔地描述你解題的思路)

  • 資料結構

  • 字典 / 雜湊表(hash table,鏈結串列的陣列,有時也用 BST)
  • 陣列
  • 堆疊(stack)
  • SQL/資料表
  • Bigtable

  • 排序

  • Quicksort、merge sort

  • 搜尋

  • 二分搜尋(binary)與線性搜尋(linear)的比較

  • Big O

  • 針對空間與時間複雜度

  • 正規表示式

  • 通常比對是 O(n),但採用回溯(backtracking)的引擎在最壞情況下可能達到指數等級 O(2^n)(災難性回溯,catastrophic backtracking)
  • 熟悉基本的 regex 語法也很有用

  • 遞迴

  • 以及何時該改用迭代(stack 深度 / 效能考量)

  • Python

  • 串列生成式與生成器(generator)[ x for x in range() ]
  • 迭代器(iterator)與生成器
  • 切片 [start:stop:step]
  • 正規表示式
  • 型別(動態型別)、資料結構
  • Python 與 C、Java 等語言相比的優缺點。
  • 對常用函式要非常熟悉,並對這個語言運用自如

資安主題的程式設計挑戰

  • 加密法 / 加密演算法
  • 能夠實作基本的加密法(cypher)

  • 解析任意的日誌

  • 練習文字解析

  • 網路爬蟲(web scraper)

  • 另一種練習文字解析的方式

  • 連接埠掃描器(port scanner)

  • 練習解析網路資訊

  • 殭屍網路(botnet)

  • 你會如何建立一個 ssh 殭屍網路

  • 密碼暴力破解器(bruteforcer)

  • 從 PDF 抓取中繼資料(meta data)
  • 用來還原已刪除項目的腳本
  • 一支在二進位檔 / 程式碼樣本中尋找惡意程式特徵碼(malware signature)的程式