Skip to content

Archives

Reverse engineering my cloud-connected e-scooter and finding the master key to unlock all scooters

  • Reverse engineering my cloud-connected e-scooter and finding the master key to unlock all scooters

    A great example of reverse engineering an Android app and Bluetooth IOT protocol using Frida and root access on an Android device:

    Android exposes the Java classes android.bluetooth.BluetoothGatt and android.bluetooth.BluetoothGattCallback that apps are expected to use to use GATT characteristics. We can use Frida to hook into these and override many of the interesting functions. I was mostly interested in reads, writes and GATT notifications, so I whipped up a Frida script to hook into these and print all comms to the console [...]

    The 20-byte value had me suspecting that SHA-1 was somehow being used. To confirm, I wrote another Frida script that hooks Android hashing functions exposed by the Java class java.security.MessageDigest [...]

    The app uses Firebase for most of its cloud functionality. When signing in and pairing your scooter, the server sends the app a secret key. This is stored on the Android device, and can be read with root access.

    Tags: frida reverse-engineering android firebase java kotlin gatt bluetooth react-native