Files
workphone-sdk/sdk/scripts/auto_capture_when_frida_back.sh

32 lines
1.6 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env bash
# 守护:轮询微信 Frida 附着状态,一旦 frida_connected=true 立即跑真机验收(截图+读/发/转发+revoke并退出。
# 真机铁律:只在 Frida 真附着时才跑 E2E绝不伪造。
set -uo pipefail
SDK="${WORKPHONE_SDK_URL:-http://127.0.0.1:8899}"
DEVICE_ID="${DEVICE_ID:-xgfe65eimrrofyws}"
MAX_MIN="${MAX_MIN:-120}" # 最长守护分钟
INTERVAL="${INTERVAL:-30}"
REPO_ROOT="$(cd "$(dirname "$0")/../.." && pwd)"
LOG="$REPO_ROOT/sdk/tmp/auto_capture_$(date +%Y%m%d_%H%M%S).log"
mkdir -p "$(dirname "$LOG")"
deadline=$(( $(date +%s) + MAX_MIN*60 ))
echo "[watch] start sdk=$SDK device=$DEVICE_ID interval=${INTERVAL}s max=${MAX_MIN}min" | tee -a "$LOG"
while [ "$(date +%s)" -lt "$deadline" ]; do
R="$(curl -sS -m 15 -X POST "$SDK/api/v3/wechat/execute" -H 'Content-Type: application/json' \
-d "{\"device_id\":\"$DEVICE_ID\",\"action\":\"get_profile\",\"params\":{}}" 2>/dev/null)"
FR="$(printf '%s' "$R" | python3 -c "import sys,json
try:
d=json.load(sys.stdin);print((d.get('data') or {}).get('frida_connected'))
except: print('err')" 2>/dev/null)"
echo "[watch] $(date +%H:%M:%S) frida_connected=$FR" | tee -a "$LOG"
if [ "$FR" = "True" ]; then
echo "[watch] Frida 已附着 → 跑真机验收" | tee -a "$LOG"
WORKPHONE_SDK_URL="$SDK" DEVICE_ID="$DEVICE_ID" bash "$REPO_ROOT/sdk/scripts/run_wechat_realdevice_acceptance.sh" 2>&1 | tee -a "$LOG"
echo "[watch] done exit=${PIPESTATUS[0]}" | tee -a "$LOG"
exit 0
fi
sleep "$INTERVAL"
done
echo "[watch] 超时未等到 Frida 附着(${MAX_MIN}min退出。设备侧需微信前台+frida-server+Agent。" | tee -a "$LOG"
exit 2