From aa6f38ae5a8578089c96886b1f98822ad49d7727 Mon Sep 17 00:00:00 2001 From: Harvey Phillips Date: Sat, 6 Feb 2016 17:54:55 +0000 Subject: [PATCH] Various adjustments, fixes and additions --- add_ssl.md | 25 +++++++++++++---- api.md | 22 +++++++-------- build_guide.md | 39 ++++++++++++++------------ captive_portal.md | 14 +++++----- compatible_modems.md | 59 +++++++++++++++++++++++++-------------- compatible_wifi_cards.md | 2 ++ creating_infusions.md | 36 ++++++++++++------------ dip_switches.md | 6 ++-- firmware.md | 27 ++++++++++-------- hdk.md | 2 -- hdk_gettingstarted.md | 32 ++++++++++----------- hdk_projects.md | 2 +- ics.md | 36 +++++++++++++----------- imgs/dip_switches.png | Bin 0 -> 102821 bytes index.md | 10 +++---- infusions.md | 8 +++--- karma.md | 13 ++++----- legacy.md | 10 +++---- navigation.md | 8 +++--- pineapple.md | 4 +-- reset.md | 38 ++++++++++++------------- serial_uart.md | 22 +++++++-------- video_guides.md | 4 +-- webui.md | 5 +++- wiki.md | 4 +-- 25 files changed, 231 insertions(+), 197 deletions(-) create mode 100644 imgs/dip_switches.png diff --git a/add_ssl.md b/add_ssl.md index d40f8cf..45001af 100644 --- a/add_ssl.md +++ b/add_ssl.md @@ -2,9 +2,12 @@ ## Why -Since the Pineapples are prone to attacks, individuals love to sniff the clear-text credentials as you log into the HTTP interface. This quick guide should walk-through users' on how to protect themselves via SSL... +As the WiFi Pineappple has become more popular, it has also become more of a target. By default, the WebUI is served using HTTP which is unencrypted. This means that anyone also connected to the Pineapple over WiFi could sniff the network traffic and possibly be able to determine the authentication details to be able to access the WebUI themselves. A solution to this is to use SSL encryption over the HTTP connection (otherwise known as HTTPS). ## Install Packages +There are a few packages that we will need to install first. + +Note: You will need an active internet connection on your Pineapple to perform this step. ``` opkg update @@ -13,13 +16,14 @@ opkg --dest usb install openssl-util ``` ## Create config files +Next we need to configure SSL. ``` mkdir -p /etc/ssl/certs nano /etc/ssl/openssl.cnf ``` -example contents openssl.cnf: +Here is an openssl.cnf if you don't want to customize anything: ``` dir = . @@ -92,12 +96,14 @@ subjectKeyIdentifier = hash ``` ## Prepare Certificates +Now we begin creating our certificates which will be used in the encryption process. ``` cd /etc/ssl/certs ``` ### Make Private Keys +To generate the private SSL keys, issue the following commands: ``` openssl genrsa -aes128 -out server.key 2048 @@ -105,24 +111,28 @@ openssl genrsa -aes128 -out ca.key 2048 ``` ### Remove Password From Private Key +We need to remove the password from our private key for obvious security reasons. ``` openssl rsa -in server.key -out server.key ``` ### Generate CA Certificate +The CA certificate will be used to confirm the Pineapple's identity to our browser. ``` openssl req -new -x509 -days 3650 -key ca.key -out ca.pem ``` ### Generate Certificate Signing Request +Using our CA certificate we "sign" our private key to confirm that the Pineapple is what we think it is. ``` openssl req -new -key server.key -out server.csr ``` ### Self-Signed Certificate +Now we can self-sign our certificate. ``` openssl x509 -req -days 3650 -in server.csr -CA ca.pem -CAkey ca.key -set_serial 01 -out server.pem @@ -131,8 +141,9 @@ openssl x509 -req -days 3650 -in server.csr -CA ca.pem -CAkey ca.key -set_serial Note: Don't forget to install the self-made CA certificate (ca.pem) into your browsers certificate store. ## Nginx Configuration +Finally we need to edit our Nginx (the web server that runs on the WiFi Pineapple) configuration file. -Change `/etc/nginx/nginx.conf` to: +Enter `nano /etc/nginx/nginx.conf` into the terminal and make the following changes: ``` server { @@ -144,10 +155,12 @@ Change `/etc/nginx/nginx.conf` to: ssl_ciphers HIGH:!aNULL:!MD5; ``` -Note: don't forget to change the certificate and certificate key to as you've named them. +Note: Don't forget to change the certificate and certificate key to whatever you named them in the earlier steps. -Then restart nginx +Now you can restart Nginx with: ``` /etc/init.d/nginx restart -``` \ No newline at end of file +``` + +You should now be able to access your WiFi Pineapple at [https://172.16.42.1:1471](https://172.16.42.1:1471) and log in securely over HTTPS! \ No newline at end of file diff --git a/api.md b/api.md index c75f216..b7f1728 100644 --- a/api.md +++ b/api.md @@ -2,28 +2,28 @@ ## The WiFi Pineapple Mark V Web Interface -The WiFi Pineapple Mark V Web Interface is a dynamic and modular control panel for the WiFi Pineapple. It is mainly made up of modules - known on the Pineapple as infusions. The Web Interface is made up of three major components, listed below. +The WiFi Pineapple Mark V Web Interface is a dynamic and modular control panel for the WiFi Pineapple. It is predominantly made up of modules - known on the Pineapple as "infusions". The Web Interface is made up of three major components, which will be explored in this article. ### The notification bar -The notification bar is located at the top of the Web Interface. It is made up of a notification manager, a clock, the logout button and the view picker. As the name says, the notification bar exists primarily to display notifications to users. Notifications can be sent using either PHP JavaScript or simpily a shell command. More details on this can be found in the API Documentation. +The notification bar is located at the top of the Web Interface. It is made up of a notification manager, a clock, the logout button and the view picker. As the name says, the notification bar exists primarily to display notifications to users. Notifications can be sent using either PHP, JavaScript or BASH. More details on this can be found further down. ![](imgs/api1.png) ### The small tiles -The small tiles are what make up the main visible portion of the Mark V Web Interface. These are widgets to show the current status of each infusion and / or to provide service toggles. Each tile's title can be click to open the corresponding large tiles. Small tiles should be a small view into the infusion. +The small tiles are what make up the main visible portion of the Mark V Web Interface. These are widgets to show the current status of each infusion and/or to provide service toggles. Each tile's title can be clicked on to open the corresponding large tiles. Small tiles should contain less information than the large tiles (hence the name). ![](imgs/api2.png) ### The large tiles -The large tiles are a more in-depth view into each infusion. Large tiles can be used to configure your infusion, view logs or other output, give setup instructions, and much more. Often, the large tile will be divided into tabs to display content in an orderly manner. From firmware version 1.5.0 tabes can be created using a PHP API function. +The large tiles are a more in-depth view into each infusion. Large tiles can be used to configure your infusion, view logs or other outputs, provide setup instructions, and more. Often, the large tile will be divided into tabs to display content in an orderly manner. From firmware version 1.5.0 tabes can be created using a PHP API function. ![](imgs/api3.png) ## WiFi Pineapple Mark V Infusions -The Mark V is expandable through modules, also known as infusions. These modules can be downloaded and installed over-the-air with two clicks from the "Pineapple Bar", a free market place for these modules. Additionally infusions can be created right from the "Pineapple Bar" under the "Bartender" tab. Infusions can be submitted to the [WiFi Pineapple Website](https://wifipineapple.com/) and, if approved, will be available to all Mark V users from the Pineapple Bar. +Infusions can be downloaded and installed over-the-air with two clicks from the "Pineapple Bar", a free market place for these modules. Additionally infusions can be created right from the "Pineapple Bar" under the "Bartender" tab. Infusions can be submitted to the [WiFi Pineapple Website](https://wifipineapple.com/) and, if approved, will be available to all Mark V users from the Pineapple Bar. ![](imgs/api4.png) @@ -31,11 +31,11 @@ The Mark V is expandable through modules, also known as infusions. These modules There are three different types of Web Interface Infusions: -+ **Standard Web Interface Infusion**: A standard Web Interface Infusion is the simplest of infusions. See the Web Interface Infusion structure below for more details ++ **Standard Web Interface Infusion**: A standard Web Interface Infusion is the simplest of infusions. See the Web Interface Infusion structure below for more details. + **Refreshing Web Interface Infusion**: These are the same as standard Web Interface Infusions except that the small tile will refresh every three seconds. This is particularly useful if information is being displayed which is meant to be refreshed. It also means any other code in the small tile is executed every 3 seconds. -+ **Web Interface Infusion with CLI component**: To create a Web Interface Infusion with a CLI component, a normal Web Interface infusion (standard / refreshing) must be created first. Once created, a folder named "executable" must be created inside the root of the infusion. Now, a file named "executable" must be created inside the newly created folder. This file may be an executable of any type the WiFi Pineapple can handle (bash, python, binary executable, etc). It is important to note that the executable file must have executable permissions (`chmod +x`). For more details on CLI infusions and how they work, please see the appropriate section in this document. ++ **Web Interface Infusion with CLI component**: To create a Web Interface Infusion with a CLI component, a normal Web Interface infusion (standard / refreshing) must be created first. Once created, a folder named "executable" must be created inside the root of the infusion. Then, a file named "executable" must be created inside the newly created folder. This file may be an executable of any type the WiFi Pineapple can handle (BASH, Python, PHP, etc. Please note that binary executables are discouraged.). It is important to note that the executable file must have executable permissions (`chmod +x`). For more details on CLI infusions and how they work, please see the appropriate section further down. ### Web Interface Infusion Structure @@ -53,7 +53,7 @@ By default, they are made up of four files: + This PHP file should house your PHP functions which you want to use in your infusion. + This should be the place you submit any GET or POST requests (using AJAX) to from your large or small tiles. + **handler.php** - + This PHP file is automatically generated and should not be modified unless the infusion version is being changed. This is currently the only way to increment the infusion version and is therefore required when the infusion is being submitted to the WiFi Pineapple Bar through the [WiFi Pineapple Website](https://wifipineapple.com/). + + This PHP file is automatically generated and should not be modified unless the infusion version is being changed. This is the only way to increment the infusion version and is therefore required when the infusion is being submitted to the WiFi Pineapple Bar through the [WiFi Pineapple Website](https://wifipineapple.com/). ### CLI Only Infusions @@ -62,9 +62,9 @@ CLI Only Infusions do not have a Web Interface frontend. Rather, they are extens The general structure of a CLI infusion is as follows: + **cli_handler.php** - + This file is automatically generated and should not be modified unless the infusion version is being changed. This is currently the only way to increment the infusion version and is therefore required when the infusion is submitted to the WiFi Pineapple Bar through the [WiFi Pineapple Website](https://wifipineapple.com/). + + This file is automatically generated and should not be modified unless the infusion version is being changed. This is the only way to increment the infusion version and is therefore required when the infusion is submitted to the WiFi Pineapple Bar through the [WiFi Pineapple Website](https://wifipineapple.com/). + **executable/executable** - + This file is where the actual infusion lives. It may be in the form of an interpreted executable (bash, php, python) or a binary executable. In the case of an interpreted executable, the first line of this file must use a shebang to point to the interpreter, for example `#!/usr/bin/python`. + + This file is where the actual infusion lives. It may be in the form of an interpreted executable (BASH, PHO, Python) or a binary executable (again, binaries are discouraged). In the case of an interpreted executable, the first line of this file must use a shebang to point to the interpreter, for example `#!/usr/bin/python`. ## WiFi Pineapple CLI @@ -188,7 +188,7 @@ This will set a variable named "$pineapple" up to be with the Pineapple API obje ## JavaScript API Functions -The JavaScript API is accessible from any small or large tile (and any included content therein). There is no need to initialize this API as the following functions are declared globally throughout the Web Interface. +The JavaScript API is accessible from any small or large tile (and any content included therein). There is no need to initialize this API as the following functions are declared globally throughout the Web Interface. ```javascript /** diff --git a/build_guide.md b/build_guide.md index d408b98..38c70e8 100644 --- a/build_guide.md +++ b/build_guide.md @@ -1,27 +1,27 @@ # Build Guide -Below is the modified OpenWRT source on which the WiFi Pineapple software is developed. This permits building an OpenWRT image for the MKV hardware as well as cross-compile binaries architecture compatible binaries for the system. +Below is the modified OpenWRT source on which the WiFi Pineapple software is developed. This permits building an OpenWRT image for the MKV hardware as well as cross-compiling binaries for the MIPS architecture used by the Pineapple. ## Prerequisites -Building an OpenWRT image which runs on the WiFi Pineapple MKV hardware, or to cross compile packages for the WiFi Pineapple MKV, there are a few prerequisites required. +In order to build an OpenWRT image which runs on the WiFi Pineapple MKV hardware, or to cross compile packages, there are a few prerequisites required. -First of all, this guide assumes that Ubuntu is used as the host system. The following packages are needed: +First of all, this guide assumes that Ubuntu is used as the host system. If this is not the case for you, then you may need to alter the steps accordingly. The following packages are needed: ``` sudo apt-get install build-essential subversion git-core libncurses5-dev zlib1g-dev gawk flex quilt libssl-dev xsltproc libxml-parser-perl mercurial bzr ecj cvs unzip gcc-multilib gettext ``` -**It is also recommended that a [USB 3.3V UART Serial cable](https://hakshop.myshopify.com/collections/accessory/products/serial-ttl-cable) is available as it will most likely be needed when experimenting with firmwares. +**It is also recommended that a [USB 3.3V UART Serial cable](https://hakshop.myshopify.com/collections/accessory/products/serial-ttl-cable) is available as it will most likely be needed when experimenting with firmwares.** -Do **NOT** proceed unless you know what you are doing: Custom firmwares can brick (and even hard brick) your devices. +Do **NOT** proceed unless you know what you are doing: Custom firmwares can brick (and even hard brick!) your devices. ## Building OpenWRT for the WiFi Pineapple MKV The instructions below detail the process of generating firmware images for the WiFi Pineapple MKV hardware. The commands below are all executed in the root of the extracted directory. -### Download and extract source +### Download and extract the source: ``` wget http://wifipineapple.com/mk5/source.tar.gz @@ -31,7 +31,7 @@ cd ./MK5 ### Adding software feeds -The commands below will allow for additional packages to be built into the firmware. +The commands below will download additional packages that can be built into the firmware. ``` ./scripts/feeds update -a @@ -40,7 +40,7 @@ The commands below will allow for additional packages to be built into the firmw ### Adding custom files -To add custom files to the build, the `./files/` directory is used. It represents the root of the firmware. Creating a folder called "etc" inside of the `./files/` folder and placing a file inside will place (and overwrite) said file in the firwmare. +To add custom files to the build, the `./files/` directory is used. It represents the root of the firmware (i.e /). Creating a folder called "etc" inside of the `./files/` folder and placing a file inside will place (and overwrite) said file in the root filesystem. Care should be taken if you intend to overwrite a file that would otherwise already exist (for example, making incorrect modifications to /etc/config/wireless or /etc/config/wireless could mean that you are unable to connect to your Pineapple via WiFi and/or SSH into it!). ``` mkdir -p ./files/etc/ @@ -48,23 +48,24 @@ touch ./files/etc/custom_file echo "Content" > ./files/etc/custom_file ``` -The above will create a file called custom_file in the /etc/ folder of the final firmware image. +This will create a file called custom_file in the /etc/ folder of the final firmware image. ### Preparing the build +We need to generate a `.config` file which will contain all the details of the packages and kernel modules that will be included in the build. ``` make defconfig make prereq ``` -After following the above instructions, execute the command below. This allows the configuration of the firmware build to include / exclude any packages and kernel modules in your build. Once done, the configuration should be saved. +After executing the above, we can now edit `.config`. It is a terrible idea to attempt to do this manually and thankfully OpenWRT provide a simple way to do it safely. Issue the following command and use the ncurses interface to add/remove anything you wish. It is a good idea to keep any packages that are already selected as they were chosen by the previous commands. ``` make menuconfig ``` ### Compiling the firmware -Once happy with the firmware configuration, execute the below command. This will build the tools, toolchain, and firmware image. This will take a long time. +Once you're happy with the firmware configuration, it is time to build the tools, toolchain, and the firmware image. This will take a (*very*) long time. ``` make @@ -85,18 +86,17 @@ openwrt-ar71xx-generic-mk5-v1-squashfs-sysupgrade.bin openwrt-ar71xx-generic-mk5-v1-squashfs-factory.bin ``` -The easiest way of installing a firmware is to boot the WiFi Pineapple MKV and transfer the *-sysupgrade.bin file over to it. This can be done via the SD card or via SSH. Then, the following command can be executed to perform the upgrade. +The easiest way of installing a new firmware is to boot the WiFi Pineapple MKV and transfer the *-sysupgrade.bin file over to it. This can be done via the SD card or via SSH. Then, the following command can be executed to perform the upgrade. ``` sysupgrade -n /path/to/sysupgrade.bin ``` -Should the above not be possible, the second file comes into play. This file can be used in the WiFi Pineapple MKV's recovery interface. https://WiFiPineapple.com/?flashing (Unbricking a bricked WiFi Pineapple MKV) contains all required instructions. +Should the above not be possible, the second file comes into play. This file can be used in the WiFi Pineapple MKV's recovery interface. [Unbricking a bricked WiFi Pineapple MKV](https://WiFiPineapple.com/?flashing) contains all required instructions. ## Building packages for the WiFi Pineapple MKV - -To be able to build packages and / or cross compile them for the WiFi Pineapple MKV firmware, the above instructions on building a firmware have to be followed first. Please keep in mind, binary files may not be shipped as part of WiFi Pineapple Infusions. See the WiFi Pineapple Infusion forums for more information. +To be able to build packages and/or cross compile them for the WiFi Pineapple's architecture, the above instructions on building a firmware have to be followed first. Please keep in mind, binary files may not be shipped as part of WiFi Pineapple Infusions. See the WiFi Pineapple Infusion forums for more information. ### Example package @@ -109,17 +109,20 @@ To compile the package, you will now need to go into your build configuration. M make menuconfig ``` -Now, navigate to the location of your package. The example package can be found under utilities->example-package. Select it by pressing M. Exit out and save your configuration. Then execute: +Now, navigate to the location of your package. The example package can be found under utilities->example-package. Select it by pressing M. The symbol next the to the package name will change from `< >` to ``. Exit out and save your configuration. Then execute: ``` make package/example-package/compile ``` +The built package can now be found in `./bin/ar71xx/packages/example-package_1_ar71xx.ipk`. You can transfer this file and then install it on your WiFi Pineapple using opkg: -The built package can now be found in `./bin/ar71xx/packages/example-package_1_ar71xx.ipk`. You can transfer and install this file on your WiFi Pineapple using opkg. +``` +opkg install example-package_1_ar71xx.ipk +``` ### Baking the package into the firmware -Baking a package into the firmware is as simple as repeating the above steps on compiling the package, except that this time, the package needs to be selected differently using the `make menuconfig` command. Instead of selecting it with M, it must be selected with Y. After this is complete, the firmware can be recompiled using the following commmand. This time, the resulting firmware will have the package built in. +Baking a package into the firmware is as simple as repeating the above steps on compiling the package, except that this time, the package needs to be selected differently using the `make menuconfig` command. Instead of selecting it with M, it must be selected with Y. The symbol next the to the package name will change from `< >` to `<*>`. After this is complete, the firmware can be recompiled using the same command as before. This time, the resulting firmware will have the package built in. ``` make diff --git a/captive_portal.md b/captive_portal.md index 5bfcccb..0f4ff07 100644 --- a/captive_portal.md +++ b/captive_portal.md @@ -2,22 +2,22 @@ ## What is a captive portal? -When a client connects to a WiFi Pineapple or any access point that has a captive portal present, the client will automatically be redirected to a special web page. This special web page is known as a landing page, and typically requires clients to perform an action before they can use the internet as intended. +When a client connects to a WiFi Pineapple or any access point that has a captive portal present, the client will automatically be redirected to a special web page. This special web page is known as a landing page, and typically requires clients to perform an action before they can use the internet as intended. This usually entails logging in or agreeing to a Terms Of Use agreement. ## Who uses captive portals and why? -Captive portals have many applications but are most commonly used to authenticate clients. Public Wi-Fi hotspot providers, such as Starbucks and McDonald's, typically use a captive portal to redirect clients to a web page containing a user agreement or terms of use. In this scenario, clients must agree to the terms of use before they are authenticated and permitted to use the internet freely. Some businesses provide public Wi-Fi hotspots solely because the implementation of a captive portal enables them to advertise products and services, solicit subscriptions, sell internet service, and satisfy other business-related agendas. +Captive portals have many applications but are most commonly used to authenticate clients. Public Wi-Fi hotspot providers, such as Starbucks and McDonald's, will use a captive portal to redirect clients to a web page containing an Acceptable Use Policy (AUP). In this scenario, clients must agree to the terms of use before they are authenticated and permitted to use the internet freely. Some businesses provide public Wi-Fi hotspots solely because the implementation of a captive portal enables them to advertise products and services, solicit subscriptions, sell internet service, and satisfy other business-related agendas. Although captive portals have many legitimate uses, like those described above, it's important to note that they also have the potential of being used maliciously by criminal hackers. By providing clients with a well-designed captive portal that is professional in appearance, criminal hackers are able to deceive unsuspecting clients and provide them with a sense of legitimacy. This misled sense of legitimacy, as a result, increases the client's susceptibility to malicious attacks. For example, it's a known fact that criminal hackers have successfully used captive portals to distribute malware and gather sensitive user data, including login credentials, email addresses, and financial information. ## Guide -In this guide, you will learn how to set up a captive portal on your WiFi Pineapple using the Evil Portal infusion. To improve the quality of your user experience, you will also be provided with a package containing custom splash page images and HTML code. If you prefer, you can watch the [video tutorial here](http://youtu.be/nw4bo4rXGgQ) instead. +In this guide, you will learn how to set up a captive portal on your WiFi Pineapple using the "Evil Portal" infusion. To improve the quality of your user experience, you will also be provided with a package containing custom splash page images and HTML code. If you prefer, you can watch the [video tutorial here](http://youtu.be/nw4bo4rXGgQ) instead. - 1. Connect to your WiFi Pineapple via Wi-Fi or ethernet cable - 2. Open a web browser and Log into your WiFi Pineapple's web interface + 1. Connect to your WiFi Pineapple via Wi-Fi or an ethernet cable + 2. Open a web browser and log into your WiFi Pineapple's web interface at http://172.16.42.1:1471 - Before proceeding to the next step, make sure your Pineapple is connected to the internet. The easiest way to connect your Pineapple to the internet is to use the client mode feature in the network tile. + Before proceeding to the next step, make sure your Pineapple is connected to the internet. The easiest way to connect your Pineapple to the internet is to use the "Client Mode" feature in the network tile. 3. Open the **"Pineapple Bar"** tile 4. Select the **"Pineapple Bar: Available Infusions"** tab 5. Find **"Evil Portal"** in the list of infusions and click **"Install"** @@ -70,4 +70,4 @@ In this guide, you will learn how to set up a captive portal on your WiFi Pineap 25. When prompted, click **"Start Once"** 26. Open a new tab in your web browser and **navigate to** any web page -That's it! If all went as planned, you should be redirected to your captive portal's landing page. Go ahead and click the "Accept" button to see how it works. +That's it! If all went as planned, you should be redirected to your captive portal's landing page. Go ahead and click the "Accept" button to see how it works. \ No newline at end of file diff --git a/compatible_modems.md b/compatible_modems.md index 7804a85..61f323a 100644 --- a/compatible_modems.md +++ b/compatible_modems.md @@ -4,17 +4,17 @@ Mobile Broadband (3G/4G) modems are a great way to provide an Internet connectio ## USB Mobile Broadband Modems -Firstly in order for a USB Mobile Broadband Modem to function with the WiFi Pineapple it requires to be supported by the operating system. Thanks to USB ModeSwitch the WiFi Pineapple supports over 300 modems. This is to say that recognized modems will be /modeswitched/, allowing them to transition from being USB Mass Storage devices into being USB Serial devices. +Firstly in order for a USB Mobile Broadband Modem to function with the WiFi Pineapple it needs to be supported by the Pineapple Firmware. Thanks to USB ModeSwitch the WiFi Pineapple has support for over 300 modems. This is to say that recognized modems will be *modeswitched*, allowing them to transition from being USB Mass Storage devices into being USB Serial devices, which is what we need in order to be able to use them. -The second part of this equation is the successful carrier configuration. The parameters required include an Interface Name, Protocol, Service, Device, APN, Username, Password, Default Route, PPP Redial, Peer DNS, DNS, Keepalive, and PPPD Options. These can be set from Network > Mobile Broadband from the WiFi Pineapple web UI. Most of these parameters, such as APN and Username, depend on the carrier. +The second part of the equation is successful carrier configuration. The parameters required include an Interface Name, Protocol, Service, Device, APN, Username, Password, Default Route, PPP Redial, Peer DNS, DNS, Keepalive, and PPPD Options. These can be set from Network > Mobile Broadband from the WiFi Pineapple web UI. Most of these parameters, such as APN and Username, will depend on your carrier. ## Personal Hotspots supporting USB Tethering -Much the same as automatic Internet Connection Sharing with tethered Android phones (Froyo and newer), these later type may be easier to configure since the hotspot device manages the connection. This alleviates the operating system from needing to deal with connection interruptions, redial attempts and other networking issues. +The process for these is very similar to automatic [Internet Connection Sharing](http://wiki.wifipineapple.com/#!ics.md) with tethered Android phones (Froyo and newer). These newer types of Mobile Broadband Modems are often easier to configure since the hotspot device manages the connection, rather than the WiFi Pineapple. This alleviates the operating system from needing to deal with connection interruptions, redial attempts and other networking issues the arise in Mobile Broadband connections. -Typically a Personal Hotspot with a USB Tether feature (sometimes called Ethernet over USB) will automatically enumerate as a new interface (usb0) much the same way an Ethernet interface would (eth0). The Personal Hotspot usually runs a DHCP server and will assign the new usb0 interface an IP address, which the WiFi Pineapple will accept as its default gateway. +A Personal Hotspot with a USB Tethering feature (occasionally referred to as Ethernet over USB) will automatically enumerate as a new interface (usb0) similarly to how an Ethernet interface would (eth0). The Personal Hotspot usually runs a DHCP server and will assign the new usb0 interface an IP address, which the WiFi Pineapple will accept as its default gateway. -Because of this a personal hotspot supporting USB tethering is an ideal option, requiring little or no configuration, however the hardware may be more expensive than a traditional USB dongle. +Its for this reason that a personal hotspot supporting USB tethering is the ideal choice as it requires little to no configuration. However, the hardware may be more expensive than a traditional USB dongle, and combined with an Ethernet cable, will also take up more space which may be undesirable if the Pineapple is being using as a drop box. ## Current Modem Pool @@ -23,7 +23,7 @@ Because of this a personal hotspot supporting USB tethering is an ideal option, | Carrier | Manufacturer | Adapter | Speed | Type | Connection Method | Support | Vendor/Product ID | Notes | |:--:|:--:|--|:--:|:--:|--|:--:|--|--| -| Many | Many | Android Froyo or better | Variable | Phone | Device configuration, Ethernet over USB | | | [OpenWRT USB Tethering doc](http://wiki.openwrt.org/doc/howto/usb.tethering) | +| Many | Many | Android Froyo or better | Variable | Phone | Device configuration, Ethernet over USB | Confirmed | Various | [OpenWRT USB Tethering doc](http://wiki.openwrt.org/doc/howto/usb.tethering) | | Verizon | Novatel | MiFi 5510L | LTE | HotSpot | Device configuration, Ethernet over USB | unconfirmed | | [Verizon 5510 Manual -PDF-](http://www.novatelwireless.com/files/4513/6218/1792/UG_MiFi_5510L_VZW__30Jan2013.pdf) | | Verizon | Pantech | MHS291L | LTE | HotSpot | USB_ModeSwitch, Ethernet over USB | unconfirmed | 10a9:6080 -> 10a9:6085 | [Forum post on tethering](http://www.draisberghof.de/usb_modeswitch/bb/viewtopic.php?f=3&t=1572) | | Verizon | Pantech | UML290 | LTE | USB | USB_ModeSwitch, dialup | unconfirmed | 106c:3b11 -> 106c:3718 | | @@ -54,21 +54,38 @@ Because of this a personal hotspot supporting USB tethering is an ideal option, Below is the configuration for a Novatel MC760 on the Ting network. Usage on other networks should be similar: - + `Interface Name: ppp0` (almost always ppp0) - + `Protocol: 3g` (almost always 3g) - + `Service: cdma` (cdma or evdo for an EVDO-based carrier (Verizon/Sprint in the US) or umts for a GSM carrier (ATT/T-Mobile in the US). Also some Novatel modems support the umts_only and gprs_only value) - + `Device: /dev/ttyUSB0` (This is the serial device the modem has enumerated as, either on its own or with the aid of USB_ModeSwitch. There are often three - ttyUSB0, ttyUSB1 and ttyUSB3 - for which one is the modem and the others are control channels. ttyUSB0 is usually the modem.) - + `Username: internet` (The carrier Ting requires a username/password. Your carrier may require a different value or none at all) - + `Password: internet` (Similar to username) - + `APN:` (left blank. Typically necessary for GSM carriers and not CDMA) - + `Default Route: 1` (1 makes the 3g modem your WiFi Pineapple's default Internet gateway for itself and connected clients. 0 does not.) - + `PPP Redial: persist` (almost always persist) - + `Peer DNS: 0` (1 accepts the DNS provided by the carrier's DHCP server. 0 allows you to specify your own.) - + `DNS: 8.8.8.8` (Only necessary if the above peerdns has a value of 0. I typically to use the Google DNS but you can use whatever value you wish. - + `Keep Alive: 1` (After how many disconnects should the connection be redialed) - + `PPPD Options: debug` (Some modems require this value and it is not common for this value to make an impact if it is not required) + + `Interface Name: ppp0` + This is almost always ppp0 + + `Protocol: 3g` + This is almost always 3g + + `Service: cdma` + For an EVDO-based carrier (Verizon/Sprint in the US), this value will be cdma or evdo. + For a GSM-based carrier, this value will be umts. + Also note that some Novatel modems support the umts_only and gprs_only value. + + `Device: /dev/ttyUSB0` + This is the serial device the modem has been enumerated as, either on its own or with the aid of USB_ModeSwitch. + There are often three - ttyUSB0, ttyUSB1 and ttyUSB3 - of which ttyUSB0 is usually the modem and the other two are used as control channels. + + `Username: internet` + The carrier Ting requires a username/password. Your carrier may require a different value or none at all. + + `Password: internet` + Just like with the Username field, this may or may not be required. + + `APN:` + This field is only used with GSM carriers. For CDMA carriers, this field is left intentionally blank. + + `Default Route: 1` + A value of 1 sets the 3g modem to your WiFi Pineapple's default Internet gateway for itself and connected clients. 0 will cause the routing settings on your Pineapple to not be changed after the connection is initiated. + + `PPP Redial: persist` + This will the same for nearly all configurations. + + `Peer DNS: 0` + A value of 1 will accept the DNS settings provided by the carrier's DHCP server. + Entering 0 instead will allow you to specify your own. + + `DNS: 8.8.8.8` + This field is only valid if you entered 0 into the **Peer DNS** field. You may specify any DNS Server you wish. A common choice is the one run by Google, as above. + + `Keep Alive: 1` + Sets how many disconnects are required before a redial is attempted. + + `PPPD Options: debug` + This setting is only required by certain modems. Otherwise, most modems will ignore it. ## Additional Resources -+ International APN Settings for Mobile Broadband Network Operators -+ USB ModeSwitch Device Reference \ No newline at end of file ++ [International APN Settings for Mobile Broadband Network Operators](http://www.hw-group.com/products/HWg-Ares/HWg-Ares_GSM_APN_en.html) ++ [USB ModeSwitch Device Reference](http://www.draisberghof.de/usb_modeswitch/device_reference.txt) \ No newline at end of file diff --git a/compatible_wifi_cards.md b/compatible_wifi_cards.md index b62d077..675bb19 100644 --- a/compatible_wifi_cards.md +++ b/compatible_wifi_cards.md @@ -2,6 +2,8 @@ ## USB Wireless Cards +The WiFi Pineapple supports the use of a third wireless radio via the USB port. Listed below are details of various popular USB wireless cards. + | Manufacturer | Radio | Chipset | Power Consumption | Status | |--------------|------------------------|--------------------|-------------------|-------------| | ALFA | AWUS036NHA | Atheros AR9271 | 100mA Average | Supported | diff --git a/creating_infusions.md b/creating_infusions.md index 0916417..3ad8a69 100644 --- a/creating_infusions.md +++ b/creating_infusions.md @@ -2,44 +2,44 @@ ## What are Infusions? -Infusions are extra pieces of code formed in tiles. Each infusion needs atleast 3 files, A 'small_tile.php', 'large_tile.php', and a 'handler.php' file. The 'small_tile.php' file should contain maybe a log output and a refresh function, or a small description on the Infusion. The 'large_tile.php' should contain your major functions of the Infusion. The 'handler.php' file should only be edited when you update your infusion, changing the infusion version. +Infusions are extra pieces of code formed in tiles. Each infusion needs at least 3 files, A `small_tile.php`, `large_tile.php`, and a `handler.php` file. The `small_tile.php` file could contain a log output, a refresh function, and/or a small description on the Infusion. The `large_tile.php` should contain the major functions of the Infusion. The `handler.php` file should only be edited when you update your infusion, changing the infusion version. ## How to make an Infusion? -Creating infusions is easy, now that it is possible to do it from the Pineapple Bar. To create an infusion, simply open the large tile for the Pineapple bar. +Creating infusions is easy, and it is now possible to do it from the Pineapple Bar. To create an infusion, simply open the large tile for the Pineapple bar. ![](imgs/create_infusions1.png) -Now, Click on the create tab and enter the infusions name, version, tile, and toggle whether you want it to be up-datable (Refreshes the tile every 5 seconds), and whether you want it to be installed to the SD Card. +Now, click on the create tab and enter the infusions name, version, tile, and toggle whether you want it to be up-datable (Refreshes the tile every 5 seconds), and whether you want it to be installed to the SD Card. ![](imgs/create_infusions2.png) -Refresh your pineapples Web UI and find your new tile, both small and large tile will be empty. SCP your code from pineapple to computer, edit the code and scp it back over to test. You can also whip up a very quick infusion for a specific need with the built in editor, also found in the bartender infusion. +Refresh your pineapples Web UI and find your new tile, both the small and large tiles will be empty. SCP your new code from your Pineapple to your computer. Now you can edit the code and SCP it back over to test it out. You can also whip up a very quick infusion for a specific need with the built in editor which also found in the bartender infusion. ## What do these files do? -Four files are created by default, by the bartender infusion, named 'small_tile.php', 'large_tile.php', 'functions.php' and finally 'handler.php'. +Four files are created by the bartender infusion, named `small_tile.php`, `large_tile.php`, `functions.php` and finally `handler.php`. -The small_tile.php is the tile you click on the index of the Web UI, this can contain HTML/PHP code too. This is usually used for logs or descriptions of the infusion. +The `small_tile.php` is the tile you click on main page of the WebUI and can contain HTML/PHP code. This is usually used for logs or descriptions of the infusion. -The large_tile.php is the large tile you get from clicking on the small tile. This tile should be used to host the main features of the infusion. Please look at [#ajax] for more information on using forms. +The `large_tile.php` is the large tile you get from clicking on the small tile. This tile should be used to host the main features of the infusion. Please see the [AJAX](http://wiki.wifipineapple.com/#!creating_infusions.md#AJAX) section below for more information on using forms. -The functions.php file is used in conjunction with the AJax method for forms. It is commonly used by having PHPs 'isset' to check if the form has sent a POST method, then executes PHP code. Please look at the example at the bottom of the page. +The `functions.php` file is used in conjunction with the AJAX method for forms. A common use is having PHP's 'isset' to check if the form has sent a POST method and then execute the PHP code. The example at the bottom of the page shows how you can achieve this. -The handler.php file is used by the system. It specifies the infusion name, title and version. This should only be edited for updating the version variable. +The `handler.php` file is only used by the system. It specifies the infusion name, title and version. This should only be edited for updating the version variable. ## AJAX -The pineapples large_tile for infusion works in a Javascript popup type method, using regular HTML forms would cause this to break, so we use AJAX. This prevents the pineapple going to a new page. More information can be found in the example section below. +The Pineapple's `large_tile.php` uses a Javascript popup type method. Using regular HTML forms would cause this to break, so we use AJAX instead. This prevents the browser from going to a new page. More information can be found in the example section below. ## Example -In this guide, We will make a simple infusion that contains small_tile.php code, large_tile.php code, functions.php code and demonstrates the popup() and notify() features of the API. +In this example, we will make a simple infusion that contains `small_tile.php` code, `large_tile.php` code, `functions.php` code and demonstrates the `popup()` and `notify()` features of the API. -Firstly, create a new infusion called 'ExampleInfusion' as told above. In this example, I have SCP'd the files created by the Pineapple Bar to my machine, where I edited them in an editor. Also remember that the real way to learn from an example is to type it out, not just copy and paste it. +Firstly, create a new infusion called 'ExampleInfusion' as above. In this example, I have already edited the files on my laptop before SCPing them back to the Pineapple. Remember that the real way to learn from an example is to type it out, not just copy and paste it. -Open the files in your favourite editor, and keep on the small_tile.php file. In the small tile, we will create a Refresh function with Javascript and check to see whether a program is running on the pineapple, while notifying you that you have used the refresh function. +Open the files in your favourite editor, and edit the `small_tile.php` file. In the small tile, we will create a Refresh function with Javascript and check to see whether a program is running on the pineapple, while notifying you that you have used the refresh function. -The code below does this : +This is how we do it : ```php @@ -69,9 +69,9 @@ else { echo('DNSSpoof is Running'); } ``` -The above code makes a refresh button that will refresh the small tile named ExampleInfusion, as well as telling you whether 'DNSSpoof' is running or not. For the large_tile, we will add a textbox and a submit to demonstrate the popup() function and to demonstrate the AJAX forms. +This code makes a refresh button that will refresh the small tile named ExampleInfusion, as well as telling you whether 'DNSSpoof' is running or not. For the large tile, we will add a textbox and a submit button to demonstrate the popup() function and the AJAX forms. -In your large_tile.php, you need this code : +In your `large_tile.php`, add this code : ```
@@ -86,7 +86,7 @@ function callback(data){ ``` -and in your functions.php, you need this code : +and in your `functions.php`, add this : ```php ``` -The above pieces of code will display a textbox and a submit button inside of an AJAXified form. Then it will post to the functions.php and that file will look for the submit button name. It will then output the input of the textbox you made before. +The above pieces of code will display a textbox and a submit button inside of an AJAXified form. Then it will post to the `functions.php` and that file will look for the submit button name. It will then output the input of the textbox you made before. Building on this, it should be clear how to implement a wide variety of functions into your Infusion. \ No newline at end of file diff --git a/dip_switches.md b/dip_switches.md index 01b8892..41b7d38 100644 --- a/dip_switches.md +++ b/dip_switches.md @@ -2,17 +2,17 @@ ## What do the DIP Switches do? -The new DIP's on the Mark V are available to use as boot modes. These modes can be easily set from the Web UI, and are labeled 1 through 5 from left to right. Switches 1 and 5 and reserved for system use while 2 through 4 are available to set to whatever you want. +The new DIP's on the Mark V are available to configure different boot modes/operations. These modes can be easily set from the WebUI, and are labeled 1 through 5 from left to right. Switches 1 and 5 and reserved for system use while 2 through 4 are available to set to whatever you want. ## How do I set the DIP Switches? You can set the DIP's via clicking on the 'Configuration' tile in the Web UI, then navigating to the Boot Menu tab. You can then place BASH commands in the textboxes next to the combination of switches you would like to have. After saving these, you can boot your pineapple with the same combination set on the DIP's and expect your entered commands to execute on bootup. -![](imgs/missing_image.png) +![](imgs/dip_switches.png) ## What are some examples of this? -Some examples of what to execute can be found below! Be sure to add your favourite commands to the list! +Some examples of what to execute can be found below! Be imaginative, and feel free to add your favourite commands to the list! | Boot Mode | Command | |:------------:|:------------:| diff --git a/firmware.md b/firmware.md index aff611c..50e8dc1 100644 --- a/firmware.md +++ b/firmware.md @@ -2,32 +2,35 @@ ## Overview -The WiFi Pineapples firmware is a highly modified version of OpenWRT packed with the WiFi Pineapples WebUI, as well as tools to aid your pentesting such as DNSSpoof, URLSnarf, Karma, nmap, mdk3 and much more. +The WiFi Pineapples firmware is a highly modified version of OpenWRT packed with the WiFi Pineapples WebUI, as well as tools to aid your pentesting such as DNSSpoof, URLSnarf, Karma, nmap, mdk3 and many more. ## Downloads -Download can be found here: https://wifipineapple.com/?downloads +Current and previous firmware incarnations can be found here: https://wifipineapple.com/?downloads ## Upgrading the WiFi Pineapple MKV -### Web-Interface updates +### Web-Interface Updates -With our new Web-Interface, updating individual components is easy. Simply head over to your WiFi Pineapple MKV Infusion Bar. From there, you will not only be able to download, update or remove user created infusions, but also update system infusions - if available. Simply check for updates from either the small tile or the appropriate tab in the large tile. If there is an update available, you can update with just one click! +With our new WebUI, updating individual components is easy. Simply head over to your WiFi Pineapple MKV Infusion Bar. From here, you can not only download, update and remove Infusions, but also update the core System Infusions. Just check for updates from either the small tile or the appropriate tab in the large tile. If there is an update available, you can download and apply it with just one click! ### Firmware updates -To upgrade or re-flash your firmware, navigate to the "WiFi Pineapple MK5" tile on the pineapple's Web-Interface. Once an upgrade is available, you will be able to select, download and install it all over the air. +To upgrade or re-flash your firmware, navigate to the "WiFi Pineapple MK5" tile on the pineapple's WebUI. Once an upgrade is available, you will be able to download and install it over the air. ## Upgrading manually -In case you want to upgrade manually or are having issues with the webinterface, simply follow these steps. +In case you want to upgrade manually or are having issues with the WebUI, simply follow these steps. - 1. Download the firmware from this website. Call it something like upgrade.bin. + 1. Download the firmware from [this](https://wifipineapple.com/?downloads) website. Call it something like upgrade.bin. 2. SCP the downloaded .bin file to your pineapple's `/tmp/` directory. - 3. Run the md5sum command on the uploaded .bin file and make sure it matches the one from the downloads page. + 3. Run the md5sum command on the uploaded .bin file and make sure it matches the one from the downloads page. This ensures that there hasn't been any issues in transfering the file. 4. If the MD5 sum matches, execute `sysupgrade -n -v /tmp/upgrade.bin` - 5. Wait for the reboot. + 5. Wait for the reboot -**Once done, you may now proceed with the initial WiFi Pineapple setup.** + Note: It may take several minutes for your WiFi Pineapple to apply the update and restart. + Please be patient and do **NOT** unplug the power until you are sure that your Pineapple has rebooted successfully. + +**Once it has completed, you can now proceed with the WiFi Pineapple Initial Setup from the WebUI.** ## Unbricking a bricked WiFi Pineapple MKV @@ -39,6 +42,6 @@ Bricked your WiFi Pineapple MKV? Unbricking is easy and doesn't require any extr 4. Boot up the WiFi Pineapple MKV. After around five seconds, you can navigate to http://192.168.1.1 5. Upload the factory-1.2.0.bin file through the interface. Wait for it to complete. 6. Set all the DIP switches back to the default configuration up, up, up, up, up (from left to right). - 7. Make sure the SD card is inserted and powercycle the WiFi Pineapple MKV. Your device will now boot the 1.2.0 firmware. Please wait patiently and refer to the first boot instructions in your WiFi Pineapple MKV instructions. You may skip any information relating to the stager. + 7. Make sure the SD card is inserted and powercycle the WiFi Pineapple MKV. Your device will now boot the 2.0.4 firmware. Please wait patiently and refer to the first boot instructions in your WiFi Pineapple MKV Instructions. You may skip any information relating to the stager. -**You are done. Enjoy your freshly flashed WiFi Pineapple MKV!** +**You are now done. Enjoy your freshly flashed WiFi Pineapple MKV!** diff --git a/hdk.md b/hdk.md index 7cbd251..12f1f13 100644 --- a/hdk.md +++ b/hdk.md @@ -1,7 +1,5 @@ # HDK - - The WiFi Pineapple Mark V HDK is an Arduino Pro based microcontroller board featuring the ATmega328. ![](imgs/hdk.jpg) diff --git a/hdk_gettingstarted.md b/hdk_gettingstarted.md index af4b24c..875bbc0 100644 --- a/hdk_gettingstarted.md +++ b/hdk_gettingstarted.md @@ -2,18 +2,18 @@ ![The HDK as it arrives](imgs/hdk1.png) -## Things you will need +## Things You Will Need 1. The HDK -2. A Wifi Pineapple +2. A WiFi Pineapple 3. A Soldering iron 4. Header Pins (Female and/or Male) -5. A USB to serial converter or arduino. +5. A USB to Serial Converter or Arduino Board. 6. Wires (Optional, but very useful) ## Set up of the HDK in the Pineapple -The HDK talks to the Wifi pineapple via a bit-banged SPI interface, using on board gpios. These are not enabled by default. In order to enable the interface, type: +The HDK talks to the WiFi pineapple via a bit-banged SPI interface using on the board GPIO pins. These are not enabled by default so in order to enable the interface, on your Pineapple type: `/sbin/insmod spi-gpio-custom bus0=1,18,20,19,0,125000,21` @@ -25,34 +25,30 @@ When soldered, the HDK will look something like this: ![HDK soldered and connected to the MK5](imgs/hdk2.jpg) -NB, the pinout for the HDK is compatible with Arduino Shields. If you want this, don't use the female headers shown. +Note: The pinout for the HDK is compatible with Arduino Shields. If you want to do this instead, **don't** use the female headers as shown. ## Programming the HDK -The easiest way to program the HDK is via a USB to serial converter (a arduino can be used, without the ATMEGA Chip). If you want to use the Arduino, look at the section "Uploading Using an Arduino Board" on this page: http://www.arduino.cc/en/Tutorial/ArduinoToBreadboard +The easiest way to program the HDK is with a USB to Serial Converter (an Arduino can be used, without the ATmega Chip). If you want to use the Arduino, look at the section "Uploading Using an Arduino Board" on [this](http://www.arduino.cc/en/Tutorial/ArduinoToBreadboard) page. Either way, you can use the Arduino IDE to compile and deploy the code. Set the IDE to Arduino Duemilanove, and the correct serial port. ![Arduino Gui](imgs/hdk5.png) -### Programming the HDK +### Testing -### Testing. +This program will echo out anything recieved on the SPI interface (from the Pineapple) on the Serial Port (using the Serial to USB adapter). This is by no means the only way of ensuring that everything is working, but Serial is really helpful for debugging. -This program will echo out anything recieved on the SPI interface (from the pineapple) on the serial port (using the serial to USB adapter). This is by no means the only way to test everything is working, but serial is really helpful for debugging. +The code that was used above can be found [here](spi.ino). Thanks to [Nick Gammon](https://gist.github.com/chrismeyersfsu/3317769). -You can obtain the original of this code from here: https://gist.github.com/chrismeyersfsu/3317769 - -The program will need to be uploaded to the HDK. Once complete, run the command: +The program now needs to be uploaded to the HDK. Once complete, run the command: `echo "Testing 1 2 3" >/dev/spidev1.0` -On the serial console of the HDK, the words "Testing 1 2 3" should appear. +On the serial console of the HDK, the you should see the words "Testing 1 2 3" appear. -[Code for the HDK](spi.ino) +## Additional Information -## Additional Information + Useful Links ++ [Projects](hdk_projects.md) -[Projects](hdk_projects.md) - -https://randomcoderdude.wordpress.com/2013/08/15/spi-over-gpio-in-openwrt/ ++ https://randomcoderdude.wordpress.com/2013/08/15/spi-over-gpio-in-openwrt/ \ No newline at end of file diff --git a/hdk_projects.md b/hdk_projects.md index 1ca35b1..680fb61 100644 --- a/hdk_projects.md +++ b/hdk_projects.md @@ -1,6 +1,6 @@ # Projects -Simple list of projects that people have done with the HDK +A list of projects that people have done with the WiFi Pineapple MK V HDK: | Title | Level | Who | Link | diff --git a/ics.md b/ics.md index 79dd703..7340af9 100644 --- a/ics.md +++ b/ics.md @@ -1,30 +1,32 @@ # Internet Connection Sharing +## Introduction + +Often, one of the first steps in setting up your WiFi Pineapple is connecting it to the internet. There are several ways of achieving this, and one of them is Internet Connection Sharing, or ICS for short. ICS is achieved by connecting your WiFi Pineapple to a computer that already has internet access, typically through a WiFi connection or Mobile Broadband. For a computer running Linux, Windows or Mac OS X, its a simple case of using an ethernet cable to connect the two. Its also possible to perform ICS with certain Android phones, in which case a USB cable is used. + +By default, the WiFi Pineapple has an IP address of 172.16.42.1 and will assign clients with an IP address in the range 172.16.42.100-150 through its onboard DHCP server. The default gateway of the Wifi Pineapple is 172.16.42.42. In other words, the Pineapple will actively wait for an internet connection from a host with this IP address. The way in which an internet connection is supplied in this way varies on different Operating Systems. + ## Linux ICS -With an Ethernet cable connected to the WiFi Pineapple, Internet access may be shared from an online computer. This is typically achieved with a cable connected between a notebook computer and the WiFi Pineapple directly. The notebook computer requires some form of Internet access (typically through WiFi or Mobile Broadband). +A simple tethering script is available for Linux hosts which will automatically setup the correct IP address and forwarding. -By default the WiFi Pineapple has an IP address of 172.16.42.1 and will assign WiFi clients with IP addresses in the 172.16.42.100-150 range via an onboard DHCP server. The default gateway of the WiFi Pineapple is 172.16.42.42. This means the WiFi Pineapple is looking for an Internet connection from a host with this IP address. A simple tethering script is available for Linux host which will automatically setup the IP and forwarding. - - 1. Power on the WiFi Pineapple - 2. Connect an Ethernet cable directly between the LAN port on the computer and the LAN port on the WiFi Pineapple - 3. On the computer, download the wp5.sh script from wifipineapple.com [here](https://wifipineapple.com/mk5/scripts/wp5.sh) - 4. Make the script executable with `chmod +x wp5.sh` and run the script as root (e.g. `sudo ./wp5.sh`) - 5. Follow the on screen prompts + 1. Power on the WiFi Pineapple. + 2. Connect an Ethernet cable directly between the LAN port on the computer and the LAN port on the WiFi Pineapple. + 3. On the computer, download the wp5.sh script from wifipineapple.com [here](https://wifipineapple.com/mk5/scripts/wp5.sh). + 4. Make the script executable with `chmod +x wp5.sh` and run the script as root (e.g. `sudo ./wp5.sh`). + 5. Follow the on screen prompts, as illustrated below. ![](imgs/linux_ics.png) ## Windows ICS -While there is currently no quick-connect script for Windows, it is a fairly simple and straightforward setup. First we must understand that by default with WiFi Pineapple has an IP address of 172.16.42.1 and like a regular WiFi Rouger we assign clients IP addresses in the range of 182.16.42.50-250. When tethering a PC via Ethernet or Wireless, the WiFi Pineapple will use a default gateway IP address of 172.16.42.42. +While there is currently no quick-connect script for Windows, it is still a fairly simple and straightforward setup. The Windows PC will have two network interfaces: one connected to the Pineapple (a wired connection via ethernet) and one connected to the internet (either via WiFi or Mobile Broadband). -So if the Windwos hosts's Pineapple-Facing adapter is configured with a static IP address of 172.16.42.42 and an Internet-Facing adapter (for example from another WiFi network or a USB mobile broadband modem) is configured for Internet Connection Sharing, clients connected to the WiFi Pineapple will get online throught he Windows hosts Internet connection. - -Begin by powering on the WiFi Pineapple and directly connecting an Ethernet cable between the WiFi Pineapple and PC. Open **Network Connections** on the PC and view the properties of the Internet-facing adapter. +We begin by powering on the WiFi Pineapple and directly connecting an Ethernet cable between the WiFi Pineapple and PC. Open **Network Connections** on the PC and view the properties of the Internet-facing adapter. ![](imgs/windows_ics1.png) -From the Sharing tab, check the box labeled *Allow other network users to connect through this computer's Internet connection* and click OK. You may need to select an network connection if there is more than one. +From the Sharing tab, check the box labeled *Allow other network users to connect through this computer's Internet connection* and click OK. You may need to select a network connection if there is more than one. ![](imgs/windows_ics2.png) @@ -40,13 +42,13 @@ Check *Use the following IP address* and specify 172.16.42.42 for the IP address ![](imgs/windows_ics5.png) -The WiFi Pineapple-facing and Internet-facing adapters have been configured and Internet Connection Sharing has been enabled. +The WiFi Pineapple-facing and Internet-facing adapters have now been configured and Internet Connection Sharing has been enabled. ## OSX ICS How-to provided by http://champagneandsecurity.wordpress.com/2014/10/03/wifi-pineapple-and-mac-os-x-internet-sharing/ -This one is for you Mac users out there that want to share your Mac's WiFi internet connection via the LAN cable to the WiFi Pineapple. Using the out of the box Internet sharing option of your Mac doesn't work with the WiFi Pineapple. I had experienced it again, but never gave it any good look and switched to Linux. Today I it frustrated me and I looked into it. +This one is for you Mac users out there that want to share your Mac's WiFi internet connection via the LAN cable to the WiFi Pineapple. Using the out of the box Internet Sharing option of your Mac doesn't work with the WiFi Pineapple. I had experienced it again, but never gave it any good look and switched to Linux. Today it frustrated me and I looked into it. The problem with the setup is twofold: @@ -71,10 +73,10 @@ That's it. Now you can connect the LAN cable and enjoy internet from your Pineap ## Android ICS -If your Android device support USB Tethering it may be used to provide Internet access to the WiFi Pineapple, sharing either the Android's WiFi or Mobile Broadband connection. To enable, connect a USB cable between the Android device and the WiFi Pineapple. With the WiFi Pineapple powered on and a USB cable connected between both devices, tethering is now possible. +If your Android device supports USB Tethering it may be used to provide Internet access to the WiFi Pineapple. To enable, connect a USB cable between the Android device and the WiFi Pineapple. With the WiFi Pineapple powered on and a USB cable connected between both devices, tethering is now possible. Since Android 2.3 (Gingerbread) devices, the USB tethering option will be found from the Settings menu (typically from Wireless and Networks, Tethering and Portable Hotspot). Simply check the box labeled **USB Tethering**. ![](imgs/android_ics.png) -In this configuration the WiFi Pineapple will obtain a new interface, usb0, and routing will automatically adjust to use the Android device as the WiFi Pineapple's default gateway. No configuration is necessary on the WiFi Pineapple. To discontinue use of Android USB Tethering, either disconnect the USB cable or uncheck the USB Tethering checkbox. The WiFi Pineapple will automatically disable the usb0 interface and reset the routing configuration to defaults. +In this configuration the WiFi Pineapple will obtain a new interface, usb0, and routing will automatically be adjusted to use the Android device as the WiFi Pineapple's default gateway. No configuration is necessary on the WiFi Pineapple. To discontinue use of Android USB Tethering, either disconnect the USB cable or uncheck the USB Tethering checkbox. The WiFi Pineapple will automatically disable the usb0 interface and reset the routing configuration to defaults. \ No newline at end of file diff --git a/imgs/dip_switches.png b/imgs/dip_switches.png new file mode 100644 index 0000000000000000000000000000000000000000..0235b84f82bae112fc6540057c1c01e56982ba09 GIT binary patch literal 102821 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
    c}inEjJ##8_}tiN5j!>bMKiMNdt-$ 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
    MZI4sG;MymsLm@K&x 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