Skip to content

Releases: 7h30th3r0n3/Flipper-EvilRelay

v1.2.0 - EMV reader + ESP32 app-opener

Choose a tag to compare

@7h30th3r0n3 7h30th3r0n3 released this 17 Oct 12:16

Adds a standalone EMV reader to the Android app and an "app-opener" captive portal to the ESP32 bridge.

Android reader (v1.12)

  • New EMV Info mode: read-only, offline EMV read (SELECT PPSE -> AID -> GPO -> READ RECORD) with a BER-TLV parser, shown on a styled payment-card panel (PAN, expiry, cardholder, scheme, AID, Track 2, country, currency). For your own cards.
  • Persistent reader link: the TCP connection to the bridge/emulator opens as soon as Reader mode is active (not per card), so the emulator sees the app before any card; cards are served over one link and a swap re-sends IDENT.
  • Faster card-removal detection, UID refresh, "Card lost/removed" feedback, evilrelay:// deep link, log de-dup.

ESP32 bridge

  • Captive app-opener: DNS -> AP IP + HTTP :80. Before a reader connects it serves a page linking to evilrelay://relay (opens the app); once a reader is connected it answers HTTP 204 so Android keeps the AP and stops offering to switch to mobile data.

Flipper FAP: unchanged (it already re-arms emulation on a changed IDENT, so card swap works as-is).

Assets

  • evil_relay.fap: Flipper app (copy to SD apps/NFC).
  • EvilRelayESP32-C3.bin: ESP32-C3 bridge, merged image, flash to offset 0x0.
  • EvilRelay-v1.12.apk: Android reader (debug-signed).

EvilRelay v1.1.1 "stability+"

Choose a tag to compare

@7h30th3r0n3 7h30th3r0n3 released this 12 Oct 16:48

Robustness backport on top of v1.1 step feedback.

FAP:

  • seq-matched RESP: a late response to a timed-out command is dropped instead of being served as the answer to the next command.
  • 6F00 on an oversize reader-chained command (never relays a truncated APDU).
  • seq is passed through the relay callback.

ESP32 bridge:

  • ESP-NOW reassembly double-buffer: a completed message is copied out before the recv callback can refill it (plus the dup-safe fragment bitmask from v1.1).

These address the relay dropping / 0-response behaviour observed under repeated back-to-back transactions. Step-by-step feedback UI (Flipper multi-view + STATUS frames) unchanged from v1.1.

Assets: evil_relay.fap (Flipper), EvilRelay-v1.8.apk (Android), EvilRelayESP32-C3.bin (ESP32-C3 app image, flash at 0x10000).

EvilRelay v1.1 "stability"

Choose a tag to compare

@7h30th3r0n3 7h30th3r0n3 released this 12 Oct 13:38

Step-by-step relay feedback on both sides.

  • Flipper FAP: modern multi-view UI. Status shows the chain live - Bridge -> Reader -> Card (UID) -> Relay (APDU count + RTT) - with a bridge heartbeat, uptime and rx counters. About view carries version, repo and license. Consumes new STATUS frames from the bridge.
  • ESP32 bridge: emits STATUS frames (bridge heartbeat, reader connected over Wi-Fi/ESP-NOW, reader lost). ESP-NOW reassembly now tracks distinct fragment indices via a duplicate-safe bitmask.
  • Android reader: persistent connection to the bridge, so "connected" and "card scanned" are distinct steps (the chain lights up at connect, not only at read). 3 s connect timeout; HCE response delivered asynchronously.

Assets: evil_relay.fap (Flipper), EvilRelay-v1.8.apk (Android), EvilRelayESP32-C3.bin (ESP32-C3 app image, flash at 0x10000).

Flipper-EvilRelay v1.0

Choose a tag to compare

@7h30th3r0n3 7h30th3r0n3 released this 10 Oct 10:35

ISO-DEP NFC relay for the Flipper Zero. Three ready-to-flash components:

  • evil_relay.fap: the Flipper FAP. Drop it in apps/NFC/ on the Flipper SD (built against the Momentum SDK, Target 7 / API 87.1).
  • EvilRelayESP32-esp32c3.bin: the ESP32-C3 bridge. Flash at offset 0x0 with esptool.py --chip esp32c3 write_flash 0x0 EvilRelayESP32-esp32c3.bin, or any ESP web flasher. Generic ESP32-C3, 4 MB.
  • EvilRelay-v1.8.apk: the Android reader (NFC phone; debug-signed, sideload).

See the README for wiring and usage. Authorised and lawful testing only.