• This repository has been archived on 26/Dec/2017
  • Stars
    star
    487
  • Rank 90,352 (Top 2 %)
  • Language
    CoffeeScript
  • License
    MIT License
  • Created over 8 years ago
  • Updated over 8 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

🎁 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-node

pokemon npm version dependencies license

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!

How to use it?

Setting up the server

  • Get nodejs

  • Get protobuf >= 3

    • Linux: libprotobuf must be present (apt-get install libprotobuf-dev)
    • OSX: Use homebrew to install protobuf with brew install pkg-config and brew install --devel protobuf
    • Windows: hard to compile - follow advices
  • 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

Setting up your device

Prepare your phone to accept the MITM certificate

Using Xposed on Android

If you are using pokemon-go-xposed, set the custom endpoint to your machines IP (default port it 8082). All done!

Using iOS or Android without Xposed

  • Generate a CA MITM certificate

    • Run npm start (or coffee example.logTraffic.coffee) to generate a CA certificate
    • Download the generated certificate from the started server via http://host:8082/ca.crt (or copy the file .http-mitm-proxy/certs/ca.pem)
    • Add the certificate to the "trusted certificates" of your mobile (for "VPN and apps" on Android)
  • Setup your mobile's connection to use your machine as a proxy (default proxy port is 8081)

  • Done!

Troubleshooting

  • 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)

How to code it?

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

What's the status?

Thanks to the awesom work done around POGOProtos, all requests and responses can be intercepted and altered on the fly by now!

  • AddFortModifier
  • AttackGym
  • CatchPokemon
  • CheckAwardedBadges
  • CheckCodenameAvailable
  • ClaimCodename
  • CollectDailyBonus
  • CollectDailyDefenderBonus
  • DiskEncounter
  • DownloadItemTemplates
  • DownloadRemoteConfigVersion
  • DownloadSettings
  • Echo
  • Encounter
  • EncounterTutorialComplete
  • EquipBadge
  • EvolvePokemon
  • FortDeployPokemon
  • FortDetails
  • FortRecallPokemon
  • FortSearch
  • GetAssetDigest
  • GetDownloadUrls
  • GetGymDetails
  • GetHatchedEggs
  • GetIncensePokemon
  • GetInventory
  • GetMapObjects
  • GetPlayer
  • GetPlayerProfile
  • GetSuggestedCodenames
  • IncenseEncounter
  • LevelUpRewards
  • NicknamePokemon
  • PlayerUpdate
  • RecycleInventoryItem
  • ReleasePokemon
  • SetAvatar
  • SetContactSettings
  • SetFavoritePokemon
  • SetPlayerTeam
  • StartGymBattle
  • UpgradePokemon
  • UseIncense
  • UseItemCapture
  • UseItemEggIncubator
  • UseItemGym
  • UseItemPotion
  • UseItemRevive
  • UseItemXpBoost

Enjoy! And heaps of thanks to everyone who contributed here and on slack!

More Repositories

1

mapscii

πŸ—Ί MapSCII is a Braille & ASCII world map renderer for your console - enter => telnet mapscii.me <= on Mac (brew install telnet) and Linux, connect with PuTTY on Windows
JavaScript
7,898
star
2

react-native-gl-model-view

πŸ“Ί Display and animate textured Wavefront .OBJ 3D models with 60fps - native bridge to GLView (iOS) and jPCT-AE (Android)
Java
419
star
3

pokemon-go-xposed

πŸ“± Xposed module for Pokemon Go - Circumvents the certificate pinning by injecting the expected SSL trust chain, allows you to MITM and to configure a custom API endpoint.
Java
129
star
4

react-native-animated-math

🎞️ Animated API math extension - approximates sin, cos and tan by combining Animated Nodes with full Native Driver support
JavaScript
77
star
5

tilegrinder

♻️ A node.js GIS helper library for easy alteration of Vector Tiles in an MBTiles container
CoffeeScript
67
star
6

foodsharing

🍴A modern approach to foodsharing.network's mobile app - full React Native reimplementation of the current Android app and beyond - for iOS and Android.
TypeScript
54
star
7

pokemon-go-protobuf

πŸ› Λ› Pokemon Go protobuf protocol wrapper for node.js
JavaScript
43
star
8

tileshrink

🌐 CLI tool to reduce and simplify Vector Tile features in an MBTiles container
CoffeeScript
31
star
9

spark-bouncer

πŸ”‘ IoT RFID + Spark Core based door access control system with full cloud immersion
C++
18
star
10

satellites-above

πŸ“‘ GPS satellite tracker - which GPS satellites are currently visible above a given location on earth?
CoffeeScript
15
star
11

invisible-attachment

πŸ™ˆ Utilize invisible UTF8-characters to encode and attach any integer to a string without changing its visual appearance
JavaScript
11
star
12

points-in-polygon

πŸ–ΌοΈ Process all points inside any 2D polygon
JavaScript
8
star
13

wresenham

πŸ“ˆ Bresenham line algorithm with stroke Width - process all points on a line, given two points and a width
JavaScript
8
star
14

points-in-triangle

πŸ”Ί Process all points inside any 2D triangle (Bresenham Triangle Rasterization)
JavaScript
6
star
15

whatsapp-pandorified

Have a meaningful conversation with a Pandorabot via Whatsapp
6
star
16

spark-cerial

〰️ IoT Cloud Serial library for the Spark Core, implements a remote Serial device
C++
2
star
17

strombewusst

Arduino / Other related Source Code of the StromBewusstSein project
Objective-C
2
star