本篇整理了我在練習 picoCTF 或資訊安全題目中常見的編碼方式與判斷技巧,
搭配 GPT 一起整理的重點。

如果有遺漏或錯誤,歡迎在下方留言討論 🙌


📋 編碼類型總覽

類型 範例 特徵 常見用途
Base64 cGljb0NURntzZWNyZXR9 僅包含 A–Z a–z 0–9 + /,結尾可能有 = 傳輸二進位資料、Email 附件、JWT
URL Encoding picoCTF%7Burl_3nc0ded%7D %xx 表示特殊字元,如 %20 空格、%3D 等號 網址參數、表單資料
Hexadecimal 7069636f4354467b7d 僅含 0–9 a–f,每 2 位 = 1 byte Shellcode、封包分析
HTML Entity <script> &xxx; 或 &#xNN; HTML 轉義、防 XSS
Binary 01110000 01101001 僅由 0 與 1 組成,8 位一組 位元操作、底層教學
Octal \123\145\143 \ 開頭接 3 位八進位數 舊 C 字串
ROT13 cvpbPGS{arkg_gbb_onq} 字母位移 13 位(對稱) 淺層混淆
Morse Code .--. .. -.-. --- -.-. - ..-. 由 . 與 - 組成 CTF 常見陷阱
Base32 / Base58 / Base85 MZXW6YTBOI====== 字元集不同於 Base64 QR Code、加密貨幣
Unicode Escape \u0070\u0069\u0063\u006f \uXXXX 表示 Unicode JSON、多語系處理

🔎 補充
Base64 結尾的 = 是用來填充至長度為 4 的倍數,
並非所有 Base64 字串都一定會出現。


🧠 如何判斷是哪種編碼?

內容特徵對照表

特徵 推測編碼
出現 %20、%3D URL Encoding
出現 <、> HTML Entity
只含 0、1,8 位一組 Binary
全為十六進位且長度為偶數 Hexadecimal
出現 =,看似亂碼但有規律 Base64
看起來像英文但不通順 ROT13 / Caesar Cipher
出現 \uXXXX Unicode Escape
只包含 + - > < [ ] . , Brainfuck(惡搞語言)

🛠️ 常見工具推薦

線上工具

  • :contentReference[oaicite:0]{index=0}(強烈推薦,一頁搞定)
  • :contentReference[oaicite:1]{index=1}
  • Base64 Decode(各種線上解碼站)

🖥️ Linux / macOS 常用指令

1
2
3
4
5
6
7
8
9
10
11
# Base64 解碼
echo 'cGljbw==' | base64 -d

# Hex 解碼
echo -n '7069636f' | xxd -r -p

# Octal 解碼
echo -e '\123\145\143'

# Unicode Escape
printf "\u0070\u0069\u0063\u006f"

Python 編碼 / 解碼範例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import base64
import urllib.parse
import codecs

# Base64 解碼
print(base64.b64decode("cGljbw==").decode())

# URL 解碼
print(urllib.parse.unquote("%70%69%63%6f"))

# ROT13 解碼
print(codecs.decode("cvpbPGS{arkg_gbb_onq}", "rot_13"))

# Hex 解碼
print(bytes.fromhex("7069636f").decode())

# Unicode Escape
print("\u0070\u0069\u0063\u006f")


小結

  • 🧠 先觀察特徵,再嘗試解碼

  • 🛠️ 工具首選:CyberChef

  • 🧩 不熟的編碼可以用
    猜 → 測試 → 驗證 → Google 的流程

或是直接詢問你身邊最進化的 GPT-5 好夥伴 也可以 😄
如果你還知道其他冷門編碼(如 Base91、UUEncode、xxEncode),
也非常歡迎留言交流!