Уже больше месяца являюсь обладателем данного устройства (и наконец нормального интернета на даче), но что расстроило в первый же день после включения, это отсутствие в веб-интерфейсе роутера возможности отправки произвольных USSD-запросов.
В прошивке от МегаФона можно только проверить баланс, узнать свой номер и активировать карту оплаты. А мне нужно было отправить запрос на получение пароля к системе управления услугами (она же "Сервис-Гид").
Можно было бы, конечно, просто переставить SIM-карту в телефон и отправить соответствующую USSD-команду *105*00#.
Но это же совершенно не интересно и по-ламерски. Поэтому мы (как обычно) пойдем другим путём.
Попытка внедрения измененного javasctipt'а с нужным USSD-запросом в веб-страницу админки ни по одному из бесчисленных мануалов не принесла результатов. Хотя если рабочий способ это сделать есть — это было бы гораздо проще, чем то, что будет описано далее.
Затем попробовал связаться с поддержкой МегаФона по мылу, описал проблему, через сутки ответили, что оказывается можно в качестве пароля установить PUK-код SIM-карты, и для этого надо звонить в абонентскую службу. Но на деле оказалось, что для тарифов с возможностью голосовых звонков они этого не делают, и что единственная возможность получить пароль — таки переставить SIM'ку.
Так что ТП врёт, и пользы от них как всегда никакой.
К счастью, есть ещё один способ: отправка USSD-запросов при помощи AT-команд модема.
Необходимый софт
Под Windows можно воспользоваться PuTTY или стандартным HyperTerminal (в WinXP и старше).
Но в этом случае в лог будут выводиться диагностические сообщения об уровне сигнала сети, а введённые команды наоборот не будут видны.
Поэтому лучше использовать специализированный Huawei Modem Terminal.
Отправлять команды нужно на COM-порт, который называется "HUAWEI Mobile Connect - 3G PC UI Interface". При этом после каждой перезагрузки компьютера или при переподключении устройства номер порта может меняться.
А также, на некоторых моделях модемов/роутеров Huawei отправлять команды нужно на один порт, а ответы смотреть с другого.
Под Linux для этого используется minicom, номер порта можно выяснить в выводе lsusb -v.
Или же:
echo -n "AT-command\r\n" > /dev/ttyUSB0
(устройство /dev/ttyUSB0 указано для примера)
AT-команды
- common AT-commands
- Huawei AT-commands
- AT Команды модема Huawei для Hyperterminal
- Команды для usb модема huawei
AT-команда для отправки USSD-запроса:
AT+CUSD=1,"USSD-command",15
Проблема в том, что для модемов/роутеров Huawei USSD-команда должна быть PDU-кодирована, а ответ будет в кодировке UCS2.
Для конвертирования запроса можно использовать веб-сервис SMSTools3 PDU Converter:
Данный конвертер предназначен для кодирования SMS, поэтому в начале будет служебная информация, а нужный текст начинается с AA (это первая звездочка из исходного запроса *105*00#).
Альтернативы:
- на PHP: USSD tool
- на Bash: Скрипт для отправки USSD-запросов
На основе этого скрипта я написал собственный скрипт ussd.sh — только для кодирования USSD-запросов в PDU и декодирования ответов из UCS2 в обычный текст в UTF8.
Этот скрипт НЕ отправляет команды в модем, а только конвертирует запросы/ответы. Отправлять нужно вручную при помощи программ, указанных выше.
Таким образом, нужная AT-команда для получения пароля Сервис-Гида имеет вид:
AT+CUSD=1,"AA18ACA682C146",15
После отправки команды придёт SMS с паролем, которую можно посмотреть через веб-интерфейс.
Не смотря на довольно длинный мануал, на самом деле получить пароль (или отправить какую-либо другую USSD-команду) этим способом можно гораздо быстрее, чем открывать роутер, доставать SIM-карту, вставлять её в обычный мобильный телефон, и после получения ответа вставлять SIM обратно.