3WiFi объединенная база логов Router Scan

Обсуждение в разделе «Беспроводные технологии/Wi-Fi/Wardriving», начал(-а) akokarev, 13.07.2015.

?
  1. Бесплатным для всех

    266 голосов
    61,4%
  2. Платным для неактивных участников

    32 голосов
    7,4%
  3. База свободна для скачивания

    65 голосов
    15,0%
  4. База доступна для просмотра на сайте, но не для скачивания

    99 голосов
    22,9%
  5. Нужна оффлайн шифрованная база для 3WiFi Locator

    42 голосов
    9,7%
  6. Обязательная регистрация на сайте

    126 голосов
    29,1%
  7. Регистрация только по приглашениям

    50 голосов
    11,5%
  8. Ограничения на просмотр согласно рейтинга участников

    14 голосов
    3,2%
  9. Проект нужно закрыть, базу удалить

    5 голосов
    1,2%
Multiple votes are allowed.
  1. binarymaster

    binarymaster Elder - Старейшина

    Регистрация:
    11.12.2010
    Сообщения:
    3 357
    Одобрения:
    5 938
    Репутация:
    59
    Предложения по облегчению БД:
    1. Если есть две точки с одинаковым BSSID/ESSID/Sec/Key, но у одной есть WPS PIN, а у другой нет - удалить из БД точку без пина (ибо она не несёт дополнительной полезной информации). Примеры:
    Code:
    54:A0:50:DC:39:AC
    54:A0:50:DC:C1:7C
    и там ещё много
    2. Две точки - BSSID/ESSID совпадают, но у одной из них нет Sec/Key, а у второй есть - первую удалить. Примеры:
    Code:
    BC:AE:C5:C4:96:4B
    Ещё обнаружил на примере 54:A0:50:DC:35:8C (две записи), что в AllBig нет ведущих нулей в пароле и пин коде, а это означает, что вся загрузка с этим комментарием, возможно, теряет смысл.
     
    Это одобряют runalsh, TARGAS и Felis-Sapiens.
  2. Felis-Sapiens

    Felis-Sapiens Reservists Of Antichat

    Регистрация:
    21.07.2015
    Сообщения:
    512
    Одобрения:
    2 871
    Репутация:
    108
    Тоже хотел это написать. Ещё добавлю, есть одинаковые точки (например, 08:60:6E:23:10:24), но только у одной нет ведущих нулей у ESSID / KEY / PIN, а у другой есть. Соответственно первую нужно удалить
     
    #62 Felis-Sapiens, 29.07.2015
    В последний раз редактировалось: 29.07.2015
    Это одобряет binarymaster.
  3. akokarev

    akokarev Member

    Регистрация:
    6.12.2012
    Сообщения:
    164
    Одобрения:
    282
    Репутация:
    5
    Ох уж эти чистки... Вечная проблема! Один раз почистишь, с новыми загрузками опять появятся косяки... Я подумываю о создании некой функции, которая при загрузке будет проверять все загружаемые данные на валидность: отсутствие тэгов и спецсимволов, длину ключа и пинкода, соответствие бсида, айпи, маски шаблонам и некоторые другие правила (отсутствие нулей в схожей записи, ключи и пины вроде 3.8e10 ошибки экселя). Отдельные чистки меня утомили. Если кому интересно, могу дать доступ к мускулу для чистки - в личку. У меня сейчас другие дела, примерно месяц я буду в оффлайне
     
    Это одобряет binarymaster.
  4. akokarev

    akokarev Member

    Регистрация:
    6.12.2012
    Сообщения:
    164
    Одобрения:
    282
    Репутация:
    5
    Кстати, предварительно хостинг меня устроил, нужно оплатить. Если есть у кого анонимная симка или qiwi счёт, киньте в личку данные, хочу выставить счёт для оплаты в терминале.
     
  5. Ossen

    Ossen Member

    Регистрация:
    4.06.2015
    Сообщения:
    192
    Одобрения:
    120
    Репутация:
    0
    Думаю стоит добавить в отчёты или статистику порты wifi точек ходовые понятно что 80 8080 но при скане встречаются и другие
     
    Это одобряют resident148, ChesteRock и binarymaster.
  6. binarymaster

    binarymaster Elder - Старейшина

    Регистрация:
    11.12.2010
    Сообщения:
    3 357
    Одобрения:
    5 938
    Репутация:
    59
    Функция таки нужна, да...
    Тут всё зависит от того, какие порты пользователи выбирали для сканирования, и какие из них попали в цель. Но в общем-то да, было бы полезно.
     
  7. Felis-Sapiens

    Felis-Sapiens Reservists Of Antichat

    Регистрация:
    21.07.2015
    Сообщения:
    512
    Одобрения:
    2 871
    Репутация:
    108
    Если длина пинкода меньше 8, это не так страшно - нужно проверять, не больше ли она, и нет ли других символов кроме цифр. А нули при необходимости добавить.

    Ключи же вроде 3.8e10, по-моему, надо оставлять. По крайней мере понятно, что ключ - 11 цифр (для данного примера), причём первые две это 38. Перебрать оставшиеся 9 вполне реально.
     
  8. akokarev

    akokarev Member

    Регистрация:
    6.12.2012
    Сообщения:
    164
    Одобрения:
    282
    Репутация:
    5
    Если так просто перебрать 9 символов, то в элементарно перебрать большинство паролей от роутеров (обычно ставят только цифры, обычно это 8 знаков, реже 9 знаков). Ну а раз так, то вообще какой смысл в этом сайте, раз все так легко перебирается?
    Нет, я считаю неверные данные нужно фильтровать. Для большинства народу такие точки на карте только отвлекают.

    На счет пинкода интересно, я не задумывался о пропавшем спереди нуле...
    Но на счет 9 и больше знаков, разве пин не может быть 9-ти значным?? Где об этом можно прочитать?
     
  9. Felis-Sapiens

    Felis-Sapiens Reservists Of Antichat

    Регистрация:
    21.07.2015
    Сообщения:
    512
    Одобрения:
    2 871
    Репутация:
    108
    https://ru.wikipedia.org/wiki/Wi-Fi_Protected_Setup

    Ну, не так просто. Но, во-первых, не символов, а цифр, а, во-вторых, часов за 7 я на своей карточке переберу. Впрочем ты, наверно, прав.
     
  10. milkdrinker

    milkdrinker New Member

    Регистрация:
    31.07.2015
    Сообщения:
    1
    Одобрения:
    0
    Репутация:
    0
    Отличный сайт, спасибо автору! Есть вопрос: если BSSID не находится в базе Яндекса и не наносится на карту 3wifi во время залива данных, то появится ли она потом, если Яндекс её добавит? Надеюсь, понятно объяснил.

    Короче, BSSID один только раз в базе Яндекса ищутся, при добавлении, или потом еще?
     
  11. akokarev

    akokarev Member

    Регистрация:
    6.12.2012
    Сообщения:
    164
    Одобрения:
    282
    Репутация:
    5
    Да, я иногда делаю полную перепроверку всех записей, т.е. точка может добавиться на карту, переместиться. Но этот процесс долгий и ресурсоемкий, по-этому делаю это не часто. Еще в планах добавить другие источники местоположения.
     
  12. akokarev

    akokarev Member

    Регистрация:
    6.12.2012
    Сообщения:
    164
    Одобрения:
    282
    Репутация:
    5
    Ну с 7-ю и меньше знаками в пинкоде понятно - пропущены нули впереди. А как быть с 9-ти и больше цифрами? Откуда такие взялись? Мне не понятно... Надо будет как-нибудь выловить такие устройства и посмотреть что там внутри на самом деле.
     
    Это одобряет binarymaster.
  13. VladimirV

    VladimirV Active Member

    Регистрация:
    1.04.2013
    Сообщения:
    1 128
    Одобрения:
    5 884
    Репутация:
    57
    Мне пока с 9-ю знаками пин поподался только в роутерах 'Huawei HG231f'. С ними все просто удаляем первый символ.
    Code:
    109.227.205.174    443    78    Done    admin:admin    Huawei HG231f            AC:E8:7B:D1:5D:D4    sd1-45    WPA2    08011974    037210441    192.168.1.100    255.255.255.0    109.227.205.174    255.255.255.0    109.227.205.254    82.117.162.230 82.117.162.231    
    binarymaster исправьте пожалуйста.
    Вот я скачал и поправил Вашу базу.
    BSSID_PIN_3wifi.tk_001.txt - сама база. разделенная TAB.
    DeletedRows_XXX.txt - это выхлоп программы при удалении. Записи по две строки, первая что удалили вторая что осталось.
    http://rghost.ru/private/7q25B8xFP/4a868063e44b2bd3661cf0ee5bb65fe2
    ПАСС - как на сайте.
     
    #73 VladimirV, 31.07.2015
    В последний раз редактировалось: 1.08.2015
    Это одобряет Payer.
  14. binarymaster

    binarymaster Elder - Старейшина

    Регистрация:
    11.12.2010
    Сообщения:
    3 357
    Одобрения:
    5 938
    Репутация:
    59
    Сделал проверку на длину > 8 и на ноль в начале, он будет обрезаться.
    Но это только для парсера этой модели.
     
    Это одобряют Payer и VladimirV.
  15. binarymaster

    binarymaster Elder - Старейшина

    Регистрация:
    11.12.2010
    Сообщения:
    3 357
    Одобрения:
    5 938
    Репутация:
    59
    Добавил вывод топ 10 портов в статистику.
     
    Это одобряют gentux и VladimirV.
  16. djamv

    djamv Member

    Регистрация:
    16.10.2012
    Сообщения:
    128
    Одобрения:
    43
    Репутация:
    0
    А почему не используются карты от гугла? Точки моего провайдера гугл находит чаще у себя в бд чем яндекс
     
  17. binarymaster

    binarymaster Elder - Старейшина

    Регистрация:
    11.12.2010
    Сообщения:
    3 357
    Одобрения:
    5 938
    Репутация:
    59
    Гугл не позволяет получать координаты точек. Он предоставляет данные о геолокации, только если ему указать не менее двух точек, которые есть у него в базе, и при этом расположены рядом.

    Прикрутил ещё поддержку загрузки отчётов в формате TXT.
     
    Это одобряют gentux и VladimirV.
  18. VladimirV

    VladimirV Active Member

    Регистрация:
    1.04.2013
    Сообщения:
    1 128
    Одобрения:
    5 884
    Репутация:
    57
    Может стоит прикрутить загрузку файлов из wigle.net, и брать координаты из них.
    Еще можно из ака wigle.net сканировать города. Когда у меня было в статистике 10 000, сайт мне отдавал примерно столько-же. Когда в статистике перевалило за 100 000 , я спокойно парсил районы. Но сейчас они поменяли движок, мой парсер уже не катит, перепишу попробую.
    Думаю если люди будут заливать файлы своих сканов, этого будет достаточно.
     
  19. ruslan89g

    ruslan89g Banned

    Регистрация:
    8.11.2012
    Сообщения:
    15
    Одобрения:
    2
    Репутация:
    0
    Подскажите как разместить 3wifi на локальном ресурсе (на компьютере) Помогите пожалуйста
    возникает ошибка:

    Code:
    Warning: mysqli_connect() [function.mysqli-connect]: (HY000/2003): Can't connect to MySQL server on '127.0.0.1' (10061) in C:\Users\admin\Desktop\MiniServX\www\con_db.php on line 8
    
    Fatal error: Call to a member function query() on a non-object in C:\Users\admin\Desktop\MiniServX\www\stat.php on line 25
    
    
    con_db.php:
    
    <?php
    /* Подключаемся к БД */
    $db_serv = "127.0.0.1";
    $db_name = "3wifi_tk";
    $db_user = "user_3wifi_tk";
    $db_pass = "";
    
    $db = mysqli_connect($db_serv, $db_user, $db_pass, $db_name);
    /* проверка подключения */
    if ($db->connect_errno) {
        echo "Не удалось подключиться к MySQL: (" . $db->connect_errno . ") " . $db->connect_error;
    exit();
    }
    
    
    ?>
    
    
    stat.php:
    
    <?php
    $topPort=10;
    $topauth=100;
    $topname=30;
    $topbssid=30;
    $topessid=30;
    $topSecurity=30;
    $topWiFiKey=30;
    $topWPSPIN=30;
    $topWANGateway=30;
    $topDNS=30;
    ?>
    <html><head>
    <title>3WiFi: Статистика</title>
    <meta http-equiv=Content-Type content="text/html;charset=UTF-8">
    <link rel=stylesheet href="css/style.css" type="text/css">
    </head><body>
    <?php
    require 'con_db.php'; /* Коннектор MySQL */
    
    /* Таблица комментарии */
    $yvalue = 0;
    $ycount = 0;
    $query="SELECT COUNT(DISTINCT `comment`),COUNT(*) FROM `free`";
    if ($res = $db->query($query)) {
        $row = $res->fetch_row();
        $yvalue=$row[0];
        $ycount=$row[1];
        $res->close();
    };
    echo "<table class=st1>";
    printf("<tr><th>count (%s)</th><th>comment (%s)</th></tr>\n", $ycount, $yvalue);
    $query="SELECT `comment`, COUNT(*) FROM free GROUP BY `comment` ORDER BY COUNT(*) DESC";
    if ($res = $db->query($query)) {
        while ($row = $res->fetch_row()) {
            printf("<tr><td>%s</td><td>%s</td></tr>\n", $row[1], $row[0]);
        };
        $res->close();
    };
    
    /* Таблица устройства */
    $yvalue = 0;
    $query="SELECT COUNT(DISTINCT `name`) FROM `free`";
    if ($res = $db->query($query)) {
        $row = $res->fetch_row();
        $yvalue=$row[0];
        $res->close();
    };
    printf("<tr><th>count (%s)</th><th>name (top$topname)</th></tr>\n",$yvalue);
    $query="SELECT `name`, COUNT(*) FROM free GROUP BY `name` ORDER BY COUNT(*) DESC LIMIT $topname";
    if ($res = $db->query($query)) {
        while ($row = $res->fetch_row()) {
            printf("<tr><td>%s</td><td>%s</td></tr>\n", $row[1], $row[0]);
        };
        $res->close();
    };
    
    /* Таблица порты */
    $yvalue = 0;
    $query="SELECT COUNT(DISTINCT `Port`) FROM `free`";
    if ($res = $db->query($query)) {
        $row = $res->fetch_row();
        $yvalue=$row[0];
        $res->close();
    };
    printf("<tr><th>count (%s)</th><th>Port (top$topPort)</th></tr>\n",$yvalue);
    $query="SELECT `Port`, COUNT(*) FROM free GROUP BY `Port` ORDER BY COUNT(*) DESC LIMIT $topPort";
    if ($res = $db->query($query)) {
        while ($row = $res->fetch_row()) {
            printf("<tr><td>%s</td><td>%s</td></tr>\n", $row[1], $row[0]);
        };
        $res->close();
    };
    
    /* Таблица авторизация */
    $yvalue = 0;
    $query="SELECT COUNT(DISTINCT `Authorization`) FROM `free`";
    if ($res = $db->query($query)) {
        $row = $res->fetch_row();
        $yvalue=$row[0];
        $res->close();
    };
    printf("<tr><th>count (%s)</th><th>Authorization (top$topauth)</th></tr>\n",$yvalue);
    $query="SELECT `Authorization`, COUNT(*) FROM free GROUP BY `Authorization` ORDER BY COUNT(*) DESC LIMIT $topauth";
    if ($res = $db->query($query)) {
        while ($row = $res->fetch_row()) {
            $xcount = $row[1];
            $xvalue = $row[0];
            if (strlen($xvalue) > 64)
            {
                printf("<tr><td>%s</td><td style=\"max-width:700px;overflow-x:scroll\">%s</td></tr>\n", $xcount, $xvalue);
            } else {
                printf("<tr><td>%s</td><td>%s</td></tr>\n", $xcount, $xvalue);
            }
        };
        $res->close();
    };
    
    /* Таблица BSSID */
    $yvalue = 0;
    $query="SELECT COUNT(DISTINCT `BSSID`) FROM `free`";
    if ($res = $db->query($query)) {
        $row = $res->fetch_row();
        $yvalue=$row[0];
        $res->close();
    };
    printf("<tr><th>count (%s)</th><th>BSSID (top$topbssid)</th></tr>\n",$yvalue);
    $query="SELECT `BSSID`, COUNT(*) FROM free GROUP BY `BSSID` ORDER BY COUNT(*) DESC LIMIT $topbssid";
    if ($res = $db->query($query)) {
        while ($row = $res->fetch_row()) {
            printf("<tr><td>%s</td><td><tt>%s</tt></td></tr>\n", $row[1], $row[0]);
        };
        $res->close();
    };
    
    /* Таблица ESSID */
    $yvalue = 0;
    $query="SELECT COUNT(DISTINCT `ESSID`) FROM `free`";
    if ($res = $db->query($query)) {
        $row = $res->fetch_row();
        $yvalue=$row[0];
        $res->close();
    };
    printf("<tr><th>count (%s)</th><th>ESSID (top$topessid)</th></tr>\n",$yvalue);
    $query="SELECT `ESSID`, COUNT(*) FROM free GROUP BY `ESSID` ORDER BY COUNT(*) DESC LIMIT $topessid";
    if ($res = $db->query($query)) {
        while ($row = $res->fetch_row()) {
            printf("<tr><td>%s</td><td>%s</td></tr>\n", $row[1], $row[0]);
        };
        $res->close();
    };
    
    /* Таблица Security */
    $yvalue = 0;
    $query="SELECT COUNT(DISTINCT `Security`) FROM `free`";
    if ($res = $db->query($query)) {
        $row = $res->fetch_row();
        $yvalue=$row[0];
        $res->close();
    };
    printf("<tr><th>count (%s)</th><th>Security (top$topSecurity)</th></tr>\n",$yvalue);
    $query="SELECT `Security`, COUNT(*) FROM free GROUP BY `Security` ORDER BY COUNT(*) DESC LIMIT $topSecurity";
    if ($res = $db->query($query)) {
        while ($row = $res->fetch_row()) {
            printf("<tr><td>%s</td><td>%s</td></tr>\n", $row[1], $row[0]);
        };
        $res->close();
    };
    
    /* Таблица WiFiKey */
    $yvalue = 0;
    $query="SELECT COUNT(DISTINCT `WiFiKey`) FROM `free`";
    if ($res = $db->query($query)) {
        $row = $res->fetch_row();
        $yvalue=$row[0];
        $res->close();
    };
    printf("<tr><th>count (%s)</th><th>WiFiKey (top$topWiFiKey)</th></tr>\n",$yvalue);
    $query="SELECT `WiFiKey`, COUNT(*) FROM free GROUP BY `WiFiKey` ORDER BY COUNT(*) DESC LIMIT $topWiFiKey";
    if ($res = $db->query($query)) {
        while ($row = $res->fetch_row()) {
            printf("<tr><td>%s</td><td>%s</td></tr>\n", $row[1], $row[0]);
        };
        $res->close();
    };
    
    /* Таблица WPSPIN */
    $yvalue = 0;
    $query="SELECT COUNT(DISTINCT `WPSPIN`) FROM `free`";
    if ($res = $db->query($query)) {
        $row = $res->fetch_row();
        $yvalue=$row[0];
        $res->close();
    };
    printf("<tr><th>count (%s)</th><th>WPSPIN (top$topWPSPIN)</th></tr>\n",$yvalue);
    $query="SELECT `WPSPIN`, COUNT(*) FROM free GROUP BY `WPSPIN` ORDER BY COUNT(*) DESC LIMIT $topWPSPIN";
    if ($res = $db->query($query)) {
        while ($row = $res->fetch_row()) {
            printf("<tr><td>%s</td><td><tt>%s</tt></td></tr>\n", $row[1], $row[0]);
        };
        $res->close();
    };
    
    /* Таблица WANGateway */
    $yvalue = 0;
    $query="SELECT COUNT(DISTINCT `WANGateway`) FROM `free`";
    if ($res = $db->query($query)) {
        $row = $res->fetch_row();
        $yvalue=$row[0];
        $res->close();
    };
    printf("<tr><th>count (%s)</th><th>WANGateway (top$topWANGateway)</th></tr>\n",$yvalue);
    $query="SELECT `WANGateway`, COUNT(*) FROM free GROUP BY `WANGateway` ORDER BY COUNT(*) DESC LIMIT $topWANGateway";
    if ($res = $db->query($query)) {
        while ($row = $res->fetch_row()) {
            printf("<tr><td>%s</td><td>%s</td></tr>\n", $row[1], $row[0]);
        };
        $res->close();
    };
    
    /* Таблица DNS */
    $yvalue = 0;
    $query="SELECT COUNT(DISTINCT `DNS`) FROM `free`";
    if ($res = $db->query($query)) {
        $row = $res->fetch_row();
        $yvalue=$row[0];
        $res->close();
    };
    printf("<tr><th>count (%s)</th><th>DNS (top$topDNS)</th></tr>\n",$yvalue);
    $query="SELECT `DNS`, COUNT(*) FROM free GROUP BY `DNS` ORDER BY COUNT(*) DESC LIMIT $topDNS";
    if ($res = $db->query($query)) {
        while ($row = $res->fetch_row()) {
            printf("<tr><td>%s</td><td>%s</td></tr>\n", $row[1], $row[0]);
        };
        $res->close();
    };
    ?></table></body></html>
    
    
    upload.php:
    
    
    <html><head>
    <title>3WiFi: Добавление точек в базу</title>
    <meta http-equiv=Content-Type content="text/html;charset=UTF-8">
    </head><body>
    
    <form enctype="multipart/form-data" action="upload.php" method="POST">
        <!-- Поле MAX_FILE_SIZE должно быть указано до поля загрузки файла -->
        <input type="hidden" name="MAX_FILE_SIZE" value="15000000" />
        <!-- Название элемента input определяет имя в массиве $_FILES -->
        <table>
        <tr><td>Отчёт Router Scan:</td><td><input name="userfile" type="file" accept=".csv,.txt" /></td><td>(в формате <b>CSV</b> или <b>TXT</b>)</td></tr>
        <tr><td>Ваш комментарий:</td><td><input name="comment" type="text" <?php if (isset($_POST['comment'])) echo 'value="'.htmlspecialchars($_POST['comment']).'" '; ?>/></td></tr>
        <tr><td><input type="submit" value="Отправить файл" /></td><td></td></tr>
        </table>
    </form>
    
    <?php
    function getExtension($filename)
    {
        return substr(strrchr($filename, '.'), 1);
    }
    if ($_SERVER['REQUEST_METHOD'] == 'POST' && count($_FILES) > 0)
    {
        $uploaddir = 'uploads/';
        $filename = basename($_FILES['userfile']['name']);
        $uploadfile = $uploaddir . $filename;
    
        if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
            echo "Файл <b>".htmlspecialchars($filename)."</b> загружен на сервер.<br>\n";
            require 'con_db.php'; /* Коннектор MySQL */
    
            $ext = strtolower(getExtension($filename));
            $format = '';
            if ($ext == 'csv' || $ext == 'txt') $format = $ext;
            if ($format == '')
            {
                $format = 'csv';
                echo "Неизвестное расширение/формат файла, подразумевается CSV.<br>\n";
            }
            if (($handle = fopen($uploadfile, "r")) !== FALSE)
            {
                $comment = $_POST['comment'];
                if ($comment=='') $comment='none';
    
                $sql="INSERT INTO `$db_name`.`free` (`comment`, `IP`, `Port`, `Authorization`, `name`, `RadioOff`, `Hidden`, `BSSID`, `ESSID`, `Security`, `WiFiKey`, `WPSPIN`, `LANIP`, `LANMask`, `WANIP`, `WANMask`, `WANGateway`, `DNS`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) ON DUPLICATE KEY UPDATE `comment`=?, `IP`=?, `Port`=?, `Authorization`=?, `name`=?, `RadioOff`=?, `Hidden`=?, `BSSID`=?, `ESSID`=?, `Security`=?, `WiFiKey`=?, `WPSPIN`=?, `LANIP`=?, `LANMask`=?, `WANIP`=?, `WANMask`=?,`WANGateway`=?, `DNS`=?;";
                $stmt = $db->prepare($sql);
    
                $row = 0;
                switch ($format)
                {
                    case 'csv':
                    while (($data = fgetcsv($handle, 1000, ";")) !== FALSE)
                    {
                        $row++;
                        $num = count($data);
                        if ($row == 1)
                        {
                            if (($data[0]!=="IP Address")or($data[1]!=="Port")or($data[4]!=="Authorization")or($data[5]!=="Server name / Realm name / Device type")or($data[6]!=="Radio Off")or($data[7]!=="Hidden")or($data[8]!=="BSSID")or($data[9]!=="ESSID")or($data[10]!=="Security")or($data[11]!=="Key")or($data[12]!=="WPS PIN")or($data[13]!=="LAN IP Address")or($data[14]!=="LAN Subnet Mask")or($data[15]!=="WAN IP Address")or($data[16]!=="WAN Subnet Mask")or($data[17]!=="WAN Gateway")or($data[18]!=="Domain Name Servers"))
                            {
                                echo "Неподдерживаемый формат отчёта CSV, заголовки отсутствуют!<br>\n";
                                break;
                            }
                        }
                        if ($row !== 1)
                        {
                            $stmt->bind_param("ssssssssssssssssssssssssssssssssssss", // format
                                    // INSERT
                                    //    comment   IP        Port      Auth      Name      RadioOff  Hidden    BSSID     ESSID     Security   Key        WPS PIN    LAN IP     LAN Mask   WAN IP     WAN Mask   WAN Gate   DNS Serv
                                        $comment, $data[0], $data[1], $data[4], $data[5], $data[6], $data[7], $data[8], $data[9], $data[10], $data[11], $data[12], $data[13], $data[14], $data[15], $data[16], $data[17], $data[18],
                                    // UPDATE
                                        $comment, $data[0], $data[1], $data[4], $data[5], $data[6], $data[7], $data[8], $data[9], $data[10], $data[11], $data[12], $data[13], $data[14], $data[15], $data[16], $data[17], $data[18]
                            );
                            $stmt->execute();
                        }
                    }
                    break;
                    case 'txt':
                    while (($str = fgets($handle)) !== FALSE)
                    {
                        $data = explode("\t", $str);
                        $row++;
                        if ($row == 1)
                        {
                            if (count($data) != 23)
                            {
                                echo "Неподдерживаемый формат отчёта TXT, нестандартное количество столбцов!<br>\n";
                                break;
                            }
                        }
                        $stmt->bind_param("ssssssssssssssssssssssssssssssssssss", // format
                                // INSERT
                                //    comment   IP        Port      Auth      Name      RadioOff  Hidden    BSSID     ESSID     Security   Key        WPS PIN    LAN IP     LAN Mask   WAN IP     WAN Mask   WAN Gate   DNS Serv
                                    $comment, $data[0], $data[1], $data[4], $data[5], $data[6], $data[7], $data[8], $data[9], $data[10], $data[11], $data[12], $data[13], $data[14], $data[15], $data[16], $data[17], $data[18],
                                // UPDATE
                                    $comment, $data[0], $data[1], $data[4], $data[5], $data[6], $data[7], $data[8], $data[9], $data[10], $data[11], $data[12], $data[13], $data[14], $data[15], $data[16], $data[17], $data[18]
                        );
                        $stmt->execute();
                    }
                    break;
                }
                fclose($handle);
                $stmt->close();
             
                if ($row > 1) echo "Файл загружен в базу.<br>\n";
             
                if (file_exists($uploadfile))
                {
                    unlink($uploadfile);
                    echo "Временный файл удален.<br>\n";
                } else die("Ошибка: Временный Файл не найден!<br>\n");
            };
    
        } else {
            die("Ошибка: Файл не был загружен!<br>\n");
        }
    
        require 'chkxy.php';
    
        echo "Операция завершена.<br>\n";
    }
    ?></body></html> 
     
    #79 ruslan89g, 5.08.2015
    В последний раз редактировалось модератором: 5.08.2015
  20. binarymaster

    binarymaster Elder - Старейшина

    Регистрация:
    11.12.2010
    Сообщения:
    3 357
    Одобрения:
    5 938
    Репутация:
    59
    Ну и зачем вы скопировали весь этот код в сообщение?)

    Если вы раньше не имели дела с настройкой Apache/PHP и MySQL, лучше не вскрывать эту тему...
     
    Это одобряет Payer.
Загрузка...