A small article about setting up the Proxmark3 for the first time.
The first thing we have to do, is shutting off a copuple of things before we can flash the PM3. We have to do this, because it is seen as a modem, and we reeeally don't want ModemManager to cuase trouble when we flash the firmware for first use. If it does, we would have a very fancy little paperweight, albeit a very expensive one, so let's not take any risks :)
Here I use a Kali machine, because that's what I got. It should be the same ofr any other kind of Linux based machine.
systemctl disable ModemManager
Now, we need to edit a couple of rules for modemmanager service.
systemctl edit ModemManager.service
Now we add this to the service file, and save the file as /etc/systemd/system/ModemManager.service.d/override.conf
[Service]
Environment="MM_FILTER_RULE_TTY_ACM_INTERFACE=0"
Restart the system with
halt -r now
Now, let's check that the override rule is applied before we do anything else.
mmcli -G DEBUG
journalctl -f|grep "ModemManager.*\[filter\]"
Now, try to plug in the PM3, and let's see what happens. If you get an output like the one below, it's bad. Something is not right, so so go back, and check everything again.
ModemManager[xxxxx]: <debug> [filter] (tty/ttyACM0): port allowed: cdc-acm interface reported AT-capable
The output below, is the "safe-to-continue" output. If you get this response from the check, you're all set.
ModemManager[xxxxx]: <debug> [filter] (tty/ttyACM0) port filtered: forbidden
So, if you're good to go. Let's move on, and install some dependencies we'll need.
apt-get install p7zip git build-essential libreadline5 libreadline-dev libusb-0.1-4 libusb-dev libqt4-dev perl pkg-config wget libncurses5-dev gcc-arm-none-eabi libpcsclite-dev pcscd
The next thing we'll need, is getting the client libraries fro PM3 from git.
git clone https://github.com/RfidResearchGroup/proxmark3.git
The next thing we'll need, is moving that folder, to somewhere we know it is. Mine is in /opt/proxmark3
So jump to where you copied the folder, and let's build the software.
make clean && make all
If the compiling went without errors, we're ready for the next step, the flashing itself. Hold down the button on the PM3, around four to six seconds, until it starts blinking, and then release the button.
In your proxmark3 folder, there should be a script called flash-bootrom.sh, run it with
./flash-bootrom.sh
If that finished ok, flash the rest with
./flash-all.sh
That should be it.
See if you can find the PM3. For that, you can use dmesg, and find the PM3 in the output, to see what terminal it's listening on. When you have that, connect to it using
./proxmark3 /dev/ttyACMx
If the client connected, you should be greeted with something like this
root@xeon:/opt/proxmark3# ./proxmark3.sh
Waiting for Proxmark to appear...
██████╗ ███╗ ███╗ ████╗ ...iceman fork
██╔══██╗████╗ ████║ ══█║ ...dedicated to RDV40
██████╔╝██╔████╔██║ ████╔╝
██╔═══╝ ██║╚██╔╝██║ ══█║ This email address is being protected from spambots. You need JavaScript enabled to view it.
██║ ██║ ╚═╝ ██║ ████╔╝ https://github.com/rfidresearchgroup/proxmark3/
╚═╝ ╚═╝ ╚═╝ ╚═══╝ pre-release v4.0
Support iceman on patreon, https://www.patreon.com/iceman1001/
[=] Using UART port /dev/pm3-0
[=] Communicating with PM3 over USB-CDC
[ Proxmark3 RFID instrument ]
[ CLIENT ]
client: RRG/Iceman
compiled with GCC 8.3.0
[ PROXMARK RDV4 ]
external flash: present
smartcard reader: present
[ PROXMARK RDV4 Extras ]
FPC USART for BT add-on support: absent
[ ARM ]
bootrom: RRG/Iceman// 2019-08-12 18:42:28
os: RRG/Iceman// 2019-08-12 18:42:40
compiled with GCC 7.3.1 20180622 (release) [ARM/embedded-7-branch revision 261907]
[ FPGA ]
LF image built for 2s30vq100 on 2019/ 7/31 at 15:57:16
HF image built for 2s30vq100 on 2018/ 9/ 3 at 21:40:23
[ Hardware ]
--= uC: AT91SAM7S512 Rev A
--= Embedded Processor: ARM7TDMI
--= Nonvolatile Program Memory Size: 512K bytes, Used: 265687 bytes (51%) Free: 258601 bytes (49%)
--= Second Nonvolatile Program Memory Size: None
--= Internal SRAM Size: 64K bytes
--= Architecture Identifier: AT91SAM7Sxx Series
--= Nonvolatile Program Memory Type: Embedded Flash Memory
[usb] pm3 -->
If you did, cool, it's alive, and yoy're ready to start exploring the wonderfull world of RFID :)