This short guide is intended for users familiar with the linux terminal to learn how to install and use the proxmark3 easy (or to remind ourselves how to use it after we’ve forgotten). For Windows users, @amal has written a longer getting started guide, and the RFID Research Group offers this more in depth linux installation instructions on their GitHub. There’s also an abridged and super abridged versions in the pm3 tips and tricks thread. This guide keeps the install section relatively brief, and it ends with a few tips to get users started in using their newly installed proxmark.
PREPARING FOR INSTALLATION
You can confirm that the pm3 is connected using systemd:
sudo dmesg | grep -i usb
Alternatively, check that this new device appears when you plug in the pm3:
/dev/ttyACM0
If you’re running ModemManager (which is common on many systems), there’s a risk it will attempt to ask your proxmark if it’s a mobile broadband modem, and if this happens while you’re flashing the bootloader it can brick the proxmark. My preferred solution is to turn it off in a manner that allows us to simply turn it on again should we need it in the future. (For more details and some alternative solutions, see this guide from RFID Research Group.)
sudo systemctl stop ModemManager.service
sudo systemctl disable ModemManager.service
sudo systemctl mask ModemManager.service
Confirm that it’s masked and inactive with:
systemctl status ModemManager.service
(If you need ModemManager again after you’ve finished flashing the pm3, you can simply unmask, enable, and start it again using the same syntax as above.)
If you’d like to double check that you have all the required dependencies, you can check the top of this page and look for the section pertaining to your distribution.
INSTALLING SOFTWARE
The source code contains three pieces of software that are compiled together all at once. It’s critical that they all be updated to use the exact same version.
Bootloader - runs on the pm3 to launch the firmware
Firmware - the part of the program that runs on pm3
Client - the part of the program than runs on host PC
Clone the repo from whatever folder you’d like to keep its source code in:
git clone https://github.com/RfidResearchGroup/proxmark3.git
From inside the cloned repo, create a makefile from the template:
cp Makefile.platform.sample Makefile.platform
In the text editor of your choice, comment out PLATFORM=PM3RDV4 and uncomment PLATFORM=PM3GENERIC and LED_ORDER=PM3EASY. The config should now contain these lines:
#PLATFORM=PM3RDV4
PLATFORM=PM3GENERIC
LED_ORDER=PM3EASY
Compile the firmware and client software with a single call to make:
make clean && make -j
This produces several files. Grab a cup of tea. This can take a while.
Once it’s compiled, with the Proxmark3 plugged in execute the corresponding shell script to flash the bootrom and the fullimage.
./pm3-flash-all
The above has the same effect as running ./pm3-flash-bootrom ; ./pm3-flash-fullimage. If ever you’ve already flashed the correct bootrom for this version but just want to re-flash the image, you also have that option:
./pm3-flash-fullimage
Optionally you can install the files on your system. This places the proxmark scripts in /usr/local/bin/, allowing you to launch them from your $PATH instead of having to launch them from within the repo.
sudo make install
THE CLIENT
With the flashed proxmark3 plugged in, execute the pm3 script we just compiled. It will launch the interactive pm3 client.
The client contains many commands neatly organized into nested namespaces like an hierarchical menu. You may use the help command to see a list of top level commands, and you may type a command followed by help to see a list of sub commands under that command. Once you’ve reached a bottom level command, the help command will prompt you to use --help or -h instead, which will give you an explanation of that commands usage in a format similar to the man pages. Take a moment using these commands to explore the command tree and get a feel for your way around the client. Some of the best documentation you will find is provided by these commands.
The first command the user should run with any new proxmark3 hardware is to check the tuning of the antennae with the hardware tune command.
pm3 --> hw tune
If you’re running a graphical environment this will launch some windows with a graph and slider, but the main thing to look for right now is in the terminal output. Check for the following lines:
[+] LF antenna is OK
[+] HF antenna is OK
When working with an implant in your arms, you may find it helpful to add a delay before commands so you have time to move your hands from the keyboard to the proxmark after hitting enter. (Personally I compose the command, position the proxmark, and then hit enter with the other hand.)
Add a delay before a single command, eg 3 seconds:
pm3 --> msleep -t 3000; lf search
Or configure the proxmark to always add the delay:
pm3 --> prefs set client.delay --ms 3000
(Note that this adds a delay before every command, not just ones reading from the antennae.)
Another very helpful tool is your session logs. Each session is saved in a separate file in ~/.proxmark3/logs and they are ordered with chronological names. During a session you may use the remark command to leave comments for yourself in these logs:
pm3 --> rem This sentence will be saved in the session log.
UPDATING VERSIONS
From inside your clone of the repo, pull the latest version, clean, and recompile everything, then flash the new bootloader and fullimage to your proxmark.
git pull
make clean && make -j
./pm3-flash-all
If you installed a previous version, you’ll still have that outdated version of the client in your $PATH, which won’t be compatible with the updated proxmark firmware. Overwrite it by installing the new version.
sudo make install