❄️ White Out Survival
Mobile Investigation Guide

For non-rooted Android phones without a computer

📊 What We Found So Far

Working API - Giftcode Player Lookup

Returns: nickname, furnace level, state ID, avatar

Player 250893802 → FADL2, State 2007, Furnace Lv.31

209 Protocol Messages Discovered

Key messages for your task:

MessageDirectionWhat It Does
NOTIFY_PLAYER_POWER_UPDATEServer→Client🔥 Player power changes
NOTIFY_PLAYER_ACTIVITY_POWER_UPDATEServer→Client🔥 Activity power changes
NOTIFY_STOVE_INFOServer→ClientFurnace/stove data
REQ_PLAYERClient→ServerRequest player data
REQ_CENTER_RANKClient→ServerCenter ranking

🎯 How to Get Player Power Data

Player power is NOT in any public API. It's sent via the sproto binary protocol over encrypted WebSocket. Here are your options:

Option 1: PCAPdroid BEST FOR YOU

  1. Install PCAPdroid from Google Play Store
  2. Start PCAPdroid capture
  3. Open White Out Survival and play normally
  4. Stop capture and export PCAP file
  5. The traffic is TLS-encrypted but you'll see server IPs and connection patterns
  6. With root (install CA as system cert): PCAPdroid can decrypt HTTPS
Limitation: Game uses certificate pinning, so even with CA cert, HTTPS decryption may fail. You'll see connection metadata but not decrypted sproto content.

Option 2: Termux + Frida GOOD

  1. Install Termux from F-Droid (NOT Play Store version)
  2. Run in Termux:
    pkg install python pip install frida-tools frida -U -f com.gof.global -l wos_hook.js
  3. This will hook sproto_decode/sproto_encode functions in libtolua.so
  4. All protocol messages will be logged to console
Limitation: Frida requires either root or a modified APK. Without root, you need the Frida Gadget approach (Option 3).

Option 3: Frida Gadget Modified APK ADVANCED

  1. Install SAI (Split APK Installer) from Play Store
  2. On a computer (or using Termux), merge the XAPK into a single APK
  3. Inject libfrida-gadget.so into the APK's lib/arm64-v8a/
  4. Add gadget config to assets/
  5. Sign with apksigner or uber-apk-signer
  6. Install the modified APK
  7. When the game starts, Frida connects and logs everything
# In Termux: wget https://github.com/frida/frida/releases/latest/download/frida-gadget-16.5.9-android-arm64.so.xz xz -d frida-gadget.so.xz mv frida-gadget.so libfrida-gadget.so # Then use apktool to inject it

Option 4: Official API Access RECOMMENDED

  1. Contact Century Game for developer API access
  2. Explain you need: player power, hero power, state age data
  3. They have internal REST/gRPC APIs for this data
  4. Likely requires business partnership or licensing

🔧 Ready-to-Use Tools

Python Player Lookup (works now!)

import hashlib, time, requests fid = '250893802' # Any player ID ts = str(int(time.time() * 1000)) sign = hashlib.md5(f'fid={fid}&time={ts}tB87#kPtkxqOS2'.encode()).hexdigest() r = requests.post('https://wos-giftcode-api.centurygame.com/api/player', data={'fid': fid, 'time': ts, 'sign': sign}, headers={'Origin': 'https://wos-giftcode.centurygame.com'}) print(r.json()) # → {"nickname":"FADL2","kid":2007,"stove_lv":31,...}

sproto Protocol Decoder

File: wos_sproto_decoder_v2.py

Can decode captured sproto binary messages once you have the raw data

python wos_sproto_decoder_v2.py rpc <hex_data> python wos_sproto_decoder_v2.py unpack <hex_data>

🔐 Encryption Summary

LayerTypeStatus
Web API SignMD5(secret:params)✅ Cracked
Gift Code SignMD5(sorted_params + salt)✅ Cracked
Game ProtocolAES-192 + sproto⚠️ Need traffic capture
TLSCertificate pinning❌ Blocks MITM
Metadata (HTPX)NetEase YiDun custom❌ Per-app encryption
Asset BundlesLZ4 + custom❌ Encrypted

📋 Quick Action Plan

Step 1: Install PCAPdroid and capture WoS traffic
Step 2: Note the FPCS server IPs and connection patterns
Step 3: Try Termux + Frida (if your phone allows it)
Step 4: Or request official API access from Century Game
Step 5: Use the sproto decoder to analyze captured data