Skip to content

Python Wi-Fi Positioning System - Wi-Fi geolocation script using the Google Geolocation API

License

Notifications You must be signed in to change notification settings

initbrain/Python-Wi-Fi-Positioning-System

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

29 Commits
 
 
 
 
 
 
 
 

Repository files navigation


GNU General Public License v3.0
GNU General Public License v3.0


Python Wi-Fi Positioning System

This script use the Google Geolocation API.
It was tested on GNU/Linux (require iw), OpenBSD (use ifconfig) and Mac OS X (require airport).
Special thanks go to contributors!

  • API key required:

    A Google API key is required, get it yours here:
    https://developers.google.com/maps/documentation/geolocation/intro

  • Screenshot from a previous version (without argparse):

    Python Wi-Fi Positioning System

  • Installation on GNU/Linux and OpenBSD ($: user, #: root):

    On GNU/Linux, the script use the iw command to gain access to the Wi-Fi peripheral.
    On OpenBSD, it use the ifconfig command to gain access to the Wi-Fi peripheral.
    On Ubuntu distribution, it require the installation of the following dependencies:

    # apt-get install iw
    

    On Gentoo distribution, it require the installation of the following dependencies:

    # emerge -av net-wireless/iw
    

    The full git repository is at: https://github.com/initbrain/Python-Wi-Fi-Positioning-System
    Get it using the following command:

    $ git clone https://github.com/initbrain/Python-Wi-Fi-Positioning-System
    

    And proceed to final steps.
    On GNU/Linux, to use the tool, launch it with root privileges:

    $ cd Python-Wi-Fi-Positioning-System/
    $ python wifi_positioning_system.py -h
    # python wifi_positioning_system.py --api-key <GOOGLE_API_KEY> -i <WIFI_INTERFACE> --verbose --json-prettify --with-overview --map-type <ROADMAP|SATELLITE|HYBRID|TERRAIN>
    
  • Installation on Mac OS X:

    On Mac OS X, it use airport to gain access to the Wi-Fi peripheral.
    Get it using...

    % TODO
    

    And proceed to final steps.

    % python wifi_positioning_system.py --api-key <GOOGLE_API_KEY> --verbose --json-prettify --with-overview --map-type <ROADMAP|SATELLITE|HYBRID|TERRAIN>
    
  • Usage:

    On GNU/Linux and OpenBSD, a Wi-Fi interface name is required to scan with iw and ifconfig commands:

    usage: wifi_positioning_system.py [-h] [-V] [-L] [-v] [-k API_KEY] [-p] [-o]
                                      [-m {ROADMAP,SATELLITE,HYBRID,TERRAIN}]
                                      (-i WIFI_INTERFACE | --demo)
    
    optional arguments:
      -h, --help            show this help message and exit
      -V, --version         show program's version number and exit
      -L, --license         show program's license details and exit
      -v, --verbose         enable verbose messages
      -k API_KEY, --api-key API_KEY
                            Google Geolocation API key (could be hardcoded)
      -p, --json-prettify   prettify JSON output
      -o, --with-overview   accuracy overview file generation
      -m {ROADMAP,SATELLITE,HYBRID,TERRAIN}, --map-type {ROADMAP,SATELLITE,HYBRID,TERRAIN}
                            accuracy overview map type
    
    required arguments:
      -i WIFI_INTERFACE     specify Wi-Fi scan interface
      --demo                demo mode - West Norwood (London)
    
    additional informations:
      ROADMAP   displays the default road map view
      SATELLITE displays Google Earth satellite images
      HYBRID    displays a mixture of normal and satellite views
                (this is the default map type)
      TERRAIN   displays a physical map based on terrain information
    

    On Mac OS X, there is no need of a Wi-Fi interface name to launch a scan with airport:

    usage: wifi_positioning_system.py [-h] [-V] [-L] [-v] [-k API_KEY] [-p] [-o]
                                      [-m {ROADMAP,SATELLITE,HYBRID,TERRAIN}]
                                      [--demo]
    
    optional arguments:
      -h, --help            show this help message and exit
      -V, --version         show program's version number and exit
      -L, --license         show program's license details and exit
      -v, --verbose         enable verbose messages
      -k API_KEY, --api-key API_KEY
                            Google Geolocation API key (could be hardcoded)
      -p, --json-prettify   prettify JSON output
      -o, --with-overview   accuracy overview file generation
      -m {ROADMAP,SATELLITE,HYBRID,TERRAIN}, --map-type {ROADMAP,SATELLITE,HYBRID,TERRAIN}
                            accuracy overview map type
      --demo                demo mode - West Norwood (London)
    
    additional informations:
      ROADMAP   displays the default road map view
      SATELLITE displays Google Earth satellite images
      HYBRID    displays a mixture of normal and satellite views
                (this is the default map type)
      TERRAIN   displays a physical map based on terrain information
    
  • Contributors (ext-repo):

    Initial publication on Twitter
    2012-06-25: modified to run on OS X - James Armitage (@armitagej)
    2012-06-26: modified to process in python - Dan Gleebits (@DGleebits)
    2012-10-01: modified to parse the xml output of airport - Vincent Ohprecio (@BigsnarfDude)
    2017-01-03: modified to work with the new Google Geolocation API - Giovanni Angoli (@juzam)
    2017-01-06: merging all modifications - Julien Deudon (@initbrain)
    2017-01-07: modified to support new permissions assignement methods - Julien Deudon (@initbrain)
    2017-01-08: source code reorganization - Julien Deudon (@initbrain)
    2017-01-15: OpenBSD port - Geoffrey Robert (@mks10110)

About

Python Wi-Fi Positioning System - Wi-Fi geolocation script using the Google Geolocation API

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •  

Languages