The Official WiFi Pineapple Module Repository for the NANO & TETRA
 
 
 
 
 
 
Go to file
Marc Egerton 7b5c169362
ettercap: Remove ettercap
2020-03-12 19:54:20 +00:00
APITokens Add modules to repository 2017-11-16 16:42:22 +11:00
Cabinet Cabinet 1.1 2018-07-23 19:27:15 -04:00
Commander Commander: Bump version -> 2.1 2018-06-06 00:01:58 +01:00
ConnectedClients Correctly display interface device names even if it changes 2019-05-13 11:54:17 +08:00
CursedScreech Update Portal Auth and Cursed Screech (#30) 2018-07-17 12:21:02 +10:00
DNSMasqSpoof Update Modules for 2.6.0+ (Wave 1) (#71) 2019-08-21 21:15:53 +01:00
DNSspoof Updates to dnsspoof and urlsnarf (#81) 2019-10-02 18:39:55 +01:00
DWall DWall: Specify *plaintext* in module description. 2020-03-12 19:53:49 +00:00
Deauth Update Modules for 2.6.0+ (Wave 1) (#71) 2019-08-21 21:15:53 +01:00
EvilPortal Update index.php 2019-04-08 23:57:43 +02:00
HTTPProxy HTTPProxy Module (#1) 2017-11-20 07:49:08 +11:00
HackRF Add modules to repository 2017-11-16 16:42:22 +11:00
InternetSpeedTest added ability to clear history 2019-04-13 12:46:03 -04:00
KeyManager Update Modules for 2.6.0+ (Wave 1) (#71) 2019-08-21 21:15:53 +01:00
LEDController LED Controller: Bump version number. 2018-06-05 00:49:59 +01:00
Locate added module "Locate" (#46) 2018-10-29 10:38:47 +11:00
LogManager Update Modules for 2.6.0+ (Wave 1) (#71) 2019-08-21 21:15:53 +01:00
MACInfo Using HTTPS for macvendor lookups instead of HTTP (#17) 2018-03-15 07:02:47 +11:00
Meterpreter fixes error about config not being an object 2019-06-19 10:09:38 -04:00
ModemManager Add modules to repository 2017-11-16 16:42:22 +11:00
ModuleMaker Add modules to repository 2017-11-16 16:42:22 +11:00
Occupineapple Update Modules for 2.6.0+ (Wave 1) (#71) 2019-08-21 21:15:53 +01:00
OnlineHashCrack Update Modules for 2.6.0+ (Wave 1) (#71) 2019-08-21 21:15:53 +01:00
OpenVPNConnect OpenVPNConnect 1.3 Update - RCE Bug Fix and Dependency Handling Bug Fix (#77) 2019-09-27 20:53:17 +01:00
Papers Papers: Fixed dependencies scripts for latest fw 2.6.x (#83) 2019-10-25 03:11:54 +01:00
PortalAuth sud0nick: Resolve merge conflicts for PR #50. 2019-06-19 18:09:12 +01:00
RandomRoll Add modules to repository 2017-11-16 16:42:22 +11:00
Responder Update Modules for 2.6.0+ (Wave 1) (#71) 2019-08-21 21:15:53 +01:00
SSIDManager Use php for all file system access 2019-07-24 18:03:36 -04:00
SSLsplit Misc: Update some module descriptions without dependencies until they are built. (#78) 2019-09-27 20:53:59 +01:00
SignalStrength Add modules to repository 2017-11-16 16:42:22 +11:00
SiteSurvey Update Modules for 2.6.0+ (Wave 1) (#71) 2019-08-21 21:15:53 +01:00
Status Update Modules for 2.6.0+ (Wave 1) (#71) 2019-08-21 21:15:53 +01:00
Themes Updated version 2018-12-05 12:25:47 -05:00
autossh Add modules to repository 2017-11-16 16:42:22 +11:00
base64encdec Add modules to repository 2017-11-16 16:42:22 +11:00
dump1090 Update Modules for 2.6.0+ (Wave 1) (#71) 2019-08-21 21:15:53 +01:00
get Add modules to repository 2017-11-16 16:42:22 +11:00
ngrep Update Modules for 2.6.0+ (Wave 1) (#71) 2019-08-21 21:15:53 +01:00
nmap Updates to nmap and urlsnarf (#79) 2019-10-02 18:33:32 +01:00
p0f Update Modules for 2.6.0+ (Wave 1) (#71) 2019-08-21 21:15:53 +01:00
tcpdump Update Modules for 2.6.0+ (Wave 1) (#71) 2019-08-21 21:15:53 +01:00
tor Update Modules for 2.6.0+ (Wave 1) (#71) 2019-08-21 21:15:53 +01:00
urlsnarf Updates to dnsspoof and urlsnarf (#81) 2019-10-02 18:39:55 +01:00
wps Update Modules for 2.6.0+ (Wave 1) (#71) 2019-08-21 21:15:53 +01:00
.gitignore Update Modules for 2.6.0+ (Wave 1) (#71) 2019-08-21 21:15:53 +01:00
CONTRIBUTING.md Update CONTRIBUTING.md 2018-04-26 16:56:57 -07:00
README.md README: Fix formatting mistake. 2018-05-07 19:27:28 +01:00

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.