Skip to content

Wardriving Analytics for Wi-Fi with Python (wawpy)

License

Notifications You must be signed in to change notification settings

edwardoughton/wawpy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Wardriving Analytics for Wi-Fi with Python (wawpy)

This repo provides code to develop estimated Wi-Fi analytics using both data collected by 'wardriving', and a predictive model developed using national statistics.

According to Wikipedia:

Wardriving is the act of searching for Wi-Fi wireless networks by a person usually in a moving
vehicle, using a laptop or smartphone. Warbiking, warcycling, warwalking and similar use the
same approach but with other modes of transportation.

The etymology of the name originates from wardialing, a method popularized by a character played by Matthew Broderick in the film WarGames and named after that film. Wardialing consists of dialing every phone number in sequence to search for modems.

Wardriving has become a widely used method for researchers focusing on mobile computing and networking security, but there has been very little examination of the statistical issues with this approach.

This code provides us with the ability to compare Wi-Fi wardriving data with a predictive model to help us quantify underlying statistical properties. With this knowledge, we can help to improve future wardriving studies as researchers can introduce methodological designs which better account for selection bias, sample representativeness and spatial statistical issues such as the modifiable areal unit problem.

Wi-Fi APs: Predicted versus Wardriving

Setup using conda

The preferred approach is to use Anaconda to handle packages and virtual environments. Hence, you can first create a conda environment called wawpy:

conda create --name wawpy python=3.7

Activate it (run this each time you switch projects):

conda activate wawpy

Install any required packages (mainly visualization-related):

conda install geopandas matplotlib seaborn pykml

Preprocessing

To preprocess the statistical area data run the following from the scripts folder:

python scripts/preprocess.py

This processes all local statistical areas for England, Wales and Scotland for both premises and households. After calculating the population in each area, the 'oa_lookup.csv' file is written which contains information for each statistical unit, such as the population density or urban-rural geotype.

Running the scripts for processing self-collected (sc) WiGLE data

There is a set order in which to run the code from the scripts folder, as follows:

python scripts/oa_list.py
python scripts/prems.py
python scripts/sc.py

The oa_list.py processes all collected WiGLE (.kml) data files and exports the all_collected_points.shp file to the data/intermediate folder. It finally writes out the oa_list.csv to the same folder.

Next, the prems.py script processes the ITRC premises-level data into the data/intermediate folder for each statistical area.

All self-collected data are then processed via the sc.py script which adds a set buffer to each data point and intersects this shape with other APs and buildings. Data are written out to the results folder.

Running the scripts for estimating national Wi-Fi availability

To make an estimate of fixed broadband adoption and Wi-Fi availability, for all areas using national statistics (ns), run the ns.py script:

python scripts/ns.py

Visualizing Wi-Fi availability results

Finally, the vis.py script takes self-collected data for all areas, along with the national estimates from the predictive model, to produce a set of plotted visualizations:

python vis/vis.py

About

Wardriving Analytics for Wi-Fi with Python (wawpy)

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published