Эх сурвалжийг харах

Panel - PineAP: Configure used interface

DSR! 4 жил өмнө
parent
commit
49ebf9b835

+ 65 - 0
src/etc/init.d/pineapd

@@ -0,0 +1,65 @@
+#!/bin/sh /etc/rc.common
+# Copyright (C) 2018 Hak5.org
+
+
+START=99
+
+gen_config() {
+cat << EOF > /tmp/pineap.conf
+autostart = $(uci get pineap.@config[0].autostart)
+karma = $(uci get pineap.@config[0].karma)
+beacon_interval = $(uci get pineap.@config[0].beacon_interval)
+beacon_response_interval = $(uci get pineap.@config[0].beacon_response_interval)
+beacon_responses = $(uci get pineap.@config[0].beacon_responses)
+capture_ssids = $(uci get pineap.@config[0].capture_ssids)
+broadcast_ssid_pool = $(uci get pineap.@config[0].broadcast_ssid_pool)
+logging = $(uci get pineap.@config[0].logging)
+mac_filter = $(uci get pineap.@config[0].mac_filter)
+ssid_filter = $(uci get pineap.@config[0].ssid_filter)
+ap_channel = $(uci get pineap.@config[0].ap_channel)
+pineap_mac = $(ifconfig -a wlan0 | grep HWaddr | awk '{print $5}')
+target_mac = $(uci get pineap.@config[0].target_mac)
+pineap_interface = $(uci get pineap.@config[0].pineap_interface)
+recon_db_path = $(uci get pineap.@config[0].recon_db_path)
+hostapd_db_path = $(uci get pineap.@config[0].hostapd_db_path)
+ssid_db_path = $(uci get pineap.@config[0].ssid_db_path)
+connect_notifications = $(uci get pineap.@config[0].connect_notifications)
+disconnect_notifications = $(uci get pineap.@config[0].disconnect_notifications)
+rts_enabled = off
+rts_scan_id = -1
+EOF
+}
+
+start() {
+    interface_mon=$(uci get pineap.@config[0].pineap_interface)
+    interface=${interface_mon/mon/''}
+
+    mkdir -p /tmp/handshakes
+    gen_config
+    
+    #ifconfig wlan1mon &>/dev/null || airmon-ng start wlan1 &>/dev/null
+    ifconfig interface_mon &>/dev/null || airmon-ng start interface &>/dev/null
+    /usr/sbin/pineapd /tmp/pineap.conf &>/dev/null &
+    sleep 1
+}
+
+stop() {
+    killall -9 pineapd
+    rm /var/run/pineapd.sock
+    rm /var/run/pineapd.lock
+}
+
+restart() {
+    stop
+    start
+}
+
+boot() {
+    gen_config
+    /usr/sbin/pineapd /tmp/pineap.conf --initdb
+    if [[ $(uci get pineap.@config[0].autostart) == '1' ]]; then
+        start
+    fi
+    logger =========== PineAP ==============
+}
+

+ 11 - 0
src/pineapple/modules/PineAP/api/PineAPHelper.php

@@ -266,4 +266,15 @@ class PineAPHelper
         exec("pineap /tmp/pineap.conf deauth $source $target $channel $multiplier");
         return true;
     }
+
+    public function getPineapInterface()
+    {
+        return $this->getSetting("pineap_interface");
+    }
+
+    public function setPineapInterface($interface)
+    {
+        $this->setSetting("pineap_interface", "{$interface}");
+        return true;
+    }
 }

+ 4 - 1
src/pineapple/modules/PineAP/api/module.php

@@ -453,7 +453,8 @@ class PineAP extends SystemModule
             'broadcastInterval' => $this->pineAPHelper->getSetting("beacon_interval"),
             'responseInterval' => $this->pineAPHelper->getSetting("beacon_response_interval"),
             'sourceMAC' => $sourceMAC,
-            'targetMAC' => $targetMAC
+            'targetMAC' => $targetMAC,
+            'interface' => $this->pineAPHelper->getSetting("pineap_interface"),
         );
         $this->response = array('settings' => $settings, 'success' => true);
         return $settings;
@@ -519,6 +520,8 @@ class PineAP extends SystemModule
         $this->uciSet("pineap.@config[0].target_mac", $settings->targetMAC);
         $this->pineAPHelper->setSource($settings->sourceMAC);
         $this->uciSet("pineap.@config[0].pineap_mac", $settings->sourceMAC);
+        $this->pineAPHelper->setPineapInterface($settings->interface);
+        $this->uciSet("pineap.@config[0].pineap_interface", $settings->interface);
 
         $this->response = array("success" => true);
     }

+ 3 - 1
src/pineapple/modules/PineAP/js/module.js

@@ -154,8 +154,10 @@ registerController('PineAPSettingsController', ['$api', '$scope', function($api,
         broadcastInterval: 'NORMAL',
         responseInterval: 'NORMAL',
         sourceMAC: '00:00:00:00:00:00',
-        targetMAC: 'FF:FF:FF:FF:FF:FF'
+        targetMAC: 'FF:FF:FF:FF:FF:FF',
+        interface: 'wlan1mon'
     };
+    $scope.interfaces = [];
 
     $scope.togglePineAP = (function() {
         $scope.pineAPenabling = true;

+ 4 - 0
src/pineapple/modules/PineAP/module.html

@@ -100,6 +100,10 @@
                             <span class="fixed-addon-width-3 input-group-addon">Target MAC</span>
                             <input type="text" maxlength="17" class="form-control" ng-model="settings.targetMAC">
                         </div>
+                        <div class="input-group margin-bottom">
+                            <span class="fixed-addon-width-3 input-group-addon">Interface</span>
+                            <input type="text" maxlength="8" class="form-control" ng-model="settings.interface">
+                        </div>
                         <br/>
                         <div class="input-group">
                             <button class="btn btn-default" ng-hide="disableButton" ng-click="updateSettings()">Save