Proxmark3 is based on
field-programmable gate array (FPGA) technology, which allows the implementation of high-performance low-level analog signal processing, modulation and demodulation. A separate
microcontroller processes demodulated frames. Such setup potentially allows any RFID protocol to be implemented in Proxmark3's software.
Antennas Two independent antenna circuits are used for
low frequencies (LF) 125 kHz and 134 kHz, and
high frequency (HF) 13.56 MHz. Initially, both antennas were connected with a shared 4-pin Hirose USB connector, which was unreliable at times. Subsequent revisions have opted to use a separate connector for each antenna.
ADC 8-bit
Analog-to-digital converter (ADC) receives an analog signal from the antenna circuit, digitizes it and outputs the digital signal to the FPGA.
FPGA Field-programmable gate array does both the low-level modulation when transmitting data from CPU and demodulation when receiving a signal from an ADC. It can process various modulations such as
on–off keying (OOK),
amplitude-shift keying (ASK), etc. The FPGA works in two ways: as reader generating electromagnetic field for cards, or as card waiting for reader field.
CPU The
ARM microcontroller is responsible for the protocol part. It encodes and decodes the frames (
Manchester,
Miller, etc) and performs more advanced functions. The CPU can reply back to the FPGA after signal handling, thus implementing the transport layer. The CPU also manages the USB communication with the PC client application.
Flash memory Flash memory is used to store firmware. The early versions of Proxmark3 only had 64 kB of flash memory, but as firmware developed that became scarce and versions with 512 kB appeared. The firmware itself consists of ARM code and an FPGA image (which is loaded by the ARM). The FPGA communicates with the ARM through either its
SPI port (the ARM is the master) or its generic
SSP. The SPI is used for FPGA configuration. The SSP is used for data sent over the air. == Software ==