# fifa-blaze EA Blaze protocol server emulator — **FIFA 17 target**. ## Why FIFA 17 and not FIFA 23 FIFA 23 was the original target. It does not work, for a structural reason documented in `../openfut-bridge/docs/closure-and-preservation.md`: **the FIFA 23 client never dials.** The functions that register the redirector dial are Blaze *message handlers*, dispatched only once Blaze messages are already flowing — so the dial requires the connection it is supposed to create. Offline that handler container is empty and nothing can break the circle. Two further walls sit behind it (ProtoSSL cert pinning, and an anti-tamper VM that faults on forced state). FIFA 17 differs categorically, not by degree: | | FIFA 17 (2016) | FIFA 23 (2022) | |---|---|---| | Online entry | Client dials `gosredirector` directly | Gated behind an EA-App handshake with no counterpart | | Anti-tamper | None | VM faults deterministically on forced state | | Transport | ProtoSSL — SSLv3 + RC4 | Pinned modern TLS (`CertificateUnknown`) | | Feedback loop | **You get a wire on day one** | Never dials → nothing to iterate against | That last row is the one that matters. Redirect the hostname, and the client connects and starts talking — which restores the oracle the whole method depends on: send a frame, watch the client react, correct, repeat. `openfut-core` is unaffected by any of this. It is game-independent and already complete; only the bridge layer is title-specific. ## Status **Milestone 1 — capture stub.** Two SSLv3 listeners start and log every byte. No FIFA 17 component/command IDs are known yet — the capture log is how they are discovered. **Milestone 1 goal: one real frame in `captures/`.** The FIFA 23 effort produced zero in a month. ## Architecture ``` FIFA 17 (hosts file, or the openfut-hook DLL under Proton) │ ▼ gosredirector.ea.com → 127.0.0.1:42127 blaze-server redirector listener (SSLv3, Fire2 framing) │ replies: "connect to 127.0.0.1:10041" ▼ blaze-server Blaze listener (SSLv3, Fire2 framing) │ ├─ raw byte tee → captures/