Probe and document the CHT/ASKEY RTF8207W GPON router including system info, GPON optical status, WAN/LAN config, WiFi settings, and full API endpoint reference for CLI management. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
128 lines
3.4 KiB
Markdown
128 lines
3.4 KiB
Markdown
# 快速上手
|
||
|
||
## 前置條件
|
||
|
||
- 需在 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 | 登入 |
|