Proxmark3 Flash Bootrom and Fullimage

Mar 13, 2025

Configuration

$ yay arm-none-eabi-newlib arm-none-eabi-gcc
$ cp Makefile.platform.sample Makefile.platform
$ vim Makefile.platform

PLATFORM=PM3GENERIC
PLATFORM_SIZE=256
STANDALONE=
SKIP_ISO14443a=1
SKIP_FELICA=1

Compile pm3

$ git clone https://github.com/RfidResearchGroup/proxmark3.git
$ make clean && make -j

===================================================================
Version info:      Iceman/master/v4.16191-3788-gaa35a8a1a
Platform name:     Proxmark3 generic target
PLATFORM:          PM3GENERIC
PLATFORM_FPGA:     xc2s30
PLATFORM_SIZE:     256
Platform extras:   No extra selected
Included options:  LF EM4x50 EM4x70 ZX8211 GENERAL_HF ISO14443a NFCBARCODE HFSNIFF HFPLOT COMPRESSION
Standalone mode:   No standalone mode selected
===================================================================
[!] Platform definitions changed, cleaning bootrom/armsrc/recovery first...
===================================================================
Version info:      Iceman/master/v4.16191-3788-gaa35a8a1a
Client platform:   Linux
GUI support:       QT5 found, enabled (Qt version 5.15.10 in /usr/lib)
native BT support: Bluez found, enabled
Jansson library:   system library found
Lua library:       system library found
Python3 library:   Python3 v3.11 found, enabled
GD library:        GD v2.3.3 found, enabled
Readline library:  enabled
Whereami library:  system library not found, using local library
Lua SWIG:          wrapper found
Python SWIG:       wrapper found
compiler version:  cc (GCC) 13.2.1 20230801
===================================================================
PLATFORM Linux
[*] MAKE client/clean
===================================================================
Version info:      Iceman/master/v4.16191-3788-gaa35a8a1a
Client platform:   Linux
GUI support:       QT5 found, enabled (Qt version 5.15.10 in /usr/lib)
native BT support: Bluez found, enabled
Jansson library:   system library found
Lua library:       system library found
Python3 library:   Python3 v3.11 found, enabled
GD library:        GD v2.3.3 found, enabled
Readline library:  enabled
Whereami library:  system library not found, using local library
Lua SWIG:          wrapper found
Python SWIG:       wrapper found
compiler version:  cc (GCC) 13.2.1 20230801
===================================================================
PLATFORM Linux
[*] MAKE bootrom/clean
[*] MAKE fpga_compress/clean
[*] MAKE armsrc/clean
[*] MAKE recovery/clean
[*] MAKE mfc_card_only/clean
[*] MAKE mfc_card_reader/clean
[*] MAKE mfd_aes_brute/clean
[*] MAKE cryptorf/clean

===================================================================
Version info:      Iceman/master/v4.16191-3788-gaa35a8a1a
Platform name:     Proxmark3 generic target
PLATFORM:          PM3GENERIC
PLATFORM_FPGA:     xc2s30
PLATFORM_SIZE:     256
Platform extras:   No extra selected
Included options:  LF EM4x50 EM4x70 ZX8211 GENERAL_HF ISO14443a NFCBARCODE HFSNIFF HFPLOT COMPRESSION
Standalone mode:   No standalone mode selected
===================================================================
[*] MAKE client/all

Flash bootrom and fullimage

$ ./pm3-flash-bootrom
[=] Session log /home/evlos/.proxmark3/logs/log_20250313054838.txt
[+] loaded `/home/evlos/.proxmark3/preferences.json`
[+] About to use the following file:
[+]    /home/evlos/a/proxmark3/client/../bootrom/obj/bootrom.elf
[+] Loading ELF file /home/evlos/a/proxmark3/client/../bootrom/obj/bootrom.elf
[+] ELF file version Iceman/master/v4.16191-3788-gaa35a8a1a-suspect 2025-03-13 13:47:16 2ce1378ca

[+] Waiting for Proxmark3 to appear on /dev/ttyACM0
 🕑  59 found
[+] Entering bootloader...
[+] (Press and release the button only to abort)
[+] Trigger restart...
[+] Waiting for Proxmark3 to appear on /dev/ttyACM0
 🕑  49 found
[=] Available memory on this board: 256K bytes

[=] Permitted flash range: 0x00100000-0x00140000
[+] Loading usable ELF segments:
[+]    0: V 0x00100000 P 0x00100000 (0x00000200->0x00000200) [R X] @0x94
[+]    1: V 0x00200000 P 0x00100200 (0x00000f4c->0x00000f4c) [R X] @0x298

[+] Flashing...
[+] Writing segments for file: /home/evlos/a/proxmark3/client/../bootrom/obj/bootrom.elf
[+]  0x00100000..0x001001ff [0x200 / 1 blocks]
. ok
[+]  0x00100200..0x0010114b [0xf4c / 8 blocks]
........ ok

[+] All done

[=] Have a nice day!


$ ./pm3-flash-fullimage
[=] Session log /home/evlos/.proxmark3/logs/log_20250313054852.txt
[+] loaded `/home/evlos/.proxmark3/preferences.json`
[+] About to use the following file:
[+]    /home/evlos/a/proxmark3/client/../armsrc/obj/fullimage.elf
[+] Loading ELF file /home/evlos/a/proxmark3/client/../armsrc/obj/fullimage.elf
[+] ELF file version Iceman/master/v4.16191-3788-gaa35a8a1a-suspect 2025-03-13 13:47:56 2ce1378ca

[+] Waiting for Proxmark3 to appear on /dev/ttyACM0
 🕑  59 found
[+] Entering bootloader...
[+] (Press and release the button only to abort)
[+] Trigger restart...
[+] Waiting for Proxmark3 to appear on /dev/ttyACM0
 🕓  59 found
[=] Available memory on this board: 256K bytes

[=] Permitted flash range: 0x00102000-0x00140000
[+] Loading usable ELF segments:
[+]    0: V 0x00102000 P 0x00102000 (0x00030664->0x00030664) [R X] @0x98
[+]    1: V 0x00200000 P 0x00132664 (0x00000d7c->0x00000d7c) [R X] @0x30700
[=] Note: Extending previous segment from 0x30664 to 0x313e0 bytes

[+] Flashing...
[+] Writing segments for file: /home/evlos/a/proxmark3/client/../armsrc/obj/fullimage.elf
[+]  0x00102000..0x001333df [0x313e0 / 394 blocks]
...................................................................
        @@@  @@@@@@@ @@@@@@@@ @@@@@@@@@@   @@@@@@  @@@  @@@
        @@! !@@      @@!      @@! @@! @@! @@!  @@@ @@!@!@@@
        !!@ !@!      @!!!:!   @!! !!@ @!@ @!@!@!@! @!@@!!@!
        !!: :!!      !!:      !!:     !!: !!:  !!! !!:  !!!
        :    :: :: : : :: :::  :      :    :   : : ::    :
        .    .. .. .  ok

[+] All done

[=] Have a nice day!

Test run

$ ./pm3
[=] Session log /home/evlos/.proxmark3/logs/log_20250313054937.txt
[+] loaded `/home/evlos/.proxmark3/preferences.json`
[+] Using UART port /dev/ttyACM0
[+] Communicating with PM3 over USB-CDC


  8888888b.  888b     d888  .d8888b.
  888   Y88b 8888b   d8888 d88P  Y88b
  888    888 88888b.d88888      .d88P
  888   d88P 888Y88888P888     8888"
  8888888P"  888 Y888P 888      "Y8b.
  888        888  Y8P  888 888    888
  888        888   "   888 Y88b  d88P
  888        888       888  "Y8888P"    [ ☕ ]



  [ Ignite change: support open-source creativity! ]
     Patreon - https://www.patreon.com/iceman1001/


  [ Proxmark3 RFID instrument ]

    MCU....... AT91SAM7S256 Rev D
    Memory.... 256 KB ( 80% used )

    Client.... Iceman/master/v4.16191-3788-gaa35a8a1a 2025-03-13 13:47:57
    Bootrom... Iceman/master/v4.16191-3788-gaa35a8a1a-suspect 2025-03-13 13:47:16
    OS........ Iceman/master/v4.16191-3788-gaa35a8a1a-suspect 2025-03-13 13:47:56
    Target.... PM3 GENERIC


[usb] pm3 -->

[back]