Setting up the Blueshark PM3 module.

The blueshark module, is an add-on for Proxmark3. Pretty basic to install, and a very nice hardware. It features a rechargeable battery, and Bluetooth, for cableless operation, using bluetooth.

So, start out with turning on PM3, and Bluetooth. The LED should be blinking a slow blue. If it is, we're ready.

Start with checking if bluetooth is enabled on your Linux host. We do that with.

systemctl status bluetooth

If it's turned off, your output will look like this one. Note the incative (dead) status in the output below.

root@xeon:/opt/proxmark3/client# systemctl status bluetooth
● bluetooth.service - Bluetooth service
     Loaded: loaded (/lib/systemd/system/bluetooth.service; disabled; vendor preset: disabled)
     Active: inactive (dead)
       Docs: man:bluetoothd(8)

jan 06 18:30:14 xeon bluetoothd[8181]: Endpoint registered: sender=:1.30 path=/MediaEndpoint/A2DPSink/sbc
jan 06 18:30:14 xeon bluetoothd[8181]: Endpoint registered: sender=:1.30 path=/MediaEndpoint/A2DPSource/sbc
jan 06 18:45:14 xeon bluetoothd[8181]: Terminating
jan 06 18:45:14 xeon bluetoothd[8181]: Endpoint unregistered: sender=:1.30 path=/MediaEndpoint/A2DPSink/sbc
jan 06 18:45:14 xeon systemd[1]: Stopping Bluetooth service...
jan 06 18:45:14 xeon bluetoothd[8181]: Endpoint unregistered: sender=:1.30 path=/MediaEndpoint/A2DPSource/sbc
jan 06 18:45:14 xeon bluetoothd[8181]: Stopping SDP server
jan 06 18:45:14 xeon bluetoothd[8181]: Exit
jan 06 18:45:14 xeon systemd[1]: bluetooth.service: Succeeded.
jan 06 18:45:14 xeon systemd[1]: Stopped Bluetooth service.

Turn it on with

service bluetooth start

If it's okay, you output of systemctl status bluetooth, should look like this.

root@xeon:/opt/proxmark3/client# systemctl status bluetooth
● bluetooth.service - Bluetooth service
     Loaded: loaded (/lib/systemd/system/bluetooth.service; disabled; vendor preset: disabled)
     Active: active (running) since Mon 2020-01-06 19:13:30 CET; 1s ago
       Docs: man:bluetoothd(8)
   Main PID: 9403 (bluetoothd)
     Status: "Running"
      Tasks: 1 (limit: 23867)
     Memory: 1.2M
     CGroup: /system.slice/bluetooth.service
             └─9403 /usr/lib/bluetooth/bluetoothd

jan 06 19:13:30 xeon systemd[1]: Starting Bluetooth service...
jan 06 19:13:30 xeon bluetoothd[9403]: Bluetooth daemon 5.50
jan 06 19:13:30 xeon systemd[1]: Started Bluetooth service.
jan 06 19:13:30 xeon bluetoothd[9403]: Starting SDP server
jan 06 19:13:30 xeon bluetoothd[9403]: Bluetooth management interface 1.14 initialized
jan 06 19:13:30 xeon bluetoothd[9403]: Sap driver initialization failed.
jan 06 19:13:30 xeon bluetoothd[9403]: sap-server: Operation not permitted (1)
jan 06 19:13:30 xeon bluetoothd[9403]: Endpoint registered: sender=:1.30 path=/MediaEndpoint/A2DPSink/sbc
jan 06 19:13:30 xeon bluetoothd[9403]: Endpoint registered: sender=:1.30 path=/MediaEndpoint/A2DPSource/sbc

Let's move on to bluetooth and rfcomm setup. First we need to setup pairing, and we need to find the PM3. We can do that with

root@xeon:/opt/proxmark3/client# bluetoothctl
Agent registered
[bluetooth]# 

Next, let's see what commands we need to pair. Try help

[bluetooth]# help
Menu main:
Available commands:
-------------------
advertise                                         Advertise Options Submenu
scan                                              Scan Options Submenu
gatt                                              Generic Attribute Submenu
list                                              List available controllers
show [ctrl]                                       Controller information
select <ctrl>                                     Select default controller
devices                                           List available devices
paired-devices                                    List paired devices
system-alias <name>                               Set controller alias
reset-alias                                       Reset controller alias
power <on/off>                                    Set controller power
pairable <on/off>                                 Set controller pairable mode
discoverable <on/off>                             Set controller discoverable mode
agent <on/off/capability>                         Enable/disable agent with given capability
default-agent                                     Set agent as the default one
advertise <on/off/type>                           Enable/disable advertising with given type
set-alias <alias>                                 Set device alias
scan <on/off>                                     Scan for devices
info [dev]                                        Device information
pair [dev]                                        Pair with device
trust [dev]                                       Trust device
untrust [dev]                                     Untrust device
block [dev]                                       Block device
unblock [dev]                                     Unblock device
remove <dev>                                      Remove device
connect <dev>                                     Connect device
disconnect [dev]                                  Disconnect device
menu <name>                                       Select submenu
version                                           Display version
quit                                              Quit program
exit                                              Quit program
help                                              Display help about this program
export                                            Print evironment variables
[bluetooth]# 

So, according to the help output, we can use scan. Let's try that, and see if we can find a PM3.

[bluetooth]# scan on
Discovery started
[CHG] Controller 00:15:83:4A:4E:C6 Discovering: yes
[NEW] Device 20:19:05:06:16:38 PM3_RDV4.0
[bluetooth]# scan off
[CHG] Device 20:19:05:06:16:38 RSSI is nil
[CHG] Controller 00:15:83:4A:4E:C6 Discovering: no
Discovery stopped
[bluetooth]# 

We could. Note the output says we have a device called PM3_RDV4.0, with a bluetooth address of 20:19:05:06:16:38.
Let's hurry up, and pair with it.

[bluetooth]# pair 20:19:05:06:16:38
Attempting to pair with 20:19:05:06:16:38
[CHG] Device 20:19:05:06:16:38 Connected: yes
Request PIN code
[agent] Enter PIN code: 1234
[CHG] Device 20:19:05:06:16:38 UUIDs: 00001101-0000-1000-8000-00805f9b34fb
[CHG] Device 20:19:05:06:16:38 ServicesResolved: yes
[CHG] Device 20:19:05:06:16:38 Paired: yes
Pairing successful
[CHG] Device 20:19:05:06:16:38 ServicesResolved: no
[CHG] Device 20:19:05:06:16:38 Connected: no
[bluetooth]# 

Next, we need to set up a serial port with rfcomm. Let's see what the help function have to say about that.

root@xeon:/opt/proxmark3/client# rfcomm -help
RFCOMM configuration utility ver 5.50
Usage:
	rfcomm [options] <command> <dev>

Options:
	-i, --device [hciX|bdaddr]     Local HCI device or BD Address
	-h, --help                     Display help
	-r, --raw                      Switch TTY into raw mode
	-A, --auth                     Enable authentication
	-E, --encrypt                  Enable encryption
	-S, --secure                   Secure connection
	-M, --master                   Become the master of a piconet
	-L, --linger [seconds]         Set linger timeout
	-a                             Show all devices (default)

Commands:
	bind     <dev> <bdaddr> [channel]	Bind device
	release  <dev>                   	Release device
	show     <dev>                   	Show device
	connect  <dev> <bdaddr> [channel]	Connect device
	listen   <dev> [channel [cmd]]   	Listen
	watch    <dev> [channel [cmd]]   	Watch

So, it seems we can connect to it using rfcomm bind rfcomm0 bluetooth_address. Let's try it.

root@xeon:/opt/proxmark3/client# rfcomm bind rfcomm0 20:19:05:06:16:38
root@xeon:/opt/proxmark3/client# 
root@xeon:/opt/proxmark3/client# rfcomm
rfcomm0: 20:19:05:06:16:38 channel 1 clean 

Let's check if it worked by calling rfcomm without parameters. Here it did work, as we have a working connection on rfcomm0. So, the last step is connecting to it with.

./proxmark3 /dev/rfcomm0

And, you should see the output below.

[ Proxmark3 RFID instrument ] 
          

 [ CLIENT ]          
  client: RRG/Iceman          
  compiled with GCC 9.2.1 20191102 OS:Linux ARCH:x86_64          

 [ PROXMARK3 RDV4 ]          
  external flash:                  present           
  smartcard reader:                present           

 [ PROXMARK3 RDV4 Extras ]          
  FPC USART for BT add-on support: present           
          
 [ ARM ]
  bootrom: RRG/Iceman/master/release (git) 
       os: RRG/Iceman/master/release (git) 
  compiled with GCC 7.3.1 20180622 (release) [ARM/embedded-7-branch revision 261907]

 [ FPGA ]
  LF image built for 2s30vq100 on 2019-07-31 at 15:57:16
  HF image built for 2s30vq100 on 2018-09-03 at 21:40:23          

 [ Hardware ]           
  --= uC: AT91SAM7S512 Rev A          
  --= Embedded Processor: ARM7TDMI          
  --= Nonvolatile Program Memory Size: 512K bytes, Used: 276818 bytes (53%) Free: 247470 bytes (47%)          
  --= Second Nonvolatile Program Memory Size: None          
  --= Internal SRAM Size: 64K bytes          
  --= Architecture Identifier: AT91SAM7Sxx Series          
  --= Nonvolatile Program Memory Type: Embedded Flash Memory          

          
[fpc] pm3 --> 

If you do, congrat's, it's working :)

You have no rights to post comments