feb03fec78d356f1aee377609f8aade26b5048c1
Add an unsolicited event-push path to the LSX server: after the session establishes, re-push (every 2s) a Login then OnlineStatusEvent, encrypted with the live session seed and null-terminated like any session frame. Formats RE'd from FIFA23.exe's OriginSDK deserializers (authoritative): <Login UserIndex="0" IsLoggedIn="true" LoginReasonCode="0"/> (LoginT, +0x287a30) <OnlineStatusEvent isOnline="true"/> (OnlineStatusEventT, +0x28a4d0) Value encoding is the true/false string literal (FIFA's bool parser at FIFA23.exe+0x28fb50 compares to "false"); isOnline="1" is parsed as not-online. Result (verified with in-process probes): FIFA parses both events every cycle and returns success, and stops its impatient GetProfile polling / sets INGAME presence — the first time FIFA has been driven "online" at the EbisuSDK level (anadius, being offline DRM, never does this). But FIFA does not proceed to the GetAuthCode→Nucleus →Blaze chain; the gate is its game-side event consumer (virtual dispatch at FIFA23.exe+0x274d4e2), not delivery. Full trail in docs/connection-gate-findings.md. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
OpenFUT Bridge
FIFA 23 integration layer and reverse-engineering proxy.
OpenFUT Bridge sits between the FIFA 23 client and the internet. It intercepts all FUT API traffic, logs every request, and routes known endpoints to OpenFUT Core. Unknown endpoints receive safe placeholder responses so the client keeps running.
What it does
- Transparent HTTP proxy — point FIFA 23 here instead of EA's servers
- Logs every request (method, path, headers, body, timestamp) to
captures/ - Maps known FUT endpoints to OpenFUT Core API calls
- Returns placeholder JSON for unknown endpoints (prevents client crashes)
- Admin API for reviewing captures and identifying unmapped routes
- Foundation for building the full FIFA 23 integration
Architecture
FIFA 23 client
│
▼
OpenFUT Bridge (port 8443)
│
├── Known route → OpenFUT Core (port 8080)
└── Unknown route → Placeholder JSON + saved to captures/
Quick Start
# Run Core first
cd ../openfut-core && cargo run
# Run Bridge
cargo run
# Or with config
CORE_URL=http://127.0.0.1:8080 BRIDGE_LISTEN_ADDR=127.0.0.1:8443 cargo run
Environment Variables
| Variable | Default | Description |
|---|---|---|
BRIDGE_LISTEN_ADDR |
127.0.0.1:8443 |
Bridge listen address |
CORE_URL |
http://127.0.0.1:8080 |
OpenFUT Core URL |
CAPTURES_DIR |
captures |
Where to save captured requests |
PLACEHOLDER_MODE |
true |
Return 200 for unknown endpoints |
Admin API
| Method | Path | Description |
|---|---|---|
GET |
/_bridge/health |
Bridge status |
GET |
/_bridge/captures |
All captured requests |
GET |
/_bridge/unknown |
Unknown endpoints only |
Reverse Engineering Workflow
- Point FIFA 23 at the Bridge (see
docs/setup-notes.mdfor proxy setup) - Start a game session
- Check
captures/or/_bridge/unknownfor new endpoints - Document the endpoint in
docs/endpoint-map.md - Add a mapping in
src/mapper.rs - Implement the Core handler
Proxy Setup (Research Notes)
See docs/setup-notes.md for notes on:
- Windows
hostsfile redirection - RPCS3 network config (PS3)
- Certificate bypass approaches
- mitmproxy integration
Development
cargo fmt
cargo clippy -- -D warnings
cargo test
License
MIT
Description
Languages
Rust
61.7%
HTML
38.3%