Back to Proxmark3

HF_MSDSAL — Visa MSD Card Reader/Emulator

doc/standalone/hf_msdsal.md

4.92372.0 KB
Original Source

HF_MSDSAL — Visa MSD Card Reader/Emulator

Author: Salvador Mendoza Frequency: HF (13.56 MHz) Hardware: Generic Proxmark3

Back to Standalone Modes Index | Source Code | Development Guide


What

Reads Visa MSD (Magnetic Stripe Data) cards and emulates the captured Track 2 equivalent data. MSD is an older EMV contactless mode that mirrors magnetic stripe data over NFC.

Why

Visa MSD mode transmits Track 2 data in a format similar to magnetic stripe cards. This mode demonstrates the risk of MSD mode by capturing and replaying the transaction data. MSD has largely been superseded by EMV contactless (qVSDC), but some terminals still support it as a fallback.

Note: MSD mode is deprecated in many markets. Modern terminals may reject MSD transactions.

How

  1. READ: Selects PPSE → Visa AID → reads PDOL/SFI → extracts 19-byte Track 2 data
  2. EMULATE: Presents the captured Track 2 data when queried by a terminal

LED Indicators

LEDMeaning
A (solid)Reading mode
B (solid)Activity indicator
C (solid)Emulation mode (Track 2 loaded)

Button Controls

ActionEffect
Single clickToggle between READ and EMULATE
Long holdExit standalone mode

State Machine

mermaid
stateDiagram-v2
    [*] --> READ : Startup

    READ --> EMULATE : Track2 captured\n+ button click
    EMULATE --> READ : Button click

    READ --> READ : Waiting for Visa MSD card
    EMULATE --> EMULATE : Emulating Track2

    READ --> [*] : Long hold / USB data
    EMULATE --> [*] : Long hold / USB data

Compilation

make clean
make STANDALONE=HF_MSDSAL -j
./pm3-flash-fullimage