Вопрос или проблема
У меня есть маршрутизатор Edimax, и из Wireshark я вижу, что маршрутизатор перезагружается с помощью POST http://192.168.2.1/goform/formReboot
и элементов формы reset_flag=0&submit-url=%2Fadmin_restart.asp
С помощью curl
и wget
я пробовал различные методы POST, но мне не удалось. Если я захожу напрямую на formReboot, я получаю ошибку 404. Если я использую POST, то получаю пустой ответ от сервера и никакой перезагрузки…
Вот пример:
curl -u 'admin:pass' --form 'reset_flag=0&submit-url=%2Fadmin_restart.asp' 'http://192.168.2.1/goform/formReboot
Примеры из команды cURL показывают, что вы разделяете записи формы, используя ;
, вместо &
. Вам стоит попробовать это.
Также curl --verbose ...
даст вам больше деталей, которые могут помочь вам узнать, в чем проблема.
Я только что смог перезагрузить повторитель WLAN Edimax/Medion MD86833, используя curl -u 'admin:pass' --form 'reset_flag=0&submit-url=%2Fcontool.asp' 'http://192.168.1.201/goform/formReboot'
На днях я наткнулся на эту статью, и это один из самых идеально объясненных и продемонстрированных способов собрать всю информацию, необходимую для выполнения двух вызовов к маршрутизатору с аутентификацией. Используя инструменты разработчика Chrome, вы можете увидеть, что происходит в вашей сессии браузера во время работы с маршрутизатором и сгенерировать команды curl, которые вам понадобятся для выполнения почти любого из административных экранов.
- первая команда curl используется для аутентификации и генерации cookie аутентификации
- вторая команда – это фактический вызов функции маршрутизатора с использованием cookie
https://ttytoast.io/use-siri-to-configure-your-asus-router-pt1/
Для моего маршрутизатора мои команды curl были:
curl #1 для аутентификации:
curl -c /tmp/cookie-jar.txt 'http://192.168.1.1/login.cgi' \
-H 'Connection: keep-alive' \
-H 'Cache-Control: max-age=0' \
-H 'Upgrade-Insecure-Requests: 1' \
-H 'Origin: http://192.168.1.1' \
-H 'Content-Type: application/x-www-form-urlencoded' \
-H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36' \
-H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9' \
-H 'Referer: http://192.168.1.1/Main_Login.asp' \
-H 'Accept-Language: en-US,en;q=0.9' \
--data-raw 'group_id=&action_mode=&action_script=&action_wait=5¤t_page=Main_Login.asp&next_page=index.asp&login_authorization=SuPeR_SeCrET_hAsH_FroM_cHrOmE'
*очевидно, “SuPeR_SeCrET_hAsH_FroM_cHrOmE” не является настоящим. У вас будет уникальный 😉
curl #2 для любой ссылки, к которой вы пытаетесь добраться:
curl -b /tmp/cookie-jar.txt 'http://192.168.1.1/Advanced_LAN_Content.asp' \
-H 'Upgrade-Insecure-Requests: 1' \
-H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36' \
-H 'Referer: http://192.168.1.1/index.asp' \
--compressed
Документ для маршрутизатора Asus, но на самом деле может работать для почти любого маршрутизатора.
**По хорошей практике, вам следует выполнить curl команду выхода из системы, чтобы официально закрыть сессию тоже.
Ответ или решение
Как перезагрузить роутер с помощью curl или wget: Подробное руководство
Если вы ищете способ перезагрузить роутер Edimax через команды curl или wget, это руководство поможет вам выполнить задачу, даже если у вас возникли сложности с POST запросами.
Шаг 1: Аутентификация на роутере
Первым делом вам необходимо аутентифицироваться на роутере и получить сессию. Для этого используйте команду curl, чтобы войти в систему и сохранить куки. Пример команды может выглядеть так:
curl -c /tmp/cookie-jar.txt 'http://192.168.2.1/login.cgi' \
-H 'Content-Type: application/x-www-form-urlencoded' \
--data 'username=admin&password=ваш_пароль'
Проверьте, чтобы URL и имена параметров соответствовали вашему роутеру. После выполнения этой команды, куки будут сохранены в файле cookie-jar.txt, что позволит вам использовать их для последующих запросов.
Шаг 2: Перезагрузка роутера
Теперь, когда вы вошли в систему, можно отправить POST запрос для перезагрузки роутера. Как видно из анализа с помощью Wireshark, вы можете использовать следующий формат команды:
curl -b /tmp/cookie-jar.txt -X POST 'http://192.168.2.1/goform/formReboot' \
-H 'Content-Type: application/x-www-form-urlencoded' \
--data 'reset_flag=0&submit-url=%2Fadmin_restart.asp'
Здесь мы используем параметр -b
для передачи куки, полученных на предыдущем шаге.
Альтернативы с wget
Если вы предпочитаете использовать wget, вы можете выполнить следующие шаги:
- Аутентификация:
wget --save-cookies /tmp/cookie-jar.txt --keep-session-cookies \
--post-data 'username=admin&password=ваш_пароль' \
'http://192.168.2.1/login.cgi'
- Перезагрузка роутера:
wget --load-cookies /tmp/cookie-jar.txt \
--post-data 'reset_flag=0&submit-url=%2Fadmin_restart.asp' \
'http://192.168.2.1/goform/formReboot'
Советы по устранению неполадок
-
Используйте флаг
--verbose
: Для более детального вывода выполнения команд и выявления возможных ошибок добавьте флаг--verbose
к вашим curl командам. -
Проверьте URL и параметры: Убедитесь, что указанные URL и параметры соответствуют документации вашего роутера. Если вы получаете ошибки 404, возможно, проблема в неправильном пути.
-
Использование инструментов разработчика: Откройте инструменты разработчика в вашем браузере (обычно
F12
) и перейдите на вкладку "Сеть" (Network). В процессе перезагрузки роутера вы сможете увидеть реальный запрос и его заголовки, которые можно использовать для формирования соответствующей команды curl или wget. -
Обращайте внимание на ответы сервера: Пустой ответ от сервера может указывать на несоответствие формату ожидаемого запроса. Убедитесь, что все заголовки и данные отправляются корректно.
Заключение
Перезагрузка роутера через curl или wget может показаться сложной задачей, но с правильным подходом и вниманием к деталям, это вполне осуществимо. Следуя данному руководству, вы сможете успешно перезагрузить роутер Edimax или другой, используя командную строку и инструменты для работы с HTTP-запросами. Помните о безопасности своих действий, соблюдайте осторожность при работе с сетевыми устройствами и паролями.