Decode Bluetooth sniffs from and to a VanMoof bike

NOT an offical VanMoof service/product!



# Make sure you have installed golang and have setup your $GOPATH correctly
go install

decode-vanmoof-blt-packages \
    -encryptionKey "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
    -bikeId "34 56 78 9a bc de" \
    -file "bt_snoop.log"


-file Required

This is the bluetooth sniff file you want to inspect.

This file should be in the BTSnoop file format.

-bikeId Required

This should be the id of your bike.

This value can be obtained from the vanmoof api.


Tries to decrypt the bluetooth packet values. Without this argument you can see wich characteristics that are send/recived but cannot really see the values unless you want to decrypt them yourself.

This should be the encryption key of your bike

This value can be obtained from the vanmoof api.


Hide challenge requests and hide the challenge / nonce inside the write requests


Only shows the first part of UUIDs as the remainder of the uuid always seems to stays the same.

Obtain bikeId and encryptionKey

  1. Login to using chrome
  2. Open the developer tools (F12)
  3. Go to the Application tab
  4. Go to the Local Storage tab and select Select the entry
  5. Click on vm-bike-credentials
  6. Copy the following values:
    • encryptionKey = encryptionKey
    • mac = bikeId


How to sniff bluetooth?

Host: Macos, Client: Macos & IOS

  1. Download XCode Additional Tools
  2. Open Hardware > PacketLogger
  3. Start logging (Make sure your bike was not connected to your device at the moment you started logging!)
  4. In the menu bar select File > Export > BTSnoop.. or ⇧ Shift + ⌘ Command + E


View Github