Git Product home page Git Product logo

map-a-droid's Introduction

Project has been moved

New MAD repo

Map'A'Droid

Python 2.7

MAD-Banner

The Raid Mapper is a Raid scanner for Pokemon GO, based on Android devices and OCR.

Information

Requirements

Current limitations

  • It takes time to load when you teleport between different locations. So faster phones may handle the loading better. We are testing on low end specs like Redmi 5A for $75. A parameter to adjust the delays in between teleports and screenshots is presented. Check the help of startWalker.py
  • OCR won't be 100% correct, you can use MADmin to correct any faulty scans.
  • RemoteGPSController (RGC) is know to sometimes crash follow the below options:
    • Disable Battery Optimization in Settings-> Apps -> RGC -> Battery
    • Go to RGC-Settings (within RGC) and enable OOM Overwrite

Some (but not limiting) examples of phones working with the project:

  • Redmi 5A (annoying to setup) running LineageOS 15.1
  • Samsung S5(+) running LineageOS 15.1
  • Motorola G4 running LineageOS 15.1
  • HTC One M7 running LineageOS 14.1
  • Samsung XCover 4 running stock Android 7.1.2

Installation

Prerequisites - Computer

Install Python 2.7 according to docs for your platform.

Once Python is installed, ensure that pip and Python is installed correctly by running:

  • python --version - should return 2.7.X
  • pip --version - If it returns a version, it is working. If not, visit here

Clone this repository: git clone https://github.com/Grennith/Map-A-Droid.git

Make sure you're in the directory of Map-A-Droid and run: pip install -r requirements.txt

Depending on your OS, you may need to install the following:

Ubuntu/Debian

Ubuntu/Debian, run apt install tesseract-ocr python-opencv

If you do not get OpenCV 3.0 or above: Run the shell from here

If face issues with the shell script ensure that Open JDK has installed correctly and try and running lines 57-70 individually and on line 67 run just cmake without the parameters.

All other parts are installed from the requirements.txt

MacOS (Using Brew (How to Install Brew))

Run the shell from here

If face issues with the shell script ensure that Open JDK has installed correctly and try and running lines 57-70 individually and on line 67 run just cmake without the parameters.

brew install imagemagick
brew install tesseract --all-languages

Windows (Tested on Windows 10 x64)

Install Python 3.6 
https://www.python.org/ftp/python/3.6.0/python-3.6.0-amd64.exe
Make sure to add Python to PATH during the setup.

Git  Windows:
https://git-for-windows.github.io/

Microsoft Visual C++ Compiler  Python 3.6
https://wiki.python.org/moin/WindowsCompilers

Node.js  Windows
https://nodejs.org/en/download

Tesseract
https://github.com/UB-Mannheim/tesseract/wiki 

x32b: https://digi.bib.uni-mannheim.de/tesseract/tesseract-ocr-w32-setup-v4.0.0-rc4.20181024.exe
x64b: https://digi.bib.uni-mannheim.de/tesseract/tesseract-ocr-w64-setup-v4.0.0-rc4.20181024.exe

Clone this repository:
git clone https://github.com/Grennith/Map-A-Droid.git

Make sure you are on the directory of Map-A-Droid and run:
pip install -r requirements.txt
Fix error about twisted error:
https://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted
https://download.lfd.uci.edu/pythonlibs/h2ufg7oq/Twisted-18.9.0-cp37-cp37m-win_amd64.whl
I'd recommend saving that wheel file in the directory where you've installed Python i.e somewhere in Local Disk C
Then visit the folder where the wheel file exists and run pip install Twisted18.9.0-cp37-cp37m-win_amd64.whl
pip install setuptools
python3 -m pip install -U pip setuptools
Run pip install -r requirements.txt


Fix error about opencv "No matching distribution found for opencv-python (from -r requirements.txt )"
pip install --upgrade pip
pip install opencv-python
pip install opencv-contrib-python
pip install opencv-python-headless
pip install tesseract-ocr python-opencv
pip install -r requirements.txt

Dont forget to restart your pc  and enjoy :)

Prerequisites - Mobile

  1. Ensure your phone has an unlocked bootloader and it able to support root. Lineage OS is a good place to start for a custom ROM and they have good installation instruction for each device.

  2. Install Magisk

  3. Install RemoteGPSController (RGC) located in the APKs github folder.

  4. Install Link2SD and ensure that RemoteGPSController is converted to a system app.

  5. To help with rubberbanding when teleporting do the following

    • Disable background data of Google Play Services
    • Check the GMS option within RGC settings

MySQL - Database

You will need a MySQL server installed:

Remember: The account you use for Map-A-Droid has to have CREATE/DROP permissions as well as INSERT, UPDATE, DELETE, and SELECT!

Configuration

  1. Rename config.ini.example to config.ini and fill out:
    • MySQL Settings (RM or Moncole Database)
    • Device Specifics (Width and Height resolutions in pixels)
    • Path Settings (like pogo assets)
    • Timezone Settings (if you use RM)
    • Coords CSV (Create a blank "coords.csv" file and set file: coords.csv)

  1. We need gym images and there are two solutions:
    • If you have a RocketMap/Monocle database with old gym-details, run downloadGymImages.py
    • Or, grab the images from Ingress Intel Map

(The images should be located in gym_img folder)


  1. We also need gym locations and there are two solutions:
    • If you have a RocketMap/Monocle database with old gym-details, run downloadCoords.py
    • Or, grab the locations from Ingress Intel Map

(The coords should be located in coords.csv if you followed the last step in 1.)


  1. Fill out the rest of the config.ini, the important parts are:
    • Telnet Settings (RemoteGpsController)

Running

  1. Mobile - Start Remote GPS Controller.
    • Select Start within the app to start GPS
    • Select MediaProjection to allow touch commands

  1. PC - Make sure you're in the directory of Map-A-Droid and run the following two commands

To start the GPS walking around python startWalker.py -os

To start the processing of the screenshot that have been taken python startWalker.py -oo

Best practice is to run both commands in seperate screen sessions.

Note if running via ssh you may face issues around "no screen available" to get around the prefix your commands with MPLBACKEND=Agg


Updating the application

Make sure you're in the directory of Map-A-Droid and run:

git pull
pip install -r requirements.txt

If there are changes to OCR that require OCR hashing to be cleared it will likely be announced in Discord. But the argument you add to your -oo command is -chd The command will look like this: python startWalker.py -oo -chd

WE DO NOT GUARANTEE IT WILL BE RUNNING PERFECTLY FINE, AS THE PROJECT IS IN ONGOING DEVELOPMENT

TODO

  • Write tests
  • Improve scans
  • Improve error handling
  • Support more/all resolutions

License

See LICENSE - GNU GENERAL PUBLIC LICENSE.

map-a-droid's People

Contributors

abovecolin avatar abyssdiver avatar adriendelage avatar bbdoc avatar cecpk avatar crhbetz avatar georgeherby avatar grennith avatar krzee avatar legitdongo avatar m3g4theking avatar muckelba avatar nepixl avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

map-a-droid's Issues

[Idea]

hi,

stumbled over those slides from BlackHat 2018 wher another framework after xposed and frida was introduced to intercept android apps: ARTist. It allows a complete log of network traffic before/after encryption and has a module with it dumping traffic according to those slides
Maybe a in-process solution can be created from this making the whole error prone OCR part obsolete

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.