Coder Social home page Coder Social logo

binarymaster / 3wifi Goto Github PK

View Code? Open in Web Editor NEW
235.0 121.0 90.0 1.97 MB

3WiFi Wireless Database

Home Page: https://3wifi.stascorp.com/

License: Apache License 2.0

PHP 59.12% CSS 4.09% HTML 36.35% JavaScript 0.44%
php database sql wireless-network wifi-security security-audit hacktoberfest jquery

3wifi's Introduction

3WiFi Database

(c) 2015-2022 Anton Kokarev et al.

This project was created to collect data from Router Scan log reports, search for access points, obtain its geolocation coordinates, and display it on world map.

Prerequirements:

  1. Disable display of errors, warnings, and notices in php.ini
  2. Make sure your web server is set up to apply .htaccess policies per directory
  3. Make sure you have installed bcmath, curl, mysqli, and simplexml php extensions

Installation steps:

  1. Copy all required files to your /www directory
  2. Create database (execute 3wifi.sql to create tables)
  3. Copy config.php-distr to config.php
  4. Edit config.php (DB_SERV, DB_NAME, DB_USER, DB_PASS etc)
  5. (optional) Turn on memory tables (in the config.php define TRY_USE_MEMORY_TABLES as true)
  6. (optional) Use import.free.php once to import old format database
  7. Start all background daemons:
# Upload routine loads data into database
php -f 3wifid.php uploads
# Finalize routine prepares tasks for finalization
php -f 3wifid.php finalize
# Geolocate routine locates new added BSSIDs on map
php -f 3wifid.php geolocate
# Stats routine caches statistics (use only when stats caching enabled)
php -f 3wifid.php stats
# Memory table manager (use only with memory tables enabled)
php -f 3wifid.php memory

Database maintenance:

# Recheck not found BSSIDs in the database
php -f 3wifid.php recheck

Before running the daemons, make sure that php-cli interpreter is accessible from your directory.

3wifi's People

Contributors

alcomic avatar anonimdev avatar binarymaster avatar drygdryg avatar felis-sapiens avatar ip-default-ttl avatar kcdtv avatar skripatch2 avatar weyzem avatar yardanico avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

3wifi's Issues

Запрос на поиск точек в 3wifi.php не оптимизирован

В данный момент запрос выборки не использует LIMIT должным образом, это изменение было внесено @FusixGit для оптимизации работы с таблицами в памяти.

Но оно пагубно сказалось на обычных таблицах, надо это исправить.

Синхронизация БД между проектами

Необходимо реализовать синхронизацию БД между проектами.

  1. Синхронизировать новые точки WiFi (таблица free)
  2. Синхронизировать измененные точки WiFi
  3. Синхронизировать пользователей (таблица users)

Онлайн генератор WPS не выдаёт "From DB" для некоторых точек

Все эти точки есть в базе, но генератор почему-то не помечает их "From DB", а использует алгоритмы:

28:28:5D:DF:BD:CA | 00000000
28:28:5D:A0:72:EC | 05151806
D4:BF:7F:50:0F:C7 | 05294176
84:C9:B2:6D:F1:C9 | 30837591
78:54:2E:8C:1A:D2 | 01234567

Последняя точка - с нестандартным пин-кодом (с неверной контрольной суммой), но такие тоже должны помечаться как "From DB", если есть в базе.

cc @Felis-Sapiens

Исправить всплывающую подсказку на карте на мобильных устройствах

Сейчас на мобильных устройствах приходится удерживать точку на карте, чтобы появилась подсказка с данными точки. Нужно сделать так, чтобы подсказка открывалась по одному клику, и не пропадала до тех пор, пока пользователь не нажмёт на другой участок карты.

Реализовать перемещение по страницам поиска через историю браузера

Вчера добавил возможность указания параметров поиска через GET запрос ace0a87 (пример: find?bssid=*&essid=...).

Было бы удобно, если в процессе перемещения по страницам поиска, либо при задании нового запроса, адресная строка браузера обновлялась с выбранными параметрами, и можно было бы кнопками перемещения Назад/Вперёд по истории браузера автоматически перемещаться к предыдущему/следующему поисковому запросу.

Во многих JS фреймворках такая фича называется роутингом страниц. Надо сделать что-то подобное, но без подключения лишних скриптов.

Шаблонизатор

попытался развернуть сайт.

получил
shabl

походу используется какой-то шаблонизатор? но в мануале не указано, да в php я не силен. Что надо доставить, подскажите?

Добавить в базу дату обновления точки доступа

Добавить поле в таблицу base, и обновлять его при каждом обновлении записи. Потому что имея лишь дату добавления точки в базу, неизвестно, насколько информация актуальна.

И после этого поправить/улучшить вывод даты во всех местах, где она используется.

Вывод точек на карте с кластеризацией зависает ниже экватора

Такой запрос проходит успешно и быстро:
http://3wifi.stascorp.com/3wifi.php?a=map&tileNumber=37,32,42,32&zoom=6&clat=55.76&clon=37.64&callback=id_12345

А вот такой полностью вешает скрипт:
http://3wifi.stascorp.com/3wifi.php?a=map&tileNumber=37,32,41,32&zoom=6&clat=55.76&clon=37.64&callback=id_12345

Сессия Charles: map_hanging.chls

@Felis-Sapiens посмотри пожалуйста, в чём может быть проблема. Если нужно где-то сделать отладочное логирование (на стороне сервера), то сообщи.

Связанные посты:

Отображение WiFi точек на карте

Необходимо реализовать отображение всех найденных WiFi точек (порядка 40 тыс.) на карте.

Рассматриваю вариант с RemoteObjectManager (https://tech.yandex.ru/maps/doc/jsapi/2.1/dg/concepts/remote-object-manager/about-docpage/)

На текущий момент реализовано через objectManager работает нормально примерно с 1000 точками.
Скрипт map.php отображает Яндекс карту и грузит данные из файла data.json.
Файл data.json предварительно формируется скриптом makemap.php на основании данных в БД.
Скрипты chkxy.php и rechkxy.php заполняют поля БД координатами на основании BSSID через API геолокации Яндекса

Подвисание поиска

Если в базе более 4000 записей с делаю поиск всего, то ничего не происходит, просто крутится loading.
Ошибок нет ни в веб-сервере, ни в мускуле.

not working with xampp

i installed 3wifi on xampp on windows but i got many errors and warnings:

Notice: Undefined index: uselocation in C:\xampp\htdocs\3wifi\index.php on line 148
Notice: Undefined index: lat in C:\xampp\htdocs\3wifi\index.php on line 150
Notice: Undefined index: lon in C:\xampp\htdocs\3wifi\index.php on line 151
Notice: Undefined index: rad in C:\xampp\htdocs\3wifi\index.php on line 152
Notice: Undefined index: lat in C:\xampp\htdocs\3wifi\index.php on line 154
Notice: Undefined index: lon in C:\xampp\htdocs\3wifi\index.php on line 155
Notice: Undefined index: rad in C:\xampp\htdocs\3wifi\index.php on line 156
Notice: Undefined index: theme in C:\xampp\htdocs\3wifi\index.php on line 183
Notice: Undefined variable: l10n in C:\xampp\htdocs\3wifi\index.php on line 210
Warning: Invalid argument supplied for foreach() in C:\xampp\htdocs\3wifi\index.php on line 90

what should i do to fix it please

upload and maps

Ориентировочно после e01fd61 отвалились аплоад и карты.

Это при попытке загрузить файл:
[error] 25588#25588: *30416 FastCGI sent in stderr: "PHP message: PHP Notice: A session had already been started - ignoring session_start() in /usr/share/nginx/html/3WiFi/3wifi.php on line 12" while reading response header from upstream

И в поиске точек доступа в колонке "IP/Port" все IP отображаются как 127.255.255.255.
И еще:
*38501 FastCGI sent in stderr: "PHP message: PHP Notice: A session had already been started - ignoring session_start() in /usr/share/nginx/html/3WiFi/3wifi.php on line 12" while reading response header from upstream

Улучшить кеширование страниц на стороне клиента

Поскольку за построение веб страниц 3WiFi отвечает скрипт index.php, сервер в ответ всегда присылает заголовки с указанием "не кешировать страницу":

image

Улучшить эту ситуацию можно двумя путями:

  1. Корректно задать времени жизни страницы (сколько она должна находиться в кеше), через заголовок Expires
  2. Добавить заголовок Last-Modified, генерируя дату на основе изменения html файлов, и возможно также файлов локализации

Добавить функцию пробива геолокации по IP адресу

Поскольку стандартные средства GeoIP бывают не совсем точными, можно улучшить точность предсказания геолокации по IP адресу на основе ближайших IP адресов подсети и точек доступа, координаты которых есть в БД.

Зависло определение координат

Импортнул csv на 2000 точек, смотрю в статистику и вижу, что в поле "В процессе обработки" постоянно написано 1000.
Как протолкнуть?
В логах ошибок нет.

Реализовать "умный" генератор паролей по подобию Online WPS PIN

Код для онлайн WPS PIN генератора уже есть, по его подобию можно было бы реализовать аналогичный генератор, только для ключа сети. Для начала ограничиться ключами из 8 цифр, т.к. это фактически уже реализовано в wpspin.php.

После основной реализации можно будет начать добавлять другие алгоритмы.

Уже после этого надо будет решить, в какой части сайта делать интерфейс для данной фичи — на той же странице с генераторами WPS PIN, или сделать отдельную страницу.

Добавить возможность смотреть стандартные пароли по имени устройства

Чтобы можно было начать вводить название устройства, а затем в выпадающем списке выбрать точное название устройства, которое есть в базе (пример выпадающего списка есть на странице загрузки отчёта в базу, при указании / выборе комментария).

После указания точного названия устройства вывести топ 10 пар авторизации (включать в список только часто попадающиеся не уникальные строки, по тому же принципу, как генерируется статистика топ авторизации).

Сделать для этой новой функции возможность привязки к локации, как это сделано для статистики.

Реализовать всё это дело на новой странице, в разделе "Инструменты".

Создать отдельные таблицы с индексами для case sensitive данных (имён сетей, ключей) и ссылаться на них в таблице base

Основная таблица base должна быть case sensitive по умолчанию

Для этого потребуется изменить её сопоставление с utf8_general_ci на utf8_bin.

После этого индексы всех строковых колонок станут чувствительны к регистру. Чтобы была возможность быстро искать без учёта регистра, потребуется создать дополнительные колонки со значениями в нижнем регистре для ESSID и ключа сети, и добавить для них индексы.

Далее потребуется модифицировать все скрипты, которые запрашивают выборку в разных режимах чувствительности к регистру.

UPD. от 25 сентября 2022:

Я немного переосмыслил этот тикет, на самом деле будет правильнее создать несколько новых отдельных таблиц под ESSID и ключи сетей, как минимум, в которых данные будут уникальным ключом. А основная таблица base будет ссылаться на них по айди. Для реализации быстрого case sensitive/insensitive поиска можно будет сделать по две таких таблицы.

Blind SQLi

if (isset($_POST['bssid'])&&($_POST['bssid']!='')) {$bssid = $_POST['bssid'];} else {$bssid='%';};
if (isset($_POST['essid'])&&($_POST['essid']!='')) {$essid = $_POST['essid'];} else {$essid='%';}; 
$query="SELECT SQL_NO_CACHE * FROM `free` WHERE `BSSID` LIKE '$bssid' AND `ESSID` LIKE '$essid'";

Не надо так :(

Добавить в онлайн генератор WPS PIN поиск нестандартных пин кодов

Некоторые точки доступа имеют нестандартные пин коды, у которых контрольная сумма либо неверная, либо отсутствует.

Нужно добавить возможность выводить их в онлайн генераторе.

Примеры:

78:54:2E:8C:1A:D2 - 01234567 (From DB) 
78:54:2E:8C:1B:45 - 01234567 (Static PIN w/o checksum)
B8:A3:86:AB:7B:2C - 222222 (From DB)
B8:A3:86:AB:7F:50 - 222222 (Static PIN w/o checksum)

Также необходимо исправить баг дублирующихся статичных пин кодов:

image

cc @Felis-Sapiens

Добавить возможность проверки наличия данных в базе

Сделать возможность проверять BSSID, ESSID, ключ сети. Возможно также и пару авторизации.

Это позволит пользователям узнать, утекла ли информация об их устройствах в базу или нет. Будет полезно для тех, у кого нет аккаунта в системе. Разумеется, защитить это гуглокапчей или чем-то таким.

Прежде чем делать этот тикет, сначала надо решить #58.

Авторизация\регистрация пользователей

Необходимо реализовать:

  1. Регистрацию пользователей с подтверждением по e-mail;
  2. Авторизацию на сайте по логину\паролю;
  3. Поиск для авторизованных пользователей без кодового слова, и отображение карты с паролями, а для неавторизованных - с запросом кодового слова и без отображения паролей на карте.
  4. Ввести учет загруженных данных по пользователям; сделать в меню пользователя отображение загруженных им данных (таблица и карта, список комментариев и возможность редактировать комментарии), статистику (по аналогии с общей)

Добавить в онлайн генератор WPS PIN использование серийного номера

Некоторые алгоритмы генерации WPS PIN помимо BSSID используют серийник устройства. С недавнего времени в 3WiFi есть отдельная таблица extinfo, в которой хранятся серийные номера устройств с привязкой по id.

Возможно @Felis-Sapiens захочет это реализовать. 🙂

Notice: Undefined index.php

Hi
I tried both php versions 5 and 7 but still have problems
Please give me the php version you used and more details

Notice: Undefined index: uselocation in index.php on line 149
Notice: Undefined index: lat in index.php on line 151
Notice: Undefined index: lon in index.php on line 152
Notice: Undefined index: rad in index.php on line 153
Notice: Undefined index: lat in index.php on line 155
Notice: Undefined index: lon in index.php on line 156
Notice: Undefined index: rad in index.php on line 157

Упростить развёртку сайта с нуля, реализовав скрипт установки

Чтобы сайт было проще разворачивать с нуля, нужно реализовать скрипт, который поможет в первичной установке и настройке сервера 3WiFi.

Пока что я представляю себе это примерно так:

  • Все скрипты заливаются на хостинг
  • Импортировать 3wifi.sql в базу данных не нужно
  • Веб интерфейс 3WiFi в таком не настроенном состоянии принимает соединения только от 127.0.0.1 и ::1
  • При входе в веб интерфейс с этих адресов, отображается привычный интерфейс 3WiFi, но с некоторыми отличиями:
    • При посещении любой из страниц из меню, всегда будет отображаться одна и та же техническая страница установки
    • На ней сначала будет выполнена проверка, все ли необходимые модули php установлены (точный список модулей не помню, но помню, что как минимум есть модуль обработки XML)
    • При успехе определения всех модулей, будет предложено задать первичные настройки, с возможностью указать параметры базы данных (адрес / имя базы / пользователь / пароль), а также другие специфичные параметры конфига (config.php)
    • После задания всех настроек, скрипт сам создаст все необходимые таблицы и структуры с чистого листа
    • Далее будет предложено ввести имя, ник, и пароль нового пользователя-администратора
  • После всех этих действий 3WiFi перейдёт в рабочий режим, и разрешит соединение со всех адресов
  • Будет произведён редирект на главную страницу, новому администратору нужно будет авторизоваться с ранее заданными данными

Перевод на другие языки

Пора делать мультиязычную поддержку. Думаю правильнее организовать локали в подгружаемых файлах.

Адаптировать карту под мобильные устройства

С телефона очень неудобно работать с картой, прошу адаптировать сервис под мобильные устройства. На первое время можно просто уменьшать фрейм с картой в ~2-3 раза. Переключение производить при распознавании мобильного устройства, либо добавить кнопку "мобильная версия" в уголок футера

Реализация наборов точек доступа

Возможность для пользователей работать с наборами точек доступа (создавать, объединять, удалять) с помощью выгрузки отчёта, либо с помощью поиска по критериям.

Созданный набор точек можно будет посмотреть на карте, при этом будут выводиться только точки, принадлежащие к этому набору. Также можно будет производить поиск точек в пределах выбранного набора.

Как следствие, появится два стандартных набора по умолчанию - "все точки на карте" и "все точки, загруженные пользователем".

Это решит следующие проблемы:

  • Возможность смотреть, какие именно точки были найдены на карте при конкретной выгрузке
  • Смотреть на карте только свои выгруженные точки
  • Выполнять поиск по точкам, выгруженным пользователем

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.