tobotras: (emacs)
tobotras ([personal profile] tobotras) wrote2010-11-11 01:09 pm

Мегафоновое. Модемное.

В ноут воткнут мегафоновский модем. Хочу узнать баланс. Захожу на сайт московского Мегафона, ищу какой-нибудь «личный кабинет». На поиски ушло минут пять, не меньше. Да, и нашёл только полнотекстовым поиском. Хороший UI, годный.

Чтобы подключиться к этому selfservice, надо послать SMS и получить в ответ пароль. Можно, конечно, переткнуть симку в мобилу, послать и получить. Но мы не ищем лёгких путей.


$ cu -l /dev/ttyUSB_utps_modem
AT+CMGF=1
OK
AT+CMGS="000105"
> 41
+CMGS: 1

OK
AT+CMGL="ALL"
…

OK
AT+CMGR="0"
+CMGR: «REC READ»,"+74955025555",,"10/11/10,18:04:43+12"
04230441043B0443043304300020042104350440043204380441002D04130438043400200430043A04420438043204380440043E04320430043D0430002C00200412043004480020043F04300440043E043B044C0020003400350032003800310033

OK
~.


Так… Эта галиматься, судя по Wikipedia, — UTF-16. Как из command line сделать бинарную строчку? С разбегу не нашёл, написал ценный программный продукт:


# include <stdio.h>

int hex2bin( unsigned char c )
{
	if ( c >= '0' && c <= '9' )
		return c — '0';
	else
		return c — 'A' + 10;
}

int readByte( void )
{
	int c1 = getchar();
	int c2 = getchar();
	return hex2bin( c2 ) | ( hex2bin( c1 ) << 4 );
}


void main( void )
{
	while ( 1 ) {
		int c1 = readByte();
		int c2 = readByte();
		if ( feof( stdin ) )
			break;
		putchar( c2 );
		putchar( c1 );
	}
}


Дальше hex2bin | iconv -f UTF-16 и вуаля, у меня есть пароль.

После этого в selfservice легко обнаружилось, что на тарифе Internet-only ещё по умолчанию включена услуга «другой гудок», или как-то в этом роде, за какие-то 60руб/мес. Милые шалости…

[identity profile] dimas.livejournal.com 2010-11-11 10:41 am (UTC)(link)
у меня модем не умеет звонить голосом :)

правда, говорят, это чисто програмное ограничение, надо как-нить найти время и перешить нафиг на свободную от симлока и этого ограничения прошивку ...

p.s. буду запускать поделие - посмотрю команду :)
p.s.2. а не дешевле раз в две недели покупать новую симку за 150р, если нужен безлимит? или там скорость больше, чем 238Кбит/с?

[identity profile] dimas.livejournal.com 2010-11-11 11:03 am (UTC)(link)
и чего, оно реально эту скорость выдает? за городом то и 238 на пределе, но там WCDMA нет (светодиод зеленый, а не синий), или как там оно называется ...

[identity profile] tnt23.livejournal.com 2010-11-11 10:58 am (UTC)(link)
AT+CUSD=1,"*100#" или как-то так?

А то, что тебе выдал модем, называется PDU.

[identity profile] akovalenko.livejournal.com 2010-11-11 11:27 am (UTC)(link)
Вы на выдачу-то посмотрите внимательнее — какой блин PDU после CMGF=1 и по команде, упоминающей "REC READ"? Режим текстовый; а что непонятно, так это просто charset такой (обычно такой эффект дает AT+CSCS="UCS-2")

[identity profile] tnt23.livejournal.com 2010-11-11 11:50 am (UTC)(link)
А, ну виноват.
vitus_wagner: My photo 2005 (Default)

[personal profile] vitus_wagner 2010-11-11 11:29 am (UTC)(link)
Насколько я помню, USSD-номер баланса мегафон понимает и *100# (как в МТС) и *102# (как в Билайн). Все-таки от того, что он третий, иногда бывает польза.

Засада бывает в том, что некоторые модемы не понимают USSD-номера, сказанного человеческим языком

AT+CUSD=1,"*100#",15

а хотят номер в семибитно-закодированном виде:

AT+CUSD=1,AA180C3602,15

Один из двух указанных вариантов должен сработать и вернуть что-то типа той твоей SMS-ки.

> и *102# (как в Билайн)

[identity profile] poige.livejournal.com 2010-11-12 03:40 am (UTC)(link)
Да как бы нет.