Intereting Posts
Как прикреплять и показывать изображение по почте с помощью php? PHP: нечувствительность к регистру preg_replace кириллической строки в UTF8 Принудительная страница для перезагрузки с сервера вместо загрузки кешированной версии Разделение строкового массива на основе цифр в php? Можете ли вы использовать построитель запросов для построения запроса с динамическим предложением WHERE во время выполнения в laravel? утвердить идентификацию личности с помощью системы печати пальцев в php & mysql Начальный текстовый дисплей PHP XPath Хранение файлов в базе данных Vs файловой системы Проверьте, содержит ли url http: // или https: // JavaFX: Поместите секретный код и вычисления на серверной стороне Производный класс, определенный позже в том же файле, «не существует»? Не удается выполнить скрипт python из php jQuery | Получение отображения значения, когда несколько одинаковых идентификаторов Интеграция WordPress MediaWiki Почему SFTP через PHP выходит из строя, но преуспевает в FileZilla на моем компьютере с Windows 8.1?

Как использовать fsockopen (), чтобы открыть соединение Telnet с паролем?

Я хотел бы получить доступ к камере через ее возможности Telnet. Проблема в том, что у нее есть защита паролем. Это не проблема, когда вы делаете это через терминал, так как я просто использую telnet 10.30.blah.blah затем введите свой пароль при появлении запроса. Но в php я не вижу возможности ввести пароль.

 $con = fsockopen("10.30.blah.blah", 25); $msg = "camera move left"; fwrite($con, $msg); 

У кого-нибудь есть идеи?

UPDATE : я попробовал просто использовать fputs для вывода пароля, как сказал @Cfreak, но все равно безрезультатно. Если я выполняю именно то, что сценарий пытается использовать в терминале, он работает. Вот код сейчас:

 $con = fsockopen("10.30.blah.blah", 23, $errno, $errstr, 30); $pass = "admin"; sleep(5); fputs($con, $pass); sleep(5); $msg = "camera move left"; fputs($con, $msg); 

UPDATE : нашел, что мне нужно было \r в конце моей переменной $msg . Спасибо за помощь!

    Вы просто выводите его. Некоторые примеры, которые я видел, используют fputs . Возможно, вам придется спать на секунду, чтобы убедиться, что приглашение появляется. В комментариях на fsockopen руководства fsockopen : http://php.net/manual/en/function.fsockopen.php

    На самом деле, хотя я бы рекомендовал искать модуль, который это делает. Быстрое шоу Google показывает, что есть несколько. Я не хочу рекомендовать конкретный, потому что я не использовал ни одного из них.

    Было бы лучше использовать proc_open для запуска telnet, а не для реализации собственного стека протоколов (для telnet больше, чем для чтения и записи из сокетов). Действительно, telnet по своей сути небезопасен и его следует избегать, если это вообще возможно. (базовая HTTP-аутентификация без SSL так же плохо).

    Однако, в отличие от SMTP или HTTP, это не очень сложный протокол – и довольно просто реализовать простой клиент, используя сокеты. Код, который вы предоставили, не читает приглашение имени пользователя и пароля и не записывает ответы в сокет, поэтому у вас есть некоторые очень странные идеи о том, как войти в систему через telnet или фрагмент кода, не имеет значения.

    Cfreak сказал: «Возможно, вам понадобится спать на секунду, чтобы убедиться, что приглашение появилось» – это неверно – вы должны дождаться приглашения имени пользователя, приглашения пароля и начального приглашения CLI перед отправкой ответа с помощью telnet. Действительно, существует целый язык программирования ( ожидание ), написанный для работы с таким нечетным поведением в telnet.

    и BTW, telnet работает на порте 23 – порт 25 используется для SMTP

    Существует класс, реализующий логин по telnet прямо здесь: http://www.dali.net.nz/Telnet.class.php.txt

    См. Функцию login ($ username, $ password).