Browse Source

[DOCS] Update old docs

DSR! 2 năm trước cách đây
mục cha
commit
c4635acf30
7 tập tin đã thay đổi với 344 bổ sung10 xóa
  1. 2 2
      docs/api.md
  2. 1 1
      docs/creating_modules.md
  3. 1 4
      docs/index.md
  4. 31 0
      docs/readme.md
  5. 1 1
      docs/troubleshooting.md
  6. 0 2
      docs/videos.md
  7. 308 0
      wp6.sh

+ 2 - 2
docs/api.md

@@ -215,7 +215,7 @@ Action|Description|Parameters
 
 ### PineAP
 #### Description
-The PineAP module provides an easy way to interface with the [PineAP suite](/#!index.md#The_PineAP_Suite). For example, one might use the following to add an SSID to PineAP's pool:
+The PineAP module provides an easy way to interface with the [PineAP suite](index.md#The_PineAP_Suite). For example, one might use the following to add an SSID to PineAP's pool:
 ```
 {
   "module": "PineAP",
@@ -287,7 +287,7 @@ Action|Description|Parameters
 `removeMac`|Removes a MAC from tracking|<ul><li>`mac`<ul><li>The MAC address to stop tracking</li></ul></li>
 
 ## Module.php API
-Every module must extend the `Module` class that resides in `Module.php`. Extending this class gives the module access to the following API functions. For more information, see [Creating Modules](https://wiki.wifipineapple.com/creating_modules.md).
+Every module must extend the `Module` class that resides in `Module.php`. Extending this class gives the module access to the following API functions. For more information, see [Creating Modules](creating_modules.md).
 
 Function|Arguments|Description|Usage
 ----|----|----|----

+ 1 - 1
docs/creating_modules.md

@@ -28,7 +28,7 @@ A module will contain at least four files required to function. A `module.html`
 Modules are stored on the WiFi Pineapple at `/pineapple/modules/`.
 
 ##Creating a module
-You can create the module files on the WiFi Pineapple with ease using the [Module Maker](https://www.wifipineapple.com/modules) module. It will create the initial files for you (with an example included), and will also allow you to package the module for distribution when you are finished.
+You can create the module files on the WiFi Pineapple with ease using the [Module Maker](https://github.com/xchwarze/wifi-pineapple-community/tree/main/modules) module. It will create the initial files for you (with an example included), and will also allow you to package the module for distribution when you are finished.
 
 After downloading the module, enter the correct information into the Name, Description, Version and Author fields and click "Generate". Your module will then be ready to download and edit. Open the module in your favorite text editor.
 

+ 1 - 4
docs/index.md

@@ -1,6 +1,3 @@
-# Deprecation of the WiFi Pineapple Wiki
-The WiFi Pineapple Wiki has been deprecated. You are encouraged to use the [Official Hak5 Docs](https://docs.hak5.org) instead.
-
 # Welcome
 
 The WiFi Pineapple is more than hardware or software -- it's home to a helpful community of creative penetration testers and IT professionals. Welcome!
@@ -48,7 +45,7 @@ In conclusion, using PineAP on the WiFi Pineapple, the penetration tester is abl
 ### Thank You
 The WiFi Pineapple Wiki is brought to you by the WiFi Pineapple Team, and many other community members. As a community driven resource, the people who use and edit the wiki would be very grateful if you followed the guidelines below. This page also has tips and tricks for making your article, which would also be fabulous.
 
-All changes to the wiki can be contributed on [GitHub](https://github.com/wifipineapple/wifipineapple-wiki)
+All changes to the wiki can be contributed on [GitHub](https://github.com/xchwarze/wifi-pineapple-community/tree/main/docs)
 
 Thanks,
 WiFi Pineapple Team

+ 31 - 0
docs/readme.md

@@ -0,0 +1,31 @@
+# WiFi Pineapple Wiki
+
+Welcome to the WiFi Pineapple Wiki! This repository contains comprehensive documentation for the WiFi Pineapple, a versatile wireless penetration testing platform.
+
+## Table of Contents
+
+- [Home](index.md)
+- [Hardware](hardware.md)
+- [Setup](setup.md)
+- [Management](management.md)
+- [Connectivity](connectivity.md)
+- [Videos](videos.md)
+- [Development](#development)
+    - [Creating Modules](creating_modules.md)
+    - [API](api.md)
+- [Troubleshooting](troubleshooting.md)
+
+## Development
+
+If you are interested in developing for the WiFi Pineapple or extending its functionality, this section provides valuable resources:
+
+- [Creating Modules](creating_modules.md): Learn how to create modules for the WiFi Pineapple and enhance its capabilities.
+- [API](api.md): Explore the API documentation for the WiFi Pineapple and leverage it in your development projects.
+
+## Troubleshooting
+
+Encountering issues with your WiFi Pineapple? Don't worry! The troubleshooting section is here to help you troubleshoot common problems and find solutions.
+
+Please refer to the individual markdown files for detailed information on each topic.
+
+We hope you find this documentation useful. Happy hacking with your WiFi Pineapple!

+ 1 - 1
docs/troubleshooting.md

@@ -2,7 +2,7 @@
 
 ## LED Status Indicators
 
-**WiFi Pineapple NANO **
+**WiFi Pineapple NANO**
 The single blue LED indicates bootup and WiFi operation. While starting up, the LED will flash. Once bootup has completed the LED will become solid. The LED will flicker to indicate activity on the first WiFi radio - wlan0. This radio is host to the Access Point.
 
 **WiFi Pineapple TETRA**

+ 0 - 2
docs/videos.md

@@ -15,5 +15,3 @@
 [![Let's Code: Session 1 - WiFi Pineapple Modules and API](http://img.youtube.com/vi/Lvf2At3G1C0/0.jpg)](http://www.youtube.com/watch?v=Lvf2At3G1C0)
 
 [![WiFi Pineapple TETRA: Linux Setup](http://img.youtube.com/vi/gqMW0NeODAQ/0.jpg)](http://www.youtube.com/watch?v=gqMW0NeODAQ)
-
-[![WiFi Pineapple TETRA: Android Setup](http://img.youtube.com/vi/Lj6N7TeBLhM/0.jpg)](http://www.youtube.com/watch?v=Lj6N7TeBLhM)

+ 308 - 0
wp6.sh

@@ -0,0 +1,308 @@
+#!/bin/bash
+# WiFi Pineapple Connector for Linux
+# EULA https://www.wifipineapple.com/licence/eula.txt
+# License https://www.wifipineapple.com/licence/software_licence.txt
+
+wpver=6.5
+spineapplenmask=255.255.255.0
+spineapplenet=172.16.42.0/24
+spineapplelan=eth1
+spineapplewan=wlan0
+spineapplegw=192.168.1.1
+spineapplehostip=172.16.42.42
+spineappleip=172.16.42.1
+sfirsttime=1
+
+if [ "$EUID" -ne 0 ]
+    then echo "This WiFi Pineapple Connection script requires root."
+    sudo su -s "$0"
+    exit
+fi
+
+function banner {
+    # Show random banner because 1337
+    b=$(( ( RANDOM % 5 ) + 1 ))
+    case "$b" in
+        1)
+        echo $(tput setaf 3)
+        echo "    _       ___ _______    ____  _                              __    ";
+        echo "   | |     / (_) ____(_)  / __ \\(_)___  ___  ____ _____  ____  / /__ ";
+        echo "   | | /| / / / /_  / /  / /_/ / / __ \/ _ \/ __ '/ __ \/ __ \/ / _ \\";
+        echo "   | |/ |/ / / __/ / /  / ____/ / / / /  __/ /_/ / /_/ / /_/ / /  __/ ";
+        echo "   |__/|__/_/_/   /_/  /_/   /_/_/ /_/\___/\__,_/ .___/ .___/_/\___/  ";
+        echo "                                               $(tput setaf 3)/_/   /_/$(tput sgr0)       v$wpver";
+        ;;
+        2)
+        echo $(tput setaf 3)
+        echo "           ___       __          ___       __   __        ___ ";
+        echo "   |  | | |__  |    |__) | |\ | |__   /\  |__) |__) |    |__  ";
+        echo "   |/\| | |    |    |    | | \| |___ /~~\ |    |    |___ |___ ";
+        echo "                                                       $(tput sgr0)v$wpver"
+        ;;
+        3)
+        echo $(tput setaf 3)
+        echo "  ▄▄▌ ▐ ▄▌▪  ·▄▄▄▪       ▄▄▄·▪   ▐ ▄ ▄▄▄ . ▄▄▄·  ▄▄▄· ▄▄▄·▄▄▌  ▄▄▄ .";
+        echo "  ██· █▌▐███ ▐▄▄·██     ▐█ ▄███ •█▌▐█▀▄.▀·▐█ ▀█ ▐█ ▄█▐█ ▄███•  ▀▄.▀·";
+        echo "  ██▪▐█▐▐▌▐█·██▪ ▐█·     ██▀·▐█·▐█▐▐▌▐▀▀▪▄▄█▀▀█  ██▀· ██▀·██▪  ▐▀▀▪▄";
+        echo "  ▐█▌██▐█▌▐█▌██▌.▐█▌    ▐█▪·•▐█▌██▐█▌▐█▄▄▌▐█ ▪▐▌▐█▪·•▐█▪·•▐█▌▐▌▐█▄▄▌";
+        echo "   ▀▀▀▀ ▀▪▀▀▀▀▀▀ ▀▀▀    .▀   ▀▀▀▀▀ █▪ ▀▀▀  ▀  ▀ .▀   .▀   .▀▀▀  ▀▀▀ ";
+        echo "                                                               $(tput sgr0)v$wpver"
+        ;;
+        4)
+        echo $(tput setaf 3)
+        echo "  ▄ ▄   ▄█ ▄████  ▄█    █ ▄▄  ▄█    ▄   ▄███▄   ██   █ ▄▄  █ ▄▄  █     ▄███▄ ";
+        echo " █   █  ██ █▀   ▀ ██    █   █ ██     █  █▀   ▀  █ █  █   █ █   █ █     █▀   ▀";
+        echo "█ ▄   █ ██ █▀▀    ██    █▀▀▀  ██ ██   █ ██▄▄    █▄▄█ █▀▀▀  █▀▀▀  █     ██▄▄  ";
+        echo "█  █  █ ▐█ █      ▐█    █     ▐█ █ █  █ █▄   ▄▀ █  █ █     █     ███▄  █▄   ▄";
+        echo " █ █ █   ▐  █      ▐     █     ▐ █  █ █ ▀███▀      █  █     █        ▀ ▀███▀ ";
+        echo "  ▀ ▀        ▀            ▀      █   ██           █    ▀     ▀         $(tput sgr0)v$wpver";
+        ;;
+        5)
+        echo $(tput setaf 3)
+        echo "               (          (                                                 ";
+        echo " (  (          )\ )       )\ )                                     (        ";
+        echo " )\))(   ' (  (()/(  (   (()/( (            (     )                )\   (   ";
+        echo "((_)()\ )  )\  /(_)) )\   /(_)))\   (      ))\ ( /(  \`  )   \`  )  ((_) ))\ ";
+        echo "_(())\_)()((_)(_))_|((_) (_)) ((_)  )\ )  /((_))(_)) /(/(   /(/(   _  /((_) ";
+        echo "\ \((_)/ / (_)| |_   (_) | _ \ (_) _(_/( (_)) ((_)_ ((_)_\ ((_)_\ | |(_))   ";
+        echo " \ \/\/ /  | || __|  | | |  _/ | || ' \))/ -_)/ _\` || '_ \)| '_ \)| |/ -_)  ";
+        echo "  \_/\_/   |_||_|    |_| |_|   |_||_||_| \___|\__,_|| .__/ | .__/ |_|\___|  ";
+        echo "                                                    |_|    |_|       $(tput sgr0)v$wpver";
+        ;;
+    esac
+}
+
+function showsettings {
+    printf "\n\
+    $(tput bold)Saved Settings$(tput sgr0): Share Internet connection from $spineapplewan\n\
+    to WiFi Pineapple at $spineapplelan through default gateway $spineapplegw\n"
+}
+
+function menu {
+    printf "\n\
+    [$(tput bold)C$(tput sgr0)]onnect using saved settings\n\
+    [$(tput bold)G$(tput sgr0)]uided setup (recommended)\n\
+    [$(tput bold)M$(tput sgr0)]anual setup\n\
+    [$(tput bold)A$(tput sgr0)]dvanced IP settings\n\
+    [$(tput bold)Q$(tput sgr0)]uit\n\n    "
+    read -r -sn1 key
+    case "$key" in
+            [gG]) guidedsetup;;
+            [mM]) manualsetup;;
+            [cC]) connectsaved;;
+            [aA]) advancedsetup;;
+            [bB]) bunny;;
+            [qQ]) printf "\n"; exit;;
+    esac
+}
+
+function manualsetup {
+    ipinstalled=$(which ip)
+    if [[ "$?" == 0 ]]; then
+        ifaces=($(ip link show | grep -v link | awk {'print $2'} | sed 's/://g' | grep -v lo))
+        printf "\n    Select WiFi Pineapple Interface:\n"
+        for i in "${!ifaces[@]}"; do
+            printf "    [$(tput bold)%s$(tput sgr0)]\t%s\t" "$i" "${ifaces[$i]}"
+            printf "$(ip -4 addr show ${ifaces[$i]} | grep inet | awk {'print $2'} | head -1)\n"
+        done
+        read -r -p "    > " planq
+        if [ "$planq" -eq "$planq" ] 2>/dev/null; then
+            spineapplelan=(${ifaces[planq]})
+        else
+            printf "\n    Response must be a listed numeric option\n"; manualsetup
+        fi
+        printf "\n    Select Internet Interface:\n"
+        for i in "${!ifaces[@]}"; do
+            printf "    [$(tput bold)%s$(tput sgr0)]\t%s\t" "$i" "${ifaces[$i]}"
+            printf "$(ip -4 addr show ${ifaces[$i]} | grep inet | awk {'print $2'} | head -1)\n"
+        done
+        read -r -p "    > " inetq
+        if [ "$inetq" -eq "$inetq" ] 2>/dev/null; then
+            spineapplewan=(${ifaces[inetq]})
+        else
+            printf "\n    Response must be a listed numeric option\n"; manualsetup
+        fi
+        printf "\n$(netstat -nr)\n\n"
+        read -r -p "    Specify Default Gateway IP Address: " spineapplegw
+        savechanges
+    else
+        printf "\n\n    Configuration requires the 'iproute2' package (aka the 'ip' command).\n    Please install 'iproute2' to continue.\n"
+        menu
+    fi
+}
+
+function guidedsetup {
+    pineappledetected=$(ip addr | grep '00:[cC]0:[cC][aA]\|00:13:37' -B1 | awk {'print $2'} | head -1 | grep 'eth\|en')
+    if [[ "$?" == 0 ]]; then
+        printf "\n    WiFi Pineapple detected. Please disconnect the WiFi Pineapple from\n    this computer and $(tput bold)press any key$(tput sgr0) to continue with guided setup.\n    "
+        read -r -sn1 anykey
+        guidedsetup
+    fi
+    hasiproute2=$(which ip)
+    if [[ "$?" == 1 ]]; then
+        printf "\n\n    Configuration requires the 'iproute2' package (aka the 'ip' command).\n    Please install 'iproute2' to continue.\n"; menu
+    fi
+    hasdefaultroute=$(ip route)
+    if [[ "$?" == 1 ]]; then
+        printf "\n    No route detected. Check connection and try again.\n"; menu
+    fi
+
+    printf "\n    $(tput setaf 3)Step 1 of 3: Select Default Gateway$(tput sgr0)\n\
+    Default gateway reported as $(tput bold)$(ip route | grep default | awk {'print $3'} | head -1)$(tput sgr0)\n"
+    read -r -p "    Use the above reported default gateway?             [Y/n]? " usedgw
+    case $usedgw in
+        [yY][eE][sS]|[yY]|'')
+        spineapplegw=($(ip route | grep default | awk {'print $3'}))
+        ;;
+        [nN][oO]|[nN])
+        printf "\n$(ip route)\n\n"
+        read -r -p "    Specify the default gateway by IP address: " spineapplegw
+        ;;
+    esac
+
+    printf "\n    $(tput setaf 3)Step 2 of 3: Select Internet Interface$(tput sgr0)\n\
+    Internet interface reported as $(tput bold)$(ip route | grep default | awk {'print $5'} | head -1)$(tput sgr0)\n"
+    read -r -p "    Use the above reported Internet interface?          [Y/n]? " useii
+    case $useii in
+        [yY][eE][sS]|[yY]|'')
+            spineapplewan=($(ip route | grep default | awk {'print $5'}))
+        ;;
+        [nN][oO]|[nN])
+            printf "\n    Available Network Interfaces:\n"
+            ifaces=($(ip link show | grep -v link | awk {'print $2'} | sed 's/://g' | grep -v lo))
+            for i in "${!ifaces[@]}"; do
+                printf "    \t%s\t" "${ifaces[$i]}"
+                printf "$(ip -4 addr show ${ifaces[$i]} | grep inet | awk {'print $2'} | head -1)\n"
+            done
+            read -r -p "    Specify the internet interface by name: " spineapplewan
+        ;;
+    esac
+
+    printf "\n    $(tput setaf 3)Step 3 of 3: Select WiFi Pineapple Interface$(tput sgr0)\n    Please connect the WiFi Pineapple to this computer.\n    "
+
+    a="0"
+    until pineappleiface=$(ip addr | grep '00:[cC]0:[cC][aA]\|00:13:37' -B1 | awk {'print $2'} | head -1 | grep 'eth\|en')
+    do
+        printf "."
+        sleep 1
+        a=$[$a+1]
+        if [[ $a == "51" ]]; then
+            printf "\n    "
+            a=0
+        fi
+    done
+    printf "[Checking]"
+    sleep 5 # Wait as the system is likely to rename interface. Sleeping rather than more advanced error handling becasue reasons. Try: dmesg | tail | grep -E 'asix.*renamed'
+    pineappleiface=$(ip addr | grep '00:[cC]0:[cC][aA]\|00:13:37' -B1 | awk {'print $2'} | head -1 | grep 'eth\|en' | sed 's/://g')
+    printf "\n    Detected WiFi Pineapple on interface $(tput bold)$pineappleiface$(tput sgr0)\n";
+    read -r -p "    Use the above detected WiFi Pineapple interface?    [Y/n]? " pi
+    case $pi in
+        [yY][eE][sS]|[yY]|'')
+            spineapplelan=$pineappleiface
+        ;;
+        [nN][oO]|[nN])
+            printf "\n    Available Network Interfaces:\n"
+            ifaces=($(ip link show | grep -v link | awk {'print $2'} | sed 's/://g' | grep -v lo))
+            for i in "${!ifaces[@]}"; do
+                printf "    \t%s\t" "${ifaces[$i]}"
+                printf "$(ip -4 addr show ${ifaces[$i]} | grep inet | awk {'print $2'} | head -1)\n"
+            done
+            read -r -p "    Specify the WiFi Pineapple interface by name: " spineapplelan
+        ;;
+    esac
+    savechanges
+}
+
+function advancedsetup {
+    printf "\n\
+    By default the WiFi Pineapple resides on the $(tput bold)172.16.42.0/24$(tput sgr0) network\n\
+    with the IP Address $(tput bold)172.16.42.1$(tput sgr0) and Ethernet default route $(tput bold)172.16.42.42$(tput sgr0).\n\n\
+    The WiFi Pineapple expects an Internet connection from 172.16.42.42 by\n\
+    default, which this script aids in configuring. These IP addresses may\n\
+    be changed if desired by modifying network configs on the WiFi Pineapple.\n\n"
+    read -r -p "    Continue with advanced IP config [y/N]? " qcontinue
+    case $qcontinue in
+        [nN][oO]|[nN]|'') menu ;;
+        [yY][eE][sS]|[yY])
+            read -r -p "    WiFi Pineapple Network           [172.16.42.0/24]: " spineapplenet
+            if [[ $spineapplenet == '' ]]; then 
+            spineapplenet=172.16.42.0/24 # Pineapple network. Default is 172.16.42.0/24
+            fi
+            read -r -p "    WiFi Pineapple Netmask           [255.255.255.0]: " spineapplenmask
+            if [[ $spineapplenmask == '' ]]; then 
+            spineapplenmask=255.255.255.0 #Default netmask for /24 network
+            fi
+            read -r -p "    Host IP Address                  [172.16.42.42]: " spineapplehostip
+            if [[ $spineapplehostip == '' ]]; then 
+            spineapplehostip=172.16.42.42 #IP Address of host computer
+            fi
+            read -r -p "    WiFi Pineapple IP Address        [172.16.42.1]: " spineappleip
+            if [[ $spineappleip == '' ]]; then 
+            spineappleip=172.16.42.1 #Don't forget your towel
+            fi
+            printf "\n    Advanced IP settings will be saved for future sessions.\n    Default settings may be restored by selecting Advanced IP settings and\n    pressing [ENTER] when prompted for IP settings.\n\n    Press any key to continue"
+            savechanges
+        ;;
+    esac
+}
+
+function savechanges {
+    sed -i "s/^spineapplenmask.*/spineapplenmask=$spineapplenmask/" $0
+    sed -i "s&^spineapplenet.*&spineapplenet=$spineapplenet&" $0
+    sed -i "s/^spineapplelan.*/spineapplelan=$spineapplelan/" $0
+    sed -i "s/^spineapplewan.*/spineapplewan=$spineapplewan/" $0
+    sed -i "s/^spineapplegw.*/spineapplegw=$spineapplegw/" $0
+    sed -i "s/^spineapplehostip.*/spineapplehostip=$spineapplehostip/" $0
+    sed -i "s/^spineappleip.*/spineappleip=$spineappleip/" $0
+    sed -i "s/^sfirsttime.*/sfirsttime=0/" $0
+    sfirsttime=0
+    printf "\n    Settings saved.\n"
+    showsettings
+    menu
+}
+
+function connectsaved {
+    if [[ "$sfirsttime" == "1" ]]; then
+        printf "\n    Error: Settings unsaved. Run either Guided or Manual setup first.\n"; menu
+    fi
+    ifconfig $spineapplelan $spineapplehostip netmask $spineapplenmask up #Bring up Ethernet Interface directly connected to Pineapple
+    printf "Detecting WiFi Pineapple..."
+    until ping $spineappleip -c1 -w1 >/dev/null
+    do
+        printf "."
+        ifconfig $spineapplelan $spineapplehostip netmask $spineapplenmask up &>/dev/null
+        sleep 1
+    done
+    printf "...found.\n\n"
+    printf "    $(tput setaf 6)     _ .   $(tput sgr0)        $(tput setaf 7)___$(tput sgr0)          $(tput setaf 3)\||/$(tput sgr0)\n"
+    printf "    $(tput setaf 6)   (  _ )_ $(tput sgr0) $(tput setaf 2)<-->$(tput sgr0)  $(tput setaf 7)[___]$(tput sgr0)  $(tput setaf 2)<-->$(tput sgr0)  $(tput setaf 3),<><>,$(tput sgr0)\n"
+    printf "    $(tput setaf 6) (_  _(_ ,)$(tput sgr0)       $(tput setaf 7)\___\\$(tput sgr0)        $(tput setaf 3)'<><>'$(tput sgr0)\n"
+    ifconfig $spineapplelan $spineapplehostip netmask $spineapplenmask up #Bring up Ethernet Interface directly connected to Pineapple
+    echo '1' > /proc/sys/net/ipv4/ip_forward # Enable IP Forwarding
+    iptables -X #clear chains and rules
+    iptables -F
+    iptables -A FORWARD -i $spineapplewan -o $spineapplelan -s $spineapplenet -m state --state NEW -j ACCEPT #setup IP forwarding
+    iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
+    iptables -A POSTROUTING -t nat -j MASQUERADE
+    route del default #remove default route
+    route add default gw $spineapplegw $spineapplewan #add default gateway
+    printf "\n    Browse to http://$spineappleip:1471\n\n"
+    exit
+}
+
+function bunny {
+    printf "\nNetmask $spineapplenmask\nPineapple Net $spineapplenet\nPineapple LAN $spineapplelan\nPineapple WAN $spineapplewan\nPineapple GW $spineapplegw\nPineapple IP $spineappleip\nHost IP $spineapplehostip\n"
+    printf "\n$(lsusb | grep ASIX)\n\n$(ifconfig -a)\n\n$(route)\n\n$(dmesg | grep -E '[aA][sS][iI[[xX].*|00:[cC]0:[cC][aA]')\n"
+    printf "\n/)___(\ \n(='.'=)\n(\")_(\")\n"
+    exit
+}
+
+banner #remove for less 1337
+showsettings
+if [[ "$sfirsttime" == "1" ]]; then
+    printf "
+    Since this is the first time running the WP6 Internet Connection Sharing\n\
+    script, Guided setup is recommended to save initial configuration.\n\
+    Subsequent sessions may be quickly connected using saved settings.\n"
+fi
+menu