public static function newScan() { global $wicker; $instance = new self(); $instance->connectToDatabase(); $guid = $wicker->newGUID(); $statement = $instance->db->con()->prepare("INSERT INTO `scans` (`time`, `guid`) VALUES (?, ?)"); $statement->execute(array(time(), $guid)); return Scan::fromDB("[G]" . $guid); }
$parent_ap = AP::fromDB($_GET['parent_scan'], $_GET['bssid']); $ind_ap = AP::fromDB($_GET['scanid'], $_GET['bssid']); $parent_scan = Scan::fromDB($_GET['parent_scan']); $ind_scan = Scan::fromDB($_GET['scanid']); if ($_GET['do'] == "terminate") { $scan = Scan::fromDB($_GET['scanid']); if ($scan->getPID() != 0 && $scan->getStatus() == 1) { $scan->setStatus(2); system("sudo kill " . $scan->getPID()); header('Location: apview.php?parent_scan=' . $_GET['parent_scan'] . '&scanid=' . $_GET['scanid'] . '&bssid=' . $_GET['bssid']); die; } } else { if ($_GET['do'] == "terminatenstart") { // Terminate parent scan $previous = Scan::fromDB($_GET['parent_scan']); if ($previous->getPID() != 0 && $previous->getStatus() == 1) { $previous->setStatus(2); system("sudo kill " . $previous->getPID()); } // Start new individual scan $scan = Scan::newScan(); $scan->setStatus(1); $scan->startIndScan($parent_ap->getBSSID(), $parent_ap->getChannel()); $parent_ap->setIndScanID($scan->getID()); header('Location: apview.php?parent_scan=' . $_GET['parent_scan'] . '&scanid=' . $scan->getID() . '&bssid=' . $_GET['bssid']); die; } else { if ($_GET['do'] == "deauth") { $wicker->deauth($_GET['bssid'], $_GET['deauthmac'], "scans/" . $ind_scan->getGUID() . ".log"); } else {
header('Location: scanview.php?id=' . $scan->getID()); } else { if ($scan->getPID() == 0) { $wicker->error("PID of scan was 0."); } else { if ($scan->getStatus() == 2) { $wicker->error("This scan has already been terminated"); } else { $wicker->error("An unknown error has occured"); } } } die; } else { if ($do == "update") { $scan = Scan::fromDB($id); $data = $scan->parseCSV(); $aps = $data["aps"]; $clients = $data["clients"]; // Update scan counts for APs and Clients $scan->setAPCount(count($aps)); $scan->setClientCount(count($clients)); // Add APs to DB if they aren't already there foreach ($aps as $ap) { $check = AP::fromDB($scan->getID(), $ap["bssid"]); // Add AP if not found if ($check->getID() == null) { AP::newAP($scan->getID(), $ap["bssid"], strtotime($ap["first_seen"]), strtotime($ap["last_seen"]), $ap["channel"], $ap["privacy"], $ap["cipher"], $ap["authentication"], $ap["power"], $ap["beacons"], $ap["ivs"], $ap["essid"], round($_POST['lat'], 7), round($_POST['long'], 7)); // Update AP in DB } else { // Update Coordinates if seen within last 10 seconds
<?php require_once "Wicker.php"; require_once "Scan.class.php"; $scan = Scan::fromDB(1); $statement = $wicker->db->con()->prepare("SELECT * FROM `aps` WHERE `scan_id` = ? GROUP BY `latitude` ORDER BY `id`"); $statement->execute(array(1)); $a = 0; while ($info = $statement->fetchObject()) { $coords[$a]["lat"] = $info->latitude; $coords[$a]["long"] = $info->longitude; $array_lat[] = $info->latitude; $array_long[] = $info->longitude; $a++; } $avg_lat = array_avg($array_lat); $avg_long = array_avg($array_long); $coord_data = <<<COORD var latlng = new google.maps.LatLng({$avg_lat}, {$avg_long}); var myOptions = { zoom: 14, center: latlng, mapTypeId: google.maps.MapTypeId.ROADMAP }; var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions); COORD; $coord_data .= "\n"; $a = 0; $multiple = true; foreach ($coords as $coord) {