Day 1 — 密碼學 (Cryptography)
Day 1 — 密碼學 (Cryptography)
重點整理
| 主題 | 核心概念 | 重要工具/技術 | 備註 |
|---|---|---|---|
| 密碼學 (Crypto) | 快速辨識編碼特徵(Base64 結尾 =、Hex 只含 0-9a-f);XOR、Caesar、RSA 基礎辨識 | CyberChef、Python3、base64、xxd | 起手式:看字串特徵 → 猜編碼 → 工具驗證 |
常見編碼特徵對照表
| 編碼/加密 | 特徵 | 工具 |
|---|---|---|
| Base64 | 結尾有 = 或 ==,英數混合 | base64 -d、CyberChef |
| Hex | 只含 0-9 與 a-f,長度為偶數 | xxd -r -p、CyberChef |
| Caesar | 全英文字母,位移固定 | CyberChef ROT、Python |
| XOR | 需要 key,輸出看起來是亂碼 | CyberChef XOR、Python |
| RSA | 出現 n, e, d, p, q | Python pycryptodome |
起手式流程
1. 觀察字串特徵(長度、字元集、結尾)
2. 猜測編碼種類
3. 用 CyberChef 或 terminal 驗證
# Base64 解碼
echo "RkxBR3tiYXNlNjR9" | base64 -d
# Hex 解碼
echo "464c4147" | xxd -r -p
學習建議
- 練習平台:picoCTF Cryptography 題區
- 產出:整理常見編碼特徵小表(貼在桌面備用)
模擬比賽題目
一、選擇題(單選)
1. 字串結尾有 =,第一直覺猜測是?
- A) Hex
- B) Base64 ✅
- C) Caesar Cipher
- D) RSA
2. 密文 464c41477b6865785f72656164797d(只含 0-9 和 a-f),最可能是?
- A) Base64
- B) 二進位碼
- C) Hex ✅
- D) URL 參數
3. 終端機快速將 Hex 還原為明文,使用?
- A)
base64 -d - B)
strings - C)
xxd -r -p✅ - D)
grep
4. 多層加密/編碼轉換最推薦的萬用工具?
- A) Wireshark
- B) Burp Suite
- C) CyberChef ✅
- D) Ghidra
5. Caesar Cipher 的加密原理?
- A) 公鑰私鑰非對稱加密
- B) 轉換為位元流
- C) 字母表固定位數平移替換 ✅
- D) 雜湊函數產生不可逆字串
二、CTF 實作題
Challenge 1:經典的等號 (Base64)
日誌中發現
RkxBR3tiYXNlNjRfYWk0Y3RmfQ==,請還原明文。
echo "RkxBR3tiYXNlNjRfYWk0Y3RmfQ==" | base64 -d
Flag 格式:FLAG{base64_ai4ctf}
Challenge 2:數字與字母的交織 (Hex)
封包中夾帶
464c41477b6865785f72656164797d,請解碼。
echo "464c41477b6865785f72656164797d" | xxd -r -p
Flag 格式:FLAG{hex_ready}
Challenge 3:偏移的字母 (Caesar)
截獲密文
GMBH{dbftbs},位移量為 +1,請還原明文。
cipher = "GMBH{dbftbs}"
plain = ''.join(chr(ord(c) - 1) if c.isalpha() else c for c in cipher)
print(plain)
Flag 格式:FLAG{caesar}