Occupy WiFi is a concept project built around a portable router that functions as a web server that distributes propaganda, enabling activists, protestors and other freedom of speech advocates to virtually demonstrate in public without being identified as such.
Firmware is provided for TP-Link TL-MR3040 devices which are used for their low price, excellent portability (batteries included!) and flawless support for OpenWrt-based firmware. The devices serve as LAN-only captive portal hotspots that capture and route all traffic to a local web server that serves propaganda of choice. Custom content can be loaded onto USB drives and seamlessly plugged in.
TL-MR3020 and TL-WR703N are both supported as secondary devices for stationary deployments, or with external portable 5V power.
Firmware images baked from this repository are based on the OpenWrt Image Generator framework.
Build supported only on x86_64
Linux machines. Trigger with:
$ ./build.sh
Artifacts can be found in OpenWrt-ImageBuilder-ar71xx_generic-for-linux-x86_64/bin/ar71xx
.
If you can't build an image yourself, you can grab a stable image from the Travis CI build artifacts. Latest stable images:
| Device | Factory | Sysupgrade
:---: | ------ | ------- | ---------- | TL-MR3040 | tl-mr3040-v2-factory.bin | tl-mr3040-v2-sysupgrade.bin | TL-MR3020 | tl-mr3020-v1-factory.bin | tl-mr3020-v1-sysupgrade.bin | TL-WR703N | tl-wr703n-v1-factory.bin | tl-wr703n-v1-sysupgrade.bin
- Access the default firmware via http://192.168.0.1 (default user/pass is
admin/admin
) - Go to the
Firmware Upgrade
menu - Upload
occupywifi-ar71xx-generic-tl-mr3040-v2-squashfs-factory.bin
(make sure you're using the factory image)
Copy the sysupgrade image to /tmp
:
$ scp occupywifi-ar71xx-generic-tl-mr3040-v2-squashfs-sysupgrade.bin 192.168.1.1:/tmp
Then, SSH into the device and run:
$ sysupgrade -n /tmp/occupywifi-ar71xx-generic-tl-mr3040-v2-squashfs-sysupgrade.bin
Note the -n
flag that will ensure no old configuration is saved.
Now that your device is flashed, there are several customization steps you'll want to do.
SSH won't be enabled until you set a password, so telnet into the device and set a root user password:
$ telnet 192.168.1.1
$ passwd
You can now SSH and SCP into your device with root
user and the new password.
$ ssh [email protected]
The default wireless SSID is OccupyWiFi
, and is defined in /etc/config/wireless
.
The OccupyWifi image provides a simple default captive portal webpage. New content can be easily deployed by sticking a USB drive into the device. The are a few requirements for loading content from the USB:
- USB drive must contain a single partition which is formatted as a FAT filesystem
- Entry point must be a single
splash.html
page on the USB drive root directory - Any other pages or static assets must be hosted under the
static/
directory - Other content that does not match these specifications will not be served by the captive portal