Как перезагрузить маршрутизатор с помощью curl или wget, чтобы передать URL и параметры POST?

Вопрос или проблема

У меня есть маршрутизатор 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, которые вам понадобятся для выполнения почти любого из административных экранов.

  1. первая команда curl используется для аутентификации и генерации cookie аутентификации
  2. вторая команда – это фактический вызов функции маршрутизатора с использованием 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&current_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, вы можете выполнить следующие шаги:

  1. Аутентификация:
wget --save-cookies /tmp/cookie-jar.txt --keep-session-cookies \
     --post-data 'username=admin&password=ваш_пароль' \
     'http://192.168.2.1/login.cgi' 
  1. Перезагрузка роутера:
wget --load-cookies /tmp/cookie-jar.txt \
     --post-data 'reset_flag=0&submit-url=%2Fadmin_restart.asp' \
     'http://192.168.2.1/goform/formReboot'

Советы по устранению неполадок

  1. Используйте флаг --verbose: Для более детального вывода выполнения команд и выявления возможных ошибок добавьте флаг --verbose к вашим curl командам.

  2. Проверьте URL и параметры: Убедитесь, что указанные URL и параметры соответствуют документации вашего роутера. Если вы получаете ошибки 404, возможно, проблема в неправильном пути.

  3. Использование инструментов разработчика: Откройте инструменты разработчика в вашем браузере (обычно F12) и перейдите на вкладку "Сеть" (Network). В процессе перезагрузки роутера вы сможете увидеть реальный запрос и его заголовки, которые можно использовать для формирования соответствующей команды curl или wget.

  4. Обращайте внимание на ответы сервера: Пустой ответ от сервера может указывать на несоответствие формату ожидаемого запроса. Убедитесь, что все заголовки и данные отправляются корректно.

Заключение

Перезагрузка роутера через curl или wget может показаться сложной задачей, но с правильным подходом и вниманием к деталям, это вполне осуществимо. Следуя данному руководству, вы сможете успешно перезагрузить роутер Edimax или другой, используя командную строку и инструменты для работы с HTTP-запросами. Помните о безопасности своих действий, соблюдайте осторожность при работе с сетевыми устройствами и паролями.

Оцените материал
Добавить комментарий

Капча загружается...