diff --git a/includes/functions.php b/includes/functions.php index 4f79870a..0e8336b8 100755 --- a/includes/functions.php +++ b/includes/functions.php @@ -641,3 +641,10 @@ function validate_host($host) { return preg_match('/^([a-z\d](-*[a-z\d])*)(\.([a-z\d](-*[a-z\d])*))*$/i', $host); } +function evalHexSequence($string) { + $evaluator = function ($input) { + return hex2bin($input[1]); + }; + return preg_replace_callback('/\\\x(..)/', $evaluator, $string); +} + diff --git a/includes/wifi_functions.php b/includes/wifi_functions.php index 066a19ca..cbd4fc72 100755 --- a/includes/wifi_functions.php +++ b/includes/wifi_functions.php @@ -69,12 +69,15 @@ function nearbyWifiStations(&$networks, $cached = true) foreach (explode("\n", $scan_results) as $network) { $arrNetwork = preg_split("/[\t]+/", $network); // split result into array - if (!array_key_exists(4, $arrNetwork) || - trim($arrNetwork[4]) == $ap_ssid) { + + $ssid = trim($arrNetwork[4]); + $ssid = evalHexSequence($ssid); + + // exclude raspap ssid + if (empty($ssid) || $ssid == $ap_ssid) { continue; } - $ssid = trim($arrNetwork[4]); // filter SSID string: anything invisible in 7bit ASCII or quotes -> ignore network if (preg_match('[\x00-\x1f\x7f-\xff\'\`\ยด\"]', $ssid)) { continue;