The Official WiFi Pineapple Module Repository
Switch branches/tags
Nothing to show
Clone or download
Permalink
Failed to load latest commit information.
APITokens Add modules to repository Nov 16, 2017
Cabinet Cabinet 1.1 Jul 23, 2018
Commander Commander: Bump version -> 2.1 Jun 5, 2018
ConnectedClients Add modules to repository Nov 16, 2017
CursedScreech Update Portal Auth and Cursed Screech (#30) Jul 17, 2018
DNSMasqSpoof Maintenance for a few modules (#42) Aug 27, 2018
DNSspoof Maintenance for a few modules (#42) Aug 27, 2018
DWall Update DWall to work with new libpcap Dec 26, 2017
Deauth Maintenance for a few modules (#42) Aug 27, 2018
EvilPortal Update Evil Portal to 3.1 (#32) Jul 22, 2018
HTTPProxy HTTPProxy Module (#1) Nov 19, 2017
HackRF Add modules to repository Nov 16, 2017
KeyManager Add modules to repository Nov 16, 2017
LEDController LED Controller: Bump version number. Jun 4, 2018
LogManager Maintenance for a few modules (#42) Aug 27, 2018
MACInfo Using HTTPS for macvendor lookups instead of HTTP (#17) Mar 14, 2018
Meterpreter Add modules to repository Nov 16, 2017
ModemManager Add modules to repository Nov 16, 2017
ModuleMaker Add modules to repository Nov 16, 2017
Occupineapple Maintenance for a few modules (#42) Aug 27, 2018
OnlineHashCrack Maintenance for a few modules (#42) Aug 27, 2018
OpenVPNConnect Add OpenVPNConnect Module (#11) Mar 6, 2018
Papers Papers, CursedScreech, and Portal Auth Updates (#5) Jan 9, 2018
PortalAuth Update Portal Auth and Cursed Screech (#30) Jul 17, 2018
RandomRoll Add modules to repository Nov 16, 2017
Responder Maintenance for a few modules (#42) Aug 27, 2018
SSLsplit Maintenance for a few modules (#42) Aug 27, 2018
SignalStrength Add modules to repository Nov 16, 2017
SiteSurvey Maintenance for a few modules (#42) Aug 27, 2018
Status Maintenance for a few modules (#42) Aug 27, 2018
Themes fix themes module having invalid module.info Oct 15, 2018
autossh Add modules to repository Nov 16, 2017
base64encdec Add modules to repository Nov 16, 2017
dump1090 Maintenance for a few modules (#42) Aug 27, 2018
ettercap Maintenance for a few modules (#42) Aug 27, 2018
get Add modules to repository Nov 16, 2017
ngrep Maintenance for a few modules (#42) Aug 27, 2018
nmap Maintenance for a few modules (#42) Aug 27, 2018
p0f Maintenance for a few modules (#42) Aug 27, 2018
tcpdump Maintenance for a few modules (#42) Aug 27, 2018
tor Adding Tor module (#21) Apr 7, 2018
urlsnarf Maintenance for a few modules (#42) Aug 27, 2018
wps Maintenance for a few modules (#42) Aug 27, 2018
CONTRIBUTING.md Update CONTRIBUTING.md Apr 26, 2018
README.md README: Fix formatting mistake. May 7, 2018

README.md

WiFi Pineapple Module Repository

This is the module repository for the WiFi Pineapple NANO and TETRA. All the community developed modules are stored here, and developers should create pull requests for any changes to their modules, or module additions.

Module Structure

A WiFi Pineapple Module is created with HTML, AngularJS and PHP. All HTML is done using the Bootstrap CSS framework, and AngularJS combined with our PHP API allows for asynchronus updating and easy to implement features for your module.

A basic module will request information through AngularJS to PHP, and then the PHP will provide a response to AngularJS, where it will then be displayed on the HTML page for the user to see.

+-------------------+         +--------------+         +-----------+         +------+
| AngularJS Request |   -->   | PHP Response |   -->   | AngularJS |   -->   | HTML |
+-------------------+         +--------------+         +-----------+         +------+

The structure of a module is as follows:

.
├── api
│   └── module.php
├── js
│   └── module.js
├── module.html
└── module.info

More information on creating modules can be found here while more information on the API can be found here.

module.info

The module.info file is a simple JSON array consisting of author, description, devices, title, and version. The version field will need to be updated with any pull request.

module.html

The WiFi Pineapple modules make use of Bootstrap to provide a good mobile viewing experience and a clean look. Module developers are encouraged to make use of Bootstrap components, such as responsive tables and the grid system. To learn more about Bootstrap, visit the Bootstrap Website. We also include a hook for atleast one AngularJS controller. You can learn more about AngularJS at the AngularJS Website.

<div class="row">
    <div ng-controller="ExampleController" class="col-md-12">
        {{ hello }}
    </div>
</div>

module.js

The js/module.js file will house the Javascript for your module, and will be the place for controller definitions, in this brief example it will be called ExampleController. We will also set a variable called $scope.hello with content we will receieve from our PHP.

registerController("ExampleController", ['$api', '$scope', function($api, $scope) {
    $api.request({
        module: 'ExampleModule',
        action: 'getHello'
    }, function(response) {
        $scope.hello = response.text;
    });
}])

This snippet makes use of our API to send a request to our PHP with the getHello action, and will set it a response into the $scope.hello variable.

module.php

The api/module.php file must be in the pineapple namespace, and contain a routing switch statement, for example:

<?php namespace pineapple;

class ExampleModule extends Module
{
    public function route()
    {
        switch ($this->request->action) {
            case 'getHello':
                $this->hello();
                break;
            }
    }
}

We will then need to call our function hello(), which should be private and should set a response:

private function hello()
{
    $this->response = array('text' => "Hello World");
}

Note: You should never use the closing ?> PHP tag in your module.php file.