# 快速上手 ## 前置條件 - 需在 Tailscale 網路中(192.168.42.x subnet route 可達) - 帳號 `cht`,密碼請參考機器底部貼紙 ## 透過瀏覽器登入 1. 開啟 https://192.168.42.1/(需接受自簽憑證) 2. 輸入帳號、密碼、圖形驗證碼 3. 登入後進入 `/avanzada.asp` 管理頁面 ## 透過 curl API 登入 ### 1. 建立 Session ```bash COOKIEJAR=/tmp/router_cookies.txt curl -sk -c "$COOKIEJAR" https://192.168.42.1/ -o /dev/null ``` ### 2. 取得驗證碼值 ```bash CAPTCHA_VAL=$(curl -sk -b "$COOKIEJAR" -c "$COOKIEJAR" \ -X POST \ -H "Content-Type: application/x-www-form-urlencoded" \ -H "Referer: https://192.168.42.1/" \ -d '' \ 'https://192.168.42.1/cgi-bin/cbGetSummary.xml?Captcha=1') ``` ### 3. 下載驗證碼圖片(4 張,各一個字元) ```bash for i in 1 2 3 4; do curl -sk -b "$COOKIEJAR" \ "https://192.168.42.1/img/captcha${i}.png?m=0.$(date +%s)" \ -o "/tmp/captcha${i}.png" done ``` ### 4. 編碼帳密(XOR 0x1f) ```bash encode_userpass() { local input="$1" output="" for (( i=0; i<${#input}; i++ )); do local c="${input:$i:1}" local ord=$(printf '%d' "'$c") local xored=$((ord ^ 0x1f)) output+=$(printf "\\$(printf '%03o' $xored)") done echo -n "$output" } USERNAME_ENC=$(encode_userpass "cht") PASSWORD_ENC=$(encode_userpass "你的密碼") ``` ### 5. 送出登入 ```bash RESULT=$(curl -sk -b "$COOKIEJAR" -c "$COOKIEJAR" \ -X POST \ -H "Content-Type: application/x-www-form-urlencoded" \ -H "Referer: https://192.168.42.1/" \ --data-urlencode "rqcaptchaValue=${CAPTCHA_VAL}" \ --data-urlencode "rqCaptchaText=看到的驗證碼" \ --data-urlencode "rqUsername=${USERNAME_ENC}" \ --data-urlencode "rqPasswd=${PASSWORD_ENC}" \ -d "rqTimeout=1198&rqLanguage=TW" \ 'https://192.168.42.1/cgi-bin/cbCheckLogin.xml') ``` Result=0 表示登入成功。 ### 6. 查詢 API 登入後即可存取各 API endpoint: ```bash # 系統摘要 curl -sk -b "$COOKIEJAR" -X POST -d '' \ 'https://192.168.42.1/cgi-bin/cbGetSummary.xml' # GPON 資訊 curl -sk -b "$COOKIEJAR" -X POST -d '' \ 'https://192.168.42.1/cgi-bin/cbGetGPONInfo.xml' # WAN 連線 curl -sk -b "$COOKIEJAR" -X POST -d '' \ 'https://192.168.42.1/cgi-bin/cbGetWanIPIntf.xml' # WiFi 2.4G curl -sk -b "$COOKIEJAR" -X POST -d '' \ 'https://192.168.42.1/cgi-bin/cbGetWifiAccPt.xml' # WiFi 5G(指定 radio index 1) curl -sk -b "$COOKIEJAR" -X POST -d 'dpm_cfg_wifi_0i=1' \ 'https://192.168.42.1/cgi-bin/cbGetWifi.xml' # LAN IPv4 curl -sk -b "$COOKIEJAR" -X POST -d '' \ 'https://192.168.42.1/cgi-bin/cbGetLanIPv4Addr.xml' ``` ## 已知 API Endpoint 列表 | Endpoint | 說明 | |----------|------| | cbGetSummary | 系統摘要(CPU、RAM、韌體版本、開機時間) | | cbGetGPONInfo | GPON 光纖狀態(序號、光功率、溫度) | | cbGetCustomConfig | WAN 模式設定 | | cbGetWanIPIntf | WAN 介面詳細資訊(IP、DNS、PPPoE) | | cbGetLanIPv4Addr | LAN IPv4 位址 | | cbGetLanIPv4Intf | LAN 介面設定 | | cbGetIPv6Info | IPv6 狀態 | | cbGetDhcpv4ServerPool | DHCP Server Pool | | cbDhcpV4SvrPoolGetClt | DHCP 租借客戶端 | | cbGetWifi | WiFi Radio 設定(0=2.4G, 1=5G) | | cbGetWifiAccPt | WiFi AP 設定(0=2.4G, 1=5G) | | cbGetWifiSsid | WiFi SSID 設定 | | cbListWifiAccPtAssociation | WiFi 已連線客戶端 | | cbGetStatistic | 封包統計 | | cbCheckLogin | 登入 |