Evil Portal is a captive portal module for the Hak5 Wifi Pineapple. This is the repository for the Wifi Pineapple Nano and Wifi Pineapple Tetra. If you have a Wifi Pineapple MKV you can find the code for that version here.
Basic Portals allow you to create a simple captive portal page that is the same for everyone who visits it. This is useful if your needs don't involve different clients seeing different branded pages or pages with unique functionality to them.
Targeted Portals allow you to create different portals to target a specific device or groups of devices based upon your pre-defined conditions. This is incredibly useful if you want all android devices to go to one android themed portal and all clients who are connected to "some-coffee-shop-wifi" go to a different portal all together. Targeted portals currently let you create targeting rules based on mac addresses, ssids, hostnames, and http useragents all on a per-client basis. You can either specify exact string matches or regex matches.
First clone the repo and checkout the development branch
git clone https://github.com/frozenjava/EvilPortalNano.git git checkout -b development origin/development git pull
Next change directory to EvilPortalNano
Finally, with your Wifi Pineapple connected upload the EvilPortal directory to the Wifi Pineapple to the /pineapple/modules directory.
scp -r EvilPortal firstname.lastname@example.org:/pineapple/modules/
Head on over to the Wifi Pineapples Web Interface and go to the Evil Portal module. You're all done!
Tasks for Upcoming Release
If you want to contribute to the project feel free to tackle one of these tasks!
- Figure out how to redirect clients going to HTTPS sites
- Add ability to program commands to run when a portal is enabled/disabled
- Added ability to write and view logs on a per-portal basis
- Created method writeLog($message) that writes to the portal log file
- Created method notify($message) that sends a notification to the web ui
- Added ability to download files
- Tab button in file editor will now insert four spaces
- Revamped the file editor modal
- Showing file sizes in the portal work bench
- Various quality of life improvements
- Add doc strings to all methods in module.php and functions in module.js
- Get SSID of connected client by IP address
- Add ability to route clients to different portals based upon some identifier [ssid, mac vendor, ip, etc...]
- Update the work bench so users can choose between targeted and non-targeted portals
- Create easy-to-use interface for creating targeting rules
- Create some consistency throughout the UI
- Add ability to create portals on an SD card and move between SD and Internal storage easily
- Make white listed and authorized clients IP addresses clickable like SSIDs in PineAP
- Write up some helpful information so people can just start using the module
- Consolidate all portal info into a single portal_name.json file
- Disable the button to move a portal while it is activated
- Fixed client redirection after authorization
- Removed un-needed verbosity
- Made tab key indent in the editor instead of change elements
- Added confirmation dialogue box when deleting a portal
- Created auto-start feature
- Various other quality of life updates
- Captive Portal is now purely iptables (because F*** NoDogSplash)
- Install/Remove NoDogSplash
- Start/Stop NoDogSplash
- Enable/Disable NoDogSplash
- Create/Edit/Delete/Active Portals
- Live Preview portals
- All panels collapse for a better mobile experience