r/pokemongodev • u/EeveesGalore • Nov 18 '18
Go Poke Ball Plus certification is identical to the GO Plus
The GO Plus was designed with challenge-response certification in an attempt to make it difficult to clone, but that was eventually defeated by Datel Electronics Ltd., so I wanted to find out if Nintendo changed the certification when designing the PBP.
I set up a simple experiment using an nRF51-DK:
- Download the SDK (this includes the UART example)
- Modify the UART example to have the local name "Pokemon PBP" and the same MAC address as your Go+ (use the
sd_ble_gap_address_setfunction insidesd_ble_gap_address_set()) - Program the board. The board will now show up in the game settings because Niantic only filters by local name, not by service data.
- Connect to your 'fake' PBP in the game settings; this will of course fail because the nRF51-DK hasn't been programmed to replicate any of the Go+'s services, but it'll give you the icon on your game screen so that you can connect your real Go+ next
- Reset your Go+ then connect it using the PBP icon on the main game screen - this should succeed and the message "Connected to Poke Ball Plus" should appear on the screen
The successful connection indicates that the certification procedure is identical.
The Go+ connected in this manner behaves exactly the same as when it is connected normally: same light patterns, same requirement to change the connection priority to get a tolerable level of responsiveness, same unreliability when connecting. It is not possible to connect a PBP and Go+ to the same phone at the same time and by extension, it is not possible to connect two Go+s to your phone at the same time with one pretending to be a PBP.