A Flipper Zero application (aka "fap") that read credential from HID: iClass, iClass SE, Desfire EV1/EV2, and Seos using a HID SAM and UART adapter. Latest release on the App Catalog.
File issues in GitHub.
Buy it assembled at Red Team Tools, with or without SAM.
Or build it yourself from the files in the NARD repo.
Optionally 3d print a case designed by Antiklesys.
Buy it at Red Team Tools
Buy it at Red Team Tools.
Buy HID SAM:
Put SAM into adapter (because of chip on top) and plug into Smart Card 2 Click (Mikroe digikey with cheaper US shipping). Connect Smart Card 2 Click to Flipper Zero (See Connections below).
Optionally 3d print a case designed by sean
| Smart Card 2 Click | Flipper |
|---|---|
| 5v | 1 |
| GND | 8 / 11 / 18 |
| TX | 16 |
| RX | 15 |
- Install ufbt
git submodule update --init --recursiveto get dependenciesufbtto buildufbt launchto launch
- Install git version of asnc1 (
brew install asn1c --headon macos) - Run
asn1c -D ./lib/asn1 -no-gen-example -no-gen-OER -no-gen-PER -pdu=all seader.asn1in in root to generate asn1c files
- omnikey_5025_cl_software_developer_guide_mn_en
- omnikey_5326_dfr_softwaredeveloperguide
- omnikey_5027_software_developer_guide
- PLT-03362 A.0 - iCLASS Reader Writer Migration Application Note
- HID SE reader消息模块的ANS.1 BER学习
arm-none-eabi-nm ~/.ufbt/build/seader.fap -CS --size-sortarm-none-eabi-readelf ~/.ufbt/build/seader.fap -tufbt cli->free_blocks
Seader can present the attached HID SAM to a host PC as a USB CCID contact smart-card reader, so any PC/SC application can drive the SAM directly (e.g. the PM3 SAM host tools). The SAM appears as the card in slot 0.
Menu: with a SAM detected, choose USB SAM Reader. Connect the Flipper to a PC over USB; a PC/SC reader appears (default identity: ACS / "ACR39U ICC Reader"). Press Back to stop and restore the normal USB console.
- Host APDUs (
PC_TO_RDR_XfrBlock) are relayed to the SAM over Seader's existing T=1 / CCID path; the response is returned to the host verbatim. - The reader name is user-editable in the app: SAM detected → USB Reader
Name → set the manufacturer, then the product string. Both persist
(
usb_reader.conf) and the USB PID auto-bumps on any change so Windows re-enumerates a fresh device node instead of showing the cached old name. Windows builds the PC/SC reader name as<manufacturer> <product> <slot>, which is what name-matching host tools key on. Keep at least the manufacturer non-empty: with no manufacturer string (iManufacturer = 0) Windows names the reader from the generic driver description and PC/SC apps stop finding it. Compile-time defaults / VID live insam_reader.h(SEADER_READER_DEFAULT_*). Neutral VID0x1209keeps the inbox CCID driver bound (avoid a real vendor's VID like ACS0x072F, which loads the vendor driver and refuses a non-genuine device). - Implementation:
usb_ccid_reader.{c,h}(self-contained USB CCID gadget) +sam_reader.{c,h}(SAM relay bridge) +scenes/seader_scene_reader.c, worker stateSeaderWorkerStateReaderEmulation.
Why a custom USB gadget: the firmware's stock usb_ccid interface
advertises only 2 endpoints (no interrupt IN) and dwProtocols = T=0 only.
Windows' WUDF usbccid driver refuses to start it ("This device cannot start.
Code 10"), and it can't present a T=1 card. usb_ccid_reader.c therefore
defines its own FuriHalUsbInterface with a 3-endpoint descriptor (bulk
in/out + interrupt in) and dwProtocols = T=0|T=1, then bridges host APDUs to
the SAM. Built against the f7 SDK's libusb_stm32 (usb_ccid.h, usb_std.h,
usbd_core.h) + furi_hal_usb.h.