Информация
Настройка
Новости
Контакты
Новинка
Распродажа
Оплата
Доставка
Загрузки
  • Прошивки
    • WinBox
    • RouterOS
    • Мобильные приложения MikroTik
    • Архив
  • Changelogs
  • RouterOS
  • Мобильные приложения MikroTik
  • Архив
Форум
Услуги
  • Внедрение
  • Настройка
  • Поддержка
  • Ремонт
    info@mikrotik.moscow
    +7 495 320-55-52
    Заказать звонок
    Mikrotik.moscow
    Каталог
    • Акции
      Акции
    • Маршрутизаторы
      Маршрутизаторы
    • Коммутаторы
      Коммутаторы
    • Радиомосты и уличные точки доступа
      Радиомосты и уличные точки доступа
    • Wi-Fi для дома и офиса
      Wi-Fi для дома и офиса
    • LTE/5G
      LTE/5G
    • Powerline адаптеры
      Powerline адаптеры
    • IoT устройства
      IoT устройства
    • Оборудование 60 ГГц
      Оборудование 60 ГГц
    • Материнские платы RouterBOARD
      Материнские платы RouterBOARD
    • Корпуса
      Корпуса
    • Интерфейсы
      Интерфейсы
    • SFP/QSFP трансиверы
      SFP/QSFP трансиверы
    • Аксессуары
      Аксессуары
    • Антенны
      Антенны
    • Архив
      Архив
    Войти
    0 Сравнение
    0 Избранное
    0 Корзина
    Скачать WinBox Скачать Прошивки Форум > RouterOS Форум > SwOS Форум > Железо
    Mikrotik.moscow
    Каталог
    Войти
    0 Сравнение
    0 Избранное
    0 Корзина
    Mikrotik.moscow
    Телефоны
    +7 495 320-55-52
    Заказать звонок
    0
    0
    0
    Mikrotik.moscow
    • +7 495 320-55-52
      • Назад
      • Телефоны
      • +7 495 320-55-52
      • Заказать звонок
    • info@mikrotik.moscow
    • г. Москва, ул. Бакунинская, 84
    • Пн-Пт: 09-00 до 18-00
      Сб-Вс: выходной


    • Кабинет
    • 0 Сравнение
    • 0 Избранное
    • 0 Корзина
    Главная
    Форум
    RouterOS
    PHP md5() для страницы входа

    PHP md5() для страницы входа

    Форумы: RouterOS, Аппаратное обеспечение, SwOS, Обратная связь, Объявления, Сторонние инструменты
    Поиск  Пользователи  Правила  Войти
    Страницы: 1
    RSS
    PHP md5() для страницы входа, RouterOS
     
    beardenrv
    Guest
    #1
    0
    09.02.2010 23:08:00
    Если этот вопрос уже задавали, извиняюсь. Я провёл бесчисленные часы, ищя ответ через Google и на этом сайте: я создал внешний PHP-скрипт для регистрации и входа клиентов. Я модифицировал файл login.html на хотспоте, чтобы передавать id и challenge. Я пытался объединить chap-id, пароль и chap-challenge так: $pwd = $chapid.$password.$chapchallenge в моём внешнем PHP-файле. Эхо $pwd выглядело так: \051test\333\311\130\244\370\106\344\017\263\167\057\152\317­\114\013\323, где \051 — это chap-id, а test — пароль. Преобразование не совпадает, и chap не срабатывает. Я изменил login.html, чтобы показать chap-пароль, который был c5cc6920e01c5cbf0545b42e1c551111. php md5() показал 445a83713211579469e2f2577697d64b. Я, честно говоря, запутался. Не получается передать переменные из PHP в функции и внешний javascript-файл (md5.js), так что не могу использовать их в своём скрипте. Мне кажется, что обратные слеши нужно убрать и заменить чем-то другим перед md5()??? Очень буду благодарен за помощь!
     
     
     
    Devil
    Guest
    #2
    0
    12.08.2011 05:38:00
    Привет. По этой причине мне очень интересно делать MD5-хэширование прямо в PHP, а не через скрипт на стороне клиента. Это должно быть возможно, иначе этот метод просто не сработал бы. Хотя я пока ничего не понимаю в JavaScript, у нас есть доступ к исходному коду (md5.js). Думаю, не так уж сложно разобраться, что там происходит.
     
     
     
    Devil
    Guest
    #3
    0
    12.08.2011 16:53:00
    Для тех, кому интересно, мне наконец удалось заставить работу md5-хэша через PHP. Важно заметить, что эти \nnn — это не обычные символы. Каждый из них представляет восьмеричное значение. Чтобы получить правильный md5-хэш в PHP, нужно делать так: $hash = md5("chap-id".password."chap-challenge"); Например: $hash = md5("\373".'test'."\314\135\024\000\354\025\252\076\261\347\222\151\146\002\25­0\265"); Надеюсь, это кому-то поможет, потому что, хотя кажется простой задачей, я провёл бесчисленное количество часов, ища проблему и лучший способ её решения. П.С.: генерация правильного md5-хэша из $_POST сложнее, чем кажется. Подробности — на http://forum.mikrotik.com/viewtopic.php?p=276099#p276099
     
     
     
    chillifire
    Guest
    #4
    0
    21.07.2013 10:10:00
    Спасибо, что описали своё решение, но ваш ответ: $hash = md5(“\373”.‘test’.“\314\135\024\000\354\025\252\076\261\347\222\151\146\002\25­0\265”); для меня слишком непонятен. Чем это отличается от: $pwd = md5($chapid.$password.$chapchallenge);? Особенно учитывая, что chap-id и chap-challenge не захардкожены, а приходят в переменных. Я пробовал так: $pwd = md5(‘"’.$chapid.‘"’.$password.‘"’.$chapchallenge.‘"’); Но это не дало никаких улучшений. Можете, пожалуйста, поделиться точным PHP-кодом?
     
     
     
    Devil
    Guest
    #5
    0
    21.07.2013 10:32:00
    Ты прочитал ссылку, которую я дал в своём посте в разделе «Редактировать»? Там есть пример кода на PHP. Если быть точным, когда ты сохраняешь эти октавные числа в переменную, они превращаются в строку. Нужно сделать ещё один шаг, чтобы преобразовать их перед генерацией md5.
     
     
     
    SurferTim
    Guest
    #6
    0
    21.07.2013 10:43:00
    Но это не принесло никакого результата. В чём проблема? Ты не забыл скопировать файл md5.js на свой сервер? Если его там нет, ничего не заработает. Кстати, как ты собираешься передавать PHP-код на клиентскую сторону, чтобы пароль шифровался перед отправкой на роутер или хотспот? И как ты собираешься его запускать? PHP — это серверный язык, а JavaScript — клиентский.
     
     
     
    chillifire
    Guest
    #7
    0
    21.07.2013 12:33:00
    Да, код здесь работает нормально: http://forum.mikrotik.com/t/what-exactly-are-chap-id-chap-challenge/49318/3
     
     
     
    SurferTim
    Guest
    #8
    0
    21.07.2013 12:46:00
    С фиксированным паролем — да. Если вы хотите, чтобы пользователь вводил уникальный пароль и он при этом шифровался, то лучше всего с этим справится скрипт md5.js. Мне показалось, что эта тема уже звучала знакомо.
     
     
     
    fitorec
    Guest
    #9
    0
    14.01.2016 05:42:00
    Моё решение: #!/usr/bin/php5
    <?php
    class LoginMikrotik {
    var $urlLogin = 'http://hostpot.com/login';
    var $urlLogout = 'http://hostpot.com/logout';
    var $myPassword = 'secret';
    var $myUsername = 'username';

    function genChapPassword() {
    // создаём curl ресурс
    $ch = curl_init();
    // устанавливаем URL
    curl_setopt($ch, CURLOPT_URL, $this->urlLogin);
    // возвращать ответ в виде строки
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    // в $output сохраняется результат
    $output = curl_exec($ch);
    // закрываем curl, чтобы освободить ресурсы
    curl_close($ch);
    $lines = explode(PHP_EOL, $output);
    foreach ($lines as $line) {
    if (strpos($line, 'hexMD5')) {
    $match = array();
    preg_match('/\'([^\']*)\'.*\'([^\']*)\'/', $line, $match);
    if(count($match) == 3) {
    $pass = '';
    $chapId = utf8_decode($match[1]);
    $chapChallenge = utf8_decode($match[2]);
    eval("\$pass = md5(\"$chapId\" . \$this->myPassword . \"$chapChallenge\");");
    return $pass;
    }
    }
    }
    return false;
    }


    function login() {
    $password = $this->genChapPassword();
    if (!$password) {
    echo "Ошибка!";
    }
    $ch = curl_init();
    // устанавливаем URL
    curl_setopt($ch, CURLOPT_URL,$this->urlLogin);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, "username=".$this->myUsername."&password=" . $password . "&popup=true&dst=");
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $server_output = curl_exec ($ch);
    $httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close ($ch);
    echo "\nкод: " . $httpcode;
    echo "\nответ: " . $server_output;
    }

    function logout() {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $this->urlLogout);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    $output = @curl_exec($ch);
    curl_close($ch);
    return $output;
    }

    }


    #использование:
    echo "действие: " . $argv[1] . "\n";
    $login = new LoginMikrotik();

    switch ($argv[1]) {
    case 'start':
    $login->login();
    break;
    case 'stop':
    $login->logout();
    exit(0);
    break;
    default:
    break;
    } get code: https://gist.github.com/fitorec/c3d5495327d982095667
     
     
     
    Страницы: 1
    Читают тему
    +7 495 320-55-52
    info@mikrotik.moscow
    Электрозаводская, Бауманская
    Москва, ул. Бакунинская, 84с21
    Конфиденциальность Оферта
    © 2025 «Mikrotik.Moscow»
    Главная Каталог 0 Корзина 0 Избранные Кабинет 0 Сравнение Акции Контакты Услуги Бренды Отзывы Компания Лицензии Документы Реквизиты Поиск Блог Обзоры