? Pokemon Go MITM Proxy - Intercepts the traffic between your Pokemon Go app and their servers, decodes the protocol and gives you a handy tool to enrich your own game experience on the fly.
Pokemon Go MITM Proxy - Intercepts the traffic between your Pokemon Go App and their servers, decodes the protocol and gives you a handy tool to enrich your own game experience by altering the data on the fly.
Take a look at the examples to get started. Feel happily invited to contribute more!
Get nodejs
Get protobuf >= 3
Clone the code to experiment with the examples! (otherwise use it as a npm package)
git clone https://github.com/rastapasta/pokemon-go-mitm-node.git && cd pokemon-go-mitm-node
npm install
Setup the CoffeeScript interpreter (optional if using npm
scripts)
npm install -g coffee-script
Android
iPhone
If you are using pokemon-go-xposed, set the custom endpoint to your machines IP (default port it 8082). All done!
Generate a CA MITM certificate
npm start
(or coffee example.logTraffic.coffee
) to generate a CA certificatehttp://host:8082/ca.crt
(or copy the file .http-mitm-proxy/certs/ca.pem
)Setup your mobile's connection to use your machine as a proxy (default proxy port is 8081)
Done!
Android N requires a different certificate format, make sure you download http://host:8082/ca.crt
to your mobile
To let an iPhone or iPad trust the certificate, you might have to save and email http://host:8082/ca.crt
to yourself to open it in the Mail app
On very few systems (Raspberry Pi) the CA certificate has to be generated manually:
openssl genrsa -out .http-mitm-proxy/keys/ca.private.key 2048
openssl rsa -in .http-mitm-proxy/keys/ca.private.key -pubout > .http-mitm-proxy/keys/ca.public.key
openssl req -x509 -new -nodes -key .http-mitm-proxy/keys/ca.private.key -days 1024 -out .http-mitm-proxy/certs/ca.pem -subj "/C=US/ST=Utah/L=Provo/O=PokemonCA/CN=example.com"
If you are unable to log in after installing the certificate on Android, you may have to reboot for apps to see the new CA (#208)
PokemonGoMITM = require 'pokemon-go-mitm'
server = new PokemonGoMITM port: 8081
# Replace all PokeStops with kittys!
server.addResponseHandler "FortDetails", (data) ->
data.name = "Pokemon GO MitM PoC"
data.description = "meow!"
data.image_urls = ["http://thecatapi.com/api/images/get?format=src&type=png"]
data
Thanks to the awesom work done around POGOProtos, all requests and responses can be intercepted and altered on the fly by now!
Enjoy! And heaps of thanks to everyone who contributed here and on slack!