44 lines
2.0 KiB
Bash
Executable File
44 lines
2.0 KiB
Bash
Executable File
#!/usr/bin/env bash
|
||
# auto_accept_when_ready.sh - guard: when phone frida attaches WeChat, auto run 3-item acceptance
|
||
# Polls hook/probe; on supports_hook=true runs run_three_acceptance.sh and archives evidence.
|
||
# Usage: bash sdk/scripts/auto_accept_when_ready.sh [device_id] [max_wait_sec]
|
||
set -o pipefail
|
||
|
||
ROOT="$(cd "$(dirname "$0")/../.." && pwd)"
|
||
DEVICE="${1:-xgfe65eimrrofyws}"
|
||
MAX_WAIT="${2:-7200}"
|
||
BASE="${SDK_BASE_URL:-http://127.0.0.1:8899}"
|
||
INTERVAL=10
|
||
LOG="$ROOT/sdk/logs/auto_accept_${DEVICE}.log"
|
||
mkdir -p "$(dirname "$LOG")"
|
||
|
||
echo "[auto-accept] start $(date) device=$DEVICE max=${MAX_WAIT}s" | tee -a "$LOG"
|
||
deadline=$(( $(date +%s) + MAX_WAIT ))
|
||
|
||
while [ "$(date +%s)" -lt "$deadline" ]; do
|
||
# 就绪信号:diag_wcdb RPC 可用(= 新 wechat_hook_v2.js 已重载,含 WCDB 2.x 适配)
|
||
DIAG="$(curl -s --max-time 30 -X POST "$BASE/api/v3/hook/execute" -H 'Content-Type: application/json' \
|
||
-d "{\"device_id\":\"$DEVICE\",\"platform\":\"wechat\",\"action\":\"diag_wcdb\",\"params\":{},\"hook_only\":true}" 2>/dev/null)"
|
||
SUP="$(printf '%s' "$DIAG" | python3 -c 'import sys,json
|
||
try:
|
||
d=json.load(sys.stdin); inner=d.get("data",d)
|
||
# 最新 JS 标志:diag_wcdb 含 main_query 实读测试字段
|
||
print("True" if (inner.get("success") and "main_query" in inner) else "ERR")
|
||
except Exception:
|
||
print("ERR")' 2>/dev/null)"
|
||
SUP="${SUP:-ERR}"
|
||
if [ "$SUP" = "True" ]; then
|
||
echo "[auto-accept] $(date) diag_wcdb ok (new JS loaded) -> run 3-item acceptance" | tee -a "$LOG"
|
||
echo "[auto-accept] WCDB diag: $DIAG" >> "$LOG"
|
||
bash "$ROOT/sdk/scripts/run_three_acceptance.sh" "$DEVICE" 2>&1 | tee -a "$LOG"
|
||
RC="${PIPESTATUS[0]:-0}"
|
||
echo "[auto-accept] acceptance exit=$RC $(date)" | tee -a "$LOG"
|
||
exit "$RC"
|
||
fi
|
||
echo "[auto-accept] $(date '+%H:%M:%S') 新JS未就绪(diag_wcdb=$SUP),等手机重启Agent,retry ${INTERVAL}s" >> "$LOG"
|
||
sleep "$INTERVAL"
|
||
done
|
||
|
||
echo "[auto-accept] timeout, frida not ready $(date)" | tee -a "$LOG"
|
||
exit 1
|