26 апреля 2011 г.

Пишем свой реконнект-скрипт для DSL модема

Речь пойдет о написании скрипта на Linux. Но методы можно также применить на Windows.
В предыдущей записи, касаемой реконнекта модемов  речь шла о сбросе соединения с целью получения нового IP адреса с помощью списка, который можно найти в интернете (адрес был указан). Но может оказаться так, что железки нет в списке. Что делать в этом случае?
Есть очень хорошее расширение для браузера Firefox, называется расширение это Tamper Data. С помощью него можно отлавливать и разбирать по полочкам трафик, а именно последовательности сессий (GET/POST). Так вот, основа того, что можно реконнектить модем через веб-интерфейс настроек модема, как раз и лежит в альтернативном методе. Всего (обычно) действий три: логин с паролем, разрыв соединения и через некоторое время (5-10 секунд) - восстановление соединения с внешним миром.

Рассмотрим два шага, для случая, если в локальной сети к установкам модема можно "дотянуться" без пароля, что очень не хорошо, т.к. любой может перенастроить ваш модем через браузер, зная IP адрес модема.

Если мы уже находимся в веб-интерфейсе настроек, то нужно найти кнопки "Disconnect" и "Connect". После этого включаем "Tamper Data" через панель расширений и созерцаем соединения GET/POST в нашем окне. Жмём "Disconnect" в веб-интефейсе модема и смотрим, что происходит в окне:

"словили" разъединение с интернетом, правой кнопкой мышки на "POSTDATA" можно вызвать меню для копирования текста в буфер обмена.


тоже и для соединения с интернетом.

Затем пишем простенький shell-скрипт:

#!/bin/sh
# by Eduard-X

echo "disconnect"
wget -q -O /dev/null --post-data="controller=Internet&action=DisconnectInternet&id=0&ReturnPage=%2Fdiagnostic.htm" http://192.168.1.1/cgi-bin/Hn_wan.cgi >/dev/null 2>&1
sleep 5
echo "connect"
wget -q -O /dev/null --post-data="controller=Internet&action=ConnectInternet&id=0&ReturnPage=%2Fdiagnostic.htm" http://192.168.1.1/cgi-bin/Hn_wan.cgi >/dev/null 2>&1

Как видно, текст из буфера обмена нужно немного переработать, выкинув текст "POSTDATA=" и обращаться нужно не просто по IP адресу модема, а вызывать нужное cgi приложение, в нашем случае Hn_wan.cgi

Пауза в 5 секунд необходима для получения нового IP адреса, величина зависит от
провайдера, устанавливается экспериментальным путём. Если пауза будет меньше,
то есть вероятность того, что вы получите предыдущий IP.

Вот и всё.

Комментариев нет:

Отправить комментарий