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

Discussion in 'Беспроводные технологии/Wi-Fi/Wardriving' started by akokarev, 13 Jul 2015.

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

    379 vote(s)
    61.4%
  2. Платным для неактивных участников

    60 vote(s)
    9.7%
  3. База свободна для скачивания

    87 vote(s)
    14.1%
  4. База доступна для просмотра на сайте, но не для скачивания

    122 vote(s)
    19.8%
  5. Нужна оффлайн шифрованная база для 3WiFi Locator

    54 vote(s)
    8.8%
  6. Обязательная регистрация на сайте

    176 vote(s)
    28.5%
  7. Регистрация только по приглашениям

    66 vote(s)
    10.7%
  8. Ограничения на просмотр согласно рейтинга участников

    20 vote(s)
    3.2%
  9. Проект нужно закрыть, базу удалить

    5 vote(s)
    0.8%
Multiple votes are allowed.
  1. binarymaster

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

    Joined:
    11 Dec 2010
    Messages:
    4,015
    Likes Received:
    7,502
    Reputations:
    99
    Предложения по облегчению БД:
    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 and Felis-Sapiens like this.
  2. Felis-Sapiens

    Felis-Sapiens Reservists Of Antichat

    Joined:
    21 Jul 2015
    Messages:
    575
    Likes Received:
    3,290
    Reputations:
    133
    Тоже хотел это написать. Ещё добавлю, есть одинаковые точки (например, 08:60:6E:23:10:24), но только у одной нет ведущих нулей у ESSID / KEY / PIN, а у другой есть. Соответственно первую нужно удалить
     
    #62 Felis-Sapiens, 29 Jul 2015
    Last edited: 29 Jul 2015
    binarymaster likes this.
  3. akokarev

    akokarev Active Member

    Joined:
    6 Dec 2012
    Messages:
    164
    Likes Received:
    288
    Reputations:
    5
    Ох уж эти чистки... Вечная проблема! Один раз почистишь, с новыми загрузками опять появятся косяки... Я подумываю о создании некой функции, которая при загрузке будет проверять все загружаемые данные на валидность: отсутствие тэгов и спецсимволов, длину ключа и пинкода, соответствие бсида, айпи, маски шаблонам и некоторые другие правила (отсутствие нулей в схожей записи, ключи и пины вроде 3.8e10 ошибки экселя). Отдельные чистки меня утомили. Если кому интересно, могу дать доступ к мускулу для чистки - в личку. У меня сейчас другие дела, примерно месяц я буду в оффлайне
     
    binarymaster likes this.
  4. akokarev

    akokarev Active Member

    Joined:
    6 Dec 2012
    Messages:
    164
    Likes Received:
    288
    Reputations:
    5
    Кстати, предварительно хостинг меня устроил, нужно оплатить. Если есть у кого анонимная симка или qiwi счёт, киньте в личку данные, хочу выставить счёт для оплаты в терминале.
     
  5. Ossen

    Ossen Active Member

    Joined:
    4 Jun 2015
    Messages:
    227
    Likes Received:
    148
    Reputations:
    0
    Думаю стоит добавить в отчёты или статистику порты wifi точек ходовые понятно что 80 8080 но при скане встречаются и другие
     
  6. binarymaster

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

    Joined:
    11 Dec 2010
    Messages:
    4,015
    Likes Received:
    7,502
    Reputations:
    99
    Функция таки нужна, да...
    Тут всё зависит от того, какие порты пользователи выбирали для сканирования, и какие из них попали в цель. Но в общем-то да, было бы полезно.
     
  7. Felis-Sapiens

    Felis-Sapiens Reservists Of Antichat

    Joined:
    21 Jul 2015
    Messages:
    575
    Likes Received:
    3,290
    Reputations:
    133
    Если длина пинкода меньше 8, это не так страшно - нужно проверять, не больше ли она, и нет ли других символов кроме цифр. А нули при необходимости добавить.

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

    akokarev Active Member

    Joined:
    6 Dec 2012
    Messages:
    164
    Likes Received:
    288
    Reputations:
    5
    Если так просто перебрать 9 символов, то в элементарно перебрать большинство паролей от роутеров (обычно ставят только цифры, обычно это 8 знаков, реже 9 знаков). Ну а раз так, то вообще какой смысл в этом сайте, раз все так легко перебирается?
    Нет, я считаю неверные данные нужно фильтровать. Для большинства народу такие точки на карте только отвлекают.

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

    Felis-Sapiens Reservists Of Antichat

    Joined:
    21 Jul 2015
    Messages:
    575
    Likes Received:
    3,290
    Reputations:
    133
    https://ru.wikipedia.org/wiki/Wi-Fi_Protected_Setup

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

    milkdrinker New Member

    Joined:
    31 Jul 2015
    Messages:
    1
    Likes Received:
    0
    Reputations:
    0
    Отличный сайт, спасибо автору! Есть вопрос: если BSSID не находится в базе Яндекса и не наносится на карту 3wifi во время залива данных, то появится ли она потом, если Яндекс её добавит? Надеюсь, понятно объяснил.

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

    akokarev Active Member

    Joined:
    6 Dec 2012
    Messages:
    164
    Likes Received:
    288
    Reputations:
    5
    Да, я иногда делаю полную перепроверку всех записей, т.е. точка может добавиться на карту, переместиться. Но этот процесс долгий и ресурсоемкий, по-этому делаю это не часто. Еще в планах добавить другие источники местоположения.
     
  12. akokarev

    akokarev Active Member

    Joined:
    6 Dec 2012
    Messages:
    164
    Likes Received:
    288
    Reputations:
    5
    Ну с 7-ю и меньше знаками в пинкоде понятно - пропущены нули впереди. А как быть с 9-ти и больше цифрами? Откуда такие взялись? Мне не понятно... Надо будет как-нибудь выловить такие устройства и посмотреть что там внутри на самом деле.
     
    binarymaster likes this.
  13. VladimirV

    VladimirV Well-Known Member

    Joined:
    1 Apr 2013
    Messages:
    1,130
    Likes Received:
    5,896
    Reputations:
    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 Jul 2015
    Last edited: 1 Aug 2015
    Payer likes this.
  14. binarymaster

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

    Joined:
    11 Dec 2010
    Messages:
    4,015
    Likes Received:
    7,502
    Reputations:
    99
    Сделал проверку на длину > 8 и на ноль в начале, он будет обрезаться.
    Но это только для парсера этой модели.
     
    Payer and VladimirV like this.
  15. binarymaster

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

    Joined:
    11 Dec 2010
    Messages:
    4,015
    Likes Received:
    7,502
    Reputations:
    99
    Добавил вывод топ 10 портов в статистику.
     
    gentux and VladimirV like this.
  16. djamv

    djamv Member

    Joined:
    16 Oct 2012
    Messages:
    128
    Likes Received:
    43
    Reputations:
    0
    А почему не используются карты от гугла? Точки моего провайдера гугл находит чаще у себя в бд чем яндекс
     
  17. binarymaster

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

    Joined:
    11 Dec 2010
    Messages:
    4,015
    Likes Received:
    7,502
    Reputations:
    99
    Гугл не позволяет получать координаты точек. Он предоставляет данные о геолокации, только если ему указать не менее двух точек, которые есть у него в базе, и при этом расположены рядом.

    Прикрутил ещё поддержку загрузки отчётов в формате TXT.
     
    gentux and VladimirV like this.
  18. VladimirV

    VladimirV Well-Known Member

    Joined:
    1 Apr 2013
    Messages:
    1,130
    Likes Received:
    5,896
    Reputations:
    57
    Может стоит прикрутить загрузку файлов из wigle.net, и брать координаты из них.
    Еще можно из ака wigle.net сканировать города. Когда у меня было в статистике 10 000, сайт мне отдавал примерно столько-же. Когда в статистике перевалило за 100 000 , я спокойно парсил районы. Но сейчас они поменяли движок, мой парсер уже не катит, перепишу попробую.
    Думаю если люди будут заливать файлы своих сканов, этого будет достаточно.
     
  19. ruslan89g

    ruslan89g Banned

    Joined:
    8 Nov 2012
    Messages:
    15
    Likes Received:
    2
    Reputations:
    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 Aug 2015
    Last edited by a moderator: 5 Aug 2015
  20. binarymaster

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

    Joined:
    11 Dec 2010
    Messages:
    4,015
    Likes Received:
    7,502
    Reputations:
    99
    Ну и зачем вы скопировали весь этот код в сообщение?)

    Если вы раньше не имели дела с настройкой Apache/PHP и MySQL, лучше не вскрывать эту тему...
     
    Payer likes this.
Loading...