Перевод модема huawei e3372 в режим только модем
Официальный сайт сборок HUAWEI Modem
Сборки HUAWEI Modem
Блок ссылок
Инструкция по настройке модема с помощью AT-команд
Управление 3G-модемом происходит при помощи AT-команд. Даже родное программное обеспечение от оператора использует эти команды в фоновом режиме. Все вы прекрасно знаете, что при подключении модема к компьютеру, система определяет сразу несколько устройств: модем, CD-ROM, Flash-карта (не во всех модемах). Все эти интерфейсы виртуальны и используется пользователем по мере надобности. Иногда возникает необходимость отключить Cd-rom и флешку, например, не все роутеры исправно работают с модемами у которых эти опции включены. Иногда требуется включить режим только модем. Для этого потребуется программа Hyper terminal, встроенная в операционную систему Windows XP. Для Windows Vista и Windows 7 её необходимо скачать. Я предлагаю вам более удобный вариант для общения с модемом — программу Huawei Modem Terminal.
Вставляем модем Huawei в USB-порт и запускаем программу. Далее в программе вверху выбираем ваше устройство «HUAWEI Mobile Connect — 3G PC UI Interface» и жмем Connect. После этого требуется проверить отвечает ли нам модем. Для этого внизу в строке введите команду AT и нажмите Enter. Должно появиться что-то типа того:
Send: AT
Recieve: AT
Recieve: OK
Если все произошло именно так, то модем отвечает и мы можем подавать ему команды, список которых приведен ниже:
Команды для модемов типа Huawei E1550:
AT^U2DIAG=0 (девайс в режиме только модем)
AT^U2DIAG=1 (девайс в режиме модем + CD-ROM)
AT^U2DIAG=255 (девайс в режиме модем + CD-ROM + Card Reader) — не поддерживается Huawei E1750
AT^U2DIAG=256 (девайс в режиме модем + Card Reader, можно использывать как обычную флешку, отказавшись от установки драйверов модема).
AT^SYSCFG=2,2,3fffffff,0,2 (включение 2G,3G)
Команды для модема Huawei E1750:
AT^U2DIAG=0 (девайс в режиме только модем)
AT^U2DIAG=1 (девайс в режиме модем + CD-ROM)
AT^U2DIAG=6 (девайс в режиме только сетевая карта)
AT^U2DIAG=268 для E1750 (девайс в режиме модем + CD-ROM + Card Reader)
AT^U2DIAG=276 для E1750 (девайс в режиме сетевой карты + CD-ROM + Card Reader)
AT^U2DIAG=256 (девайс в режиме модем + Card Reader), можно использовать как обычную флешку, отказавшись от установки драйверов модема.
Команды для модемов Huawei E367, E352, E392, E353 и E171:
AT^SETPORT? — Отображение текущей конфигурации
AT^GETPORTMODE — Отображение в настоящее время активный режим
AT^SETPORT=»A1,A2;1,2,3,7,A1,A2″ — Установить конфигурацию по умолчанию
AT^SETPORT=»A1,A2;1,16,3,2,A1,A2″ — Установить конфигурацию по умолчанию для модема E171 (новая ревизия)
AT^SETPORT=»A1,A2;1,2,3,7,A1,A2,4,5,6,A,B,D,E» — Тоже сброс по умолчанию (на некоторых модемах)
AT^SETPORT=»A1,A2;1,2,3,7″ — Отключить CD-ROM и карту памяти
AT^SETPORT=»A1,A2;1,2,3,A2″ — Отключает NDIS и CD-ROM — остаётся только модем и флешка
AT^SETPORT=»A1,A2;1,2,3″ — Режим «Только модем»
AT^SETPORT=»A1;1,2″ — Отключает вообще всё кроме модема и служебного интерфейса
AT^SETPORT=»A1,A2;2,7″ — Отключить CD-ROM + карту памяти + модем установить в Win7 только NDIS режим.
AT^SETPORT=»A1;2,7″ — CD-ROM + NDIS
Команды для модема Huawei E369:
AT^SETPORT? – вывод на экран текущей конфигурации.
AT^GETPORTMODE — вывод на экран активного режима в настоящее время.
AT^SETPORT = «A1, A2, 1,2,3,7, A1, A2» – установка конфигурации по умолчанию.
AT^SETPORT = «A1, A2, 1,2,3,7» — устройство в режиме Modem + Network Card.
AT^SETPORT=»A1,A2;1,2,3,A2″ — устройство в режиме Modem + Card Reader.
AT^SETPORT = «A1, A2, 2,7» — устройство в режиме Network Card.
AT^SETPORT=»A1,A2;1,2,3″ — устройство в режиме Modem (работает быстрее и стабильнее).
AT^SETPORT = «A1, 2,7» — Network Card + CD-ROM.
AT^SETPORT = «A1, A2, 1,2,3,7, A1, A2, 4,5,6, A, B, D, E» — сброс настроек по умолчанию.
Команды для модема Huawei E3131:
AT^SETPORT=»A1,A2;1,16,3,2,A1,A2″ — (Установить конфигурацию по умолчанию)
AT^SETPORT=»A1,A2;1,2,3,16,A1,A2″ — (режим для работы модема с Android 4.0 (иногда работает))
AT^SETPORT=»A1,A2;1,16,3,2″ — (девайс в режиме «модем + сетевая карта»)
AT^SETPORT=»A1,A2;1,2,3,A2″ — (девайс в режиме «модем + Card Reader»)
AT^SETPORT=»A1,A2;1,2,3,A1″ — (девайс в режиме «модем + CD-ROM»)
AT^SETPORT=»A1,A2;1,2,3″ — (девайс в режиме «только модем»)
AT^SETPORT=»A1,A2;2,16″ — (девайс в режиме «сетевая карта»)
AT^SETPORT=»A1,A2;2,16,A1″ — (девайс в режиме «сетевая карта + CD-ROM»)
Команды для модема Huawei E3272:
AT^SETPORT=»A1,A2;10,12,16,A1,A2″ — Конфигурация по умолчанию
AT^SETPORT=»A1,A2;10,12,16,A2″ — Конфигурация по умолчанию, отключить CD
AT^SETPORT=»A1,A2;10,12,16″ — Конфигурация по умолчанию, отключить CD + SD
AT^SETPORT=»A1,A2;10,12″ — Конфигурация по умолчанию, отключить NDIS + CD + SD
AT^SETPORT=»A1;10,12,13,14,16,A1,A2″ — Включает: все COM порты + NDIS + CD + SD
AT^SETPORT=»A1;10,12,13,14″ — Включает: все COM порты, отключает: NDIS + CD + SD
AT^SETPORT=»A1;10,12,13,14,16″ — Включает: все COM порты + NDIS, отключает: CD + SD
AT^SETPORT=»A1;10,12,13,14,A2″ — Включает: все COM порты + SD, отключает: NDIS + CD
Команды для активации предпочтительных режимов сети (для E1750, E1820, E1550 и похожим моделей):
at^hspa=0 — режим wcdma
at^hspa=1 — режим hsdpa
at^hspa=2 — режим hspa
at^hspa=3 — режим hspa+
at^hspa=4 — сбалансированный режим. На некоторых форумах пишут, что кое-какие виды модемов с таким параметром лучше держут соединение.
Если на предыдущие команды появилось ERROR, то стоит попровать эти:
AT^HSDPA=1 — режим HSDPA
AT^HSDPA=0 — выключено
AT^HSUPA=1 — режим HSUPA
AT^HSUPA=0 — выключено
Внимание! Команды для активации предпочтительных режимов сети сбрасываются после отключения модема от питания.
Команды для разблокировки 3G-модема от конкретного оператора:
AT^CARDUNLOCK=»nck md5 hash» — Сброс попыток к 10
AT^CARDLOCK=»nck code» — Снятие блокировки
AT^CARDLOCK? — Проверить блокировку и количество попыток в ответ модем выдаст:
CARDLOCK: A,B,0
A -> 2- означает, что симлока нет, 1-если модем залочен
B -> количество оставшихся попыток разблокировки. У нового модема = 10
Перевод модема huawei e3372 в режим только модем
Сообщение zelen184 » 03 июл 2014, 11:14
Модем МТС 827F (Huawei E3372)
Чтобы модем заработал через роутер.
Модем Мегафон М150-2 (Huawei E3372)
Чтобы модем заработал через роутер.
Если модем заработал, но скорость upload («отдачи») крайне низкая (0.5 mbit/s), выполните настройку как на скриншоте
Если после успешной настройки вы испытываете проблемы с подключением, или с разрывами связи, воспользуйтесь следующими рекомендациями:
1. Сам модем должен быть подключен непосредственно в USB порт роутера без каких-либо усилителей или удлинителей.
2. Минимальный уровень сигнала 3G\4G должен быть не меньше 40% . Для 3G сетей, в случае, если сигнал ниже 40% , мы рекомендуем переводить модем в режим «только 2G».
Если после данных действий проблема осталась, пожалуйста через 10-15 минут сохраните системный журнал (System Tools — System Log) и пришлите его на почту технической поддержки Вашего региона
Кроме журнала, в письме следует максимально подробно описать суть проблемы, страну и название оператора связи
Re: TL-MR3220 + Huawei E3372(МТС 827F, Мегафон М150-2)
Сообщение Ame » 03 июл 2014, 11:14
Логи оборудования : ####################################################################
# TL-MR3220 System Log
# Time = 1970-01-01 0:02:54 175s
# H-Ver = MR3220 v2 00000000 : S-Ver = 3.15.0 Build 130607 Rel.53190n
# L = 192.168.0.1 : M = 255.255.255.0
# 3G : 3G = 0.0.0.0 : M = 0.0.0.0 : G = 0.0.0.0
####################################################################
1st day 00:00:07 OTHER INFO System started
1st day 00:00:18 DHCP NOTICE DHCP server started
1st day 00:00:18 SECURITY INFO PPTP Passthrough enabled
1st day 00:00:18 SECURITY INFO L2TP Passthrough enabled
1st day 00:00:18 SECURITY INFO IPSEC Passthrough enabled
1st day 00:00:18 SECURITY INFO FTP ALG enabled
1st day 00:00:18 SECURITY INFO TFTP ALG enabled
1st day 00:00:18 SECURITY INFO H323 ALG enabled
1st day 00:00:19 SECURITY INFO RTSP ALG enabled
1st day 00:00:31 3G/4G NOTICE handle_card start
1st day 00:00:31 3G/4G INFO LTE MODEM = 0, status = 1, targetVendorID = 0x0, targetProductID = 0x0
1st day 00:00:36 3G/4G INFO Before Mode switch VendorID = 0x12d1, ProductID = 0x15e7
1st day 00:00:43 3G/4G INFO card_add 681 mode switch by vendor id, try commands total = 69
1st day 00:01:14 DHCP NOTICE DHCPS:Recv REQUEST from 78:92:9C:1F:C9:22
1st day 00:01:15 DHCP NOTICE DHCPS:REQUEST ip c0a80165 is not in the address pool
1st day 00:01:15 DHCP NOTICE DHCPS:Send NAK
1st day 00:01:15 DHCP NOTICE DHCPS:Recv DISCOVER from 78:92:9C:1F:C9:22
1st day 00:01:16 DHCP NOTICE DHCPS:Send OFFER with ip 192.168.0.100
1st day 00:01:16 DHCP NOTICE DHCPS:Recv REQUEST from 78:92:9C:1F:C9:22
1st day 00:01:16 DHCP NOTICE DHCPS:Send ACK to 192.168.0.100
1st day 00:01:20 DHCP NOTICE DHCPS:Recv INFORM from 78:92:9C:1F:C9:22
1st day 00:01:44 3G/4G NOTICE /tmp/3G/12d1_1003_1
1st day 00:02:00 3G/4G INFO Main interface_index[0] = 0
1st day 00:02:00 3G/4G INFO Vice interface_index[1] = 1
1st day 00:02:01 3G/4G NOTICE after switch modem vid is 0x12d1 pid is 0x1506
1st day 00:02:01 3G/4G INFO LTE MODEM = 0, status = 2, targetVendorID = 0x12d1, targetProductID = 0x1506
1st day 00:02:02 3G/4G INFO USB modem is ready
1st day 00:02:03 3G/4G NOTICE setModemISP 1396 mcc is 250, mnc is 011
1st day 00:02:11 PPP NOTICE Standard authentication.
1st day 00:02:11 3G/4G NOTICE 3G/4G start connecting.
1st day 00:02:11 3G/4G INFO Run 3G dial cmd: pppd 3g 1 /dev/ttyUSB0 115200 connect «chat -s -v -f /etc/ppp/c
1st day 00:02:12 PPP INFO pppd start
1st day 00:02:15 PPP INFO sent [LCP Req mru=1480 asyncmap=0x0 magic=0x29ca794e]
1st day 00:02:18 PPP INFO sent [LCP Req mru=1480 asyncmap=0x0 magic=0x29ca794e]
1st day 00:02:21 PPP INFO sent [LCP Req mru=1480 asyncmap=0x0 magic=0x29ca794e]
1st day 00:02:24 PPP INFO sent [LCP Req mru=1480 asyncmap=0x0 magic=0x29ca794e]
1st day 00:02:27 PPP INFO sent [LCP Req mru=1480 asyncmap=0x0 magic=0x29ca794e]
1st day 00:02:30 PPP INFO sent [LCP Req mru=1480 asyncmap=0x0 magic=0x29ca794e]
1st day 00:02:33 PPP INFO sent [LCP Req mru=1480 asyncmap=0x0 magic=0x29ca794e]
1st day 00:02:36 PPP INFO sent [LCP Req mru=1480 asyncmap=0x0 magic=0x29ca794e]
1st day 00:02:39 PPP INFO sent [LCP Req mru=1480 asyncmap=0x0 magic=0x29ca794e]
1st day 00:02:40 DHCP NOTICE DHCPS:Recv INFORM from 78:92:9C:1F:C9:22
1st day 00:02:42 PPP INFO sent [LCP Req mru=1480 asyncmap=0x0 magic=0x29ca794e]
1st day 00:02:54 PPP NOTICE Standard authentication.
1st day 00:02:54 3G/4G NOTICE 3G/4G start connecting.
1st day 00:02:54 3G/4G INFO Run 3G dial cmd: pppd 3g 1 /dev/ttyUSB1 115200 connect «chat -s -v -f /etc/ppp/c
1st day 00:02:54 PPP INFO pppd start
Перевод модема huawei e3372 в режим только модем
Поддерживаемые диапазоны:
GSM/EDGE/EVDO/LTE/FDD/TDD/UMTS
Скорость приёма данных модемом до 150 Мбит/с,
Скорость передачи данных — до 50 Мбит/с
Поддерживаемые частоты
GSM / GPRS / EDGE 850 / 900 / 1800 / 1900
UMTS / DC-HSPA+ /WCDMA 900 / 2100
LTE 800/900/1800/2100/2600 MHz
Дополнительно
Поддержка карт MicroSD до 32 ГБ
Внешняя антенна
Тип разъема внешней антенны — CRC9, он же, по терминологии huawei — TS-5.
Модем имеет 2 антенных разъема (под MIMO-антенны), одиночная антенна подключается к разъему, ближайшему к USB
Операционные системы:
Поддержка OC Windows XP SP3, Windows Vista SP1/SP2, Windows 7, Windows 8, Mac OS X 10.5, 10.6, 10.7, 10.8, Linux
- Веб-интерфейс 17.100.11.03.161 (Билайн)
- Веб-интерфейс 17.100.13.01.161 (Билайн) (в посте прошивка + морда, проша только для E3372h, морда ставится и на E3372s, и на E3372h)
- Веб-интерфейс 17.100.17.00.143 (МТС) для 829F (в посте прошивка + морда, проша только для E3372h, морда ставится и на E3372s, и на E3372h)
- Веб-интерфейс 17.100.05.06.965 (в посте прошивка + морда, проша только для E3372s, морда ставится и на E3372s, и на E3372h)
- Веб-интерфейс 17.100.14.02.577 (Beeline KZ)
- Веб-интерфейс 17.100.14.02.778 (Russia Open Market)
- Набор дашбордов
- Дашборд Mobile Partner
- Дашборд 23.015.05.11.143 (МТС) для 827F/829F (WIN10+MAC10.11) (в посте прошивка + дашборд, проша только для E3372h, дашборд ставится и на E3372s, и на E3372h)
- Аварийное восстановление прошивки модемов 3372S и E3372H
- Как замкнуть бутовую точку пина с корпусом модема без разборки модемаД
- О проблеме вечного Fastboot и борьбе с ней. Часть 1, Часть 2
- Восстановление модема методом стирания разделов флеши через fastboot
- Решение проблемы с портом аварийной загрузки модема в Windows 8.1
- Восстановление модемов E3272/E3276, E3372s и E3372h с HiLink-прошивкой
- Вывод модема из режима загрузки, не срабатывает на новых прошивках, в таком случае помогает «Прошивка» для вывода из режима загрузки.
- «Прошивка» для вывода из режима загрузки
- Скрипты для устранения проблемы с профилем для E3372s и E3372h
- Скрипты для открытия портов в HiLink
Модем не программируют для совместимости с роутерами, наоборот, это делают производители роутеров. Поэтому ищите список совместимых моделей с вашим роутером. Если вы ищите роутер для работы с этим модемом, то создайте тему в Выбор и сравнение. Здесь все просьбы о помощи с выбором удаляются.
Далее, если вам нужна помощь для того, чтобы подружить модем с роутером, то вам нужно спрашивать помощи в теме роутера. Почему? Потому что роутеры очень разные, люди в этой теме понятия не имеют, что нужно сделать, чтобы модем с ним заработал. Модемы же, напротив, определяются все лишь несколькими разными способами, что-то нестандартное бывает редко. У этого модема есть несколько разных способа для определения: RAS, NDIS в Stick-прошивке и RNDIS, CDC в HiLink-прошивке (RNDIS для винды, CDC для линукса, включая роутеры. И NDIS — не RNDIS, это разные вещи). Иными словами, вам необходимо дружить роутер с модемом, а не модем с роутером, поскольку драйвера должны быть заложены в нем. А что можно сделать с модем? А ничего, нужно ковырять роутер, в него производитель не заложил драйвер.
В случае, если вас гонят из темы роутера сюда, не нужно писать об этом, исключений нет и пост все равно будет удален. Лучше скиньте ссылку на этот текст в тему роутера, чтобы они поняли, что они неправы. А если не помогло — ну что, значит не судьба.
PS: самая беспроблемная схема с роутером: прошивка HiLink на модеме с автопереключением в CDC + Zyxel Keenetic 4G III rev.A с прошивкой Padavan
Сообщение отредактировал Abbat1985 — 03.11.20, 06:34
Сообщение отредактировал Abbat1985 — 31.10.20, 06:03
после чего шеллом станет busybox и появится нормальный редактор командной строки.
VxWorks также имеет в своем составе 2 шелла — C-shell (установленный по умолчанию) и CMD (устанавливаемый командой cmd). Какой из них удобнее — дело вкуса. В обоих шеллах имеется команда help, а более подробную информацию о работе с командной строкой VxWorks можно получить вот из этого документа — http://read.pudn.com/d…ls_users_guide_6.2.pdf
Доступ к консолям ОС модема открывает широчайшие перспективы по глубокому исследованию кода модема и скрытых его возможностях. Для любителей ковыряться в коде это просто золотое дно. Всех других хочу предупредить — бездумный ввод команд в консолях может привести к негативным последствиям — от зависания модема до разрушения важных структур данных на флеше и полной потери работоспособности. Будьте осторожны!
Сообщение отредактировал Abbat1985 — 09.07.20, 20:51
Сообщение отредактировал ctich21 — 03.09.14, 11:13
Модифицированный веб-интерфейс для E3372 s на основе WebUI 16.100.05.00.03
Ориентирован на работу с прошивкой 22.286.03.00.00.
Работает также и с модифицированными прошивками 22.286.53.01.161_S_*.
Несовместим с оригинальной билайновской прошивкой 22.286.53.01.161 в части SMS.
После прошивки веб-интерфейса следует делать сброс настроек (Настройки->Система->Настр. по умолч.).
Сообщение отредактировал Abbat1985 — 09.07.20, 20:52
Предлагаю своё решение для ситуации, когда нужно перевести HiLink-модем в режим с портами, но http://192.168.8.1/html/switchProjectMode.html (switchDebugMode.html) не работает.
Для этих портов необходим драйвер FcSerial.
Сообщение отредактировал Abbat1985 — 09.07.20, 20:53
После некоторого периода тестирования выпускаю новый релиз калькулятора nlock-кодов для модемов Huawei. В прошлом
калькуляторе, calc201, обнаружилась ошибка в расчетной ветке 7, что иногда могло привести к неправильной генерации кодов.
Теперь калькулятор умеет вычилсять 4 варианта кода — flash-код, код алгоритмов версии 1 (old algo), 2 (new_algo) и 201 (201_algo).
Также, учитывая, что многие здешние обитатели вообще не понимают, что такое командная строка, я приделал графическую морду к калькулятору. Морда написана на кроссплатформенном Qt, и имеется и в linux, и в windows-версиях калькулятора. морда выглядит так:
Надеюсь, что тут все понятно. Единственное необходимое пояснение: кнопка reverse переворачивает IMEI задом наперед. Это нужно для вычисления кодов в команде at^spword модема 3372.
Linux-вресия калькулятора, кроме графической морды, имеет также режим командной строки. Если ее запустить без параметров — открывается графическая морда. Если указать парамтром IMEI — в консоль будут выданы все 4 кода. Можно также указывать ключи:
-r — перевернуть IMEI
-f — вычислить только flash-код
-1 — вычислить только код v1 (old algo)
-2 — вычислить только код v2 (new algo)
-3 вычислить только код v201 (201 algo)
Это может быть полезно при написании скриптов. Windows-версия калькулятора не имеет в себе такой функциональности — программировать под windows я не умею, да и не нужно это виндузятникам.
Во вложении 4 файла — раздельно версии под windows, linux 32 bit, linux 64 bit, и исходные тексты. Linux-версии требуют установленной в системе библиотеки Qt, windows-версия собрана статически и не требует никаких библиотек (зато имеет размер почти 4М).
В принципе, данный калькулятор процентов на 90 заменяет ветку под названием » Здесь можно получить коды разблокировки устройств БЕСПЛАТНО». И правильнее было бы повесить его в шапку этой темы. Но вряд ли барыги это допустят.
В заключении, хочу выразить благодарность пользователям rust3028 и Chujoi13 за неоценимую помощь в подготовке и тестировании этого релиза.
Сообщение отредактировал Abbat1985 — 09.07.20, 20:53
нет, нельзя. Мы же с тобой уже недавно обсуждали. Единственный способ попасть в debug снаружи — через запрос POST.
rust3028 написал скрипты для этого — Huawei E3372 (МТС 827F, Мегафон М150-2) — Обсуждение (Пост #35133017) , а ты их, насколько я помню, адаптировал под лиункс.
Еще можно сделать переключение внутри самого модема. Для этого надо написать простенькую программку:
#include
#include
#include
#include
void main() <
int nfd=open(«/dev/ndisapp»,2);
ioctl(nfd,1,0);
>
Собрать ее с помощью android ndk и запускать внутри модема. Именно таким способом производит переключение сам вебсервер.
Но тут есть подводный камень. В момент переключения SD-карта исчезает из USB-композиции и потом появляется заново. Если openwrt уже успел ее примонтировать — получишь ошибку. Поэтому использовать эту карту как extroot в openwrt сходу не получается.
Сейчас я как раз разбираю, как работает с картой AT-процессор — команду at^sd. Возможно, она поможет в этой ситуации.
Сообщение отредактировал forth32 — 30.11.14, 05:30
Кстати, у rust3028 уже имеется готовая программа переключения с произвольной задержкой, готовая для включения в autostart.
rust3028, может быть выложишь ее сюда, чтобы людям не мучаться с освоением ndk?
Автоматическое переключение модема в Debug Mode и Project Mode
Подходит для обоих модемов, на любой прошивке HiLink.
Сообщение отредактировал Abbat1985 — 09.07.20, 20:54
В качестве новогоднего подарка, пока есть свободное время, хочу опубликовать небольшой цикл из 2 статей, посвященный методам исследования одной из операционных систем модема — VxWorks. Меня давно об этом здесь просили, но как-то времени не было собраться. Информация предназначена для любителей поковыряться в потрохах модема, разобрать скрытые его возможности, понять, как он работает. Для тех кому модем нужен «воткнуть и забыть», эта информация бесполезна — просто проходите мимо, все равно ничего не поймете.
Итак, часть 1 — загрузка и разбор образа VxWorks в дизассемблере IDA.
VxWorks, как и все другие компоненты модема, хранится в одном из разделов флеш-памяти модема — разделе mtd11. Для начала нам надо получить образ этого раздела. Его можно получить обычной командой dd. Заходим в консоль линукса (телнетом, через adb, или через a-shell — все это описано в шапке). И вводим такую команду:
затем зайти по ftp на адрес 192.168.8.1 и забрать файл.
Полученный файл mtd11.bin содержит в себе упакованный образ vxworks, к которому добавлен заголовок раздела. Следующим этапом нам надо распаковать этот образ, отрезав предварительно заголовок. Это можно сделать так:
— Долго жмем ентер, пока таблица не закончится
— Закрываем лог в терминальной программе.
Полученный лог-файл содержит в себе таблицу символов. Каждая строка этой таблицы состоит из 3 полей: имени символа, его адреса, и типа (text — программный код, data — данные). Таблица имеет достаточно неприятный вид, кроме того, регулярно загажена строками «Type to continue, Q to stop: «. Наша цель — cделать из этой таблицы IDC-скрипт для импорта всех символов в базу IDA, Для этого я написал простенькую программу на С, прилагаемую к этому посту — vxsym.c. Вначале лог-файл следует открыть в текстовом редакторе, и отрезать от него в начале и в конце все строки, не относящиеся к таблице символов. Промежуточные строки «Type to continue. » уберет сама программа. Затем запускаем программу:
terminal.log в данном примере — это имя лог-файла, сохраненного из терминальной программы. В результате будет создан IDA-скрипт vxsym.idc, а на stdout будет выведена та же самая таблица символов, но приведенная к человеческому виду.
Теперь нам осталось загрузить в IDA полученный скрипт (нажать alt-f7 и выбрать файл vxsym.idc). При этом в IDA-базу будут внесены все имена из таблицы символов, а участки кода, отмеченные в таблице как TEXT, будут автоматически дизассемблированы.
На этом первый этап закончен — у нас есть готовая IDA-база, которую можно начинать разбирать и исследовать. Для тех, кто плохо знаком с ситемой команд ARM, прилагаю pdf-файл c описанием архитектуры и системы команд ARMv7.
Во второй части я расскажу о встроенном в VxWorks отладчике, жизненно необходимом для исследования кода. В качестве пример мы заставим сам модем посчитать nlock-код по алгоритму v201.
Сообщение отредактировал Abbat1985 — 09.07.20, 20:54
Часть 2 — пример исследования кода в отладчике VxWorks. Первая часть статьи здесь.
Исследовать код чисто умозрительно, разбирая последовательность инструкций в дизассемблере — конечно, можно, но достаточно тяжело. Регулярно возникает вопрос — а что в данный момент лежит в этом регистре? Перейдет ли управление по этой условной инструкции или нет? И так далее. Всегда хочется посмотреть регистры и память на живом модеме в интересующих нас точках. Фирма huawei сделала нам необычайно щедрый подарок — встроенный в VxWorks шелл с отладчиком. В качестве примера разберем такую задачу. Одной из подсистем VxWorks является процедура расчета кода разблокировки (знаменитый алгоритм v201). Когда пользователь вводит команду at^cardlock, модем рассчитывает nlock-код от своего IMEI, и сравнивает с введенным в команде. Если совпали — модем разблокируется. Не совпали — выводится сообщение ERROR. Анализом и обработкой AT-команд занимается Linux-часть модема. После приема команды через специальную подсистему обмена сообщениями (ICC) в VxWorks передается специальный запрос. По этому запросу VxWorks вычисляет и проверяет nlock-код, и возвращает в Linux через ICC ответ — совпало/не совпало. Мы попробуем заставить модем вычислить и показать нам 201-код от своего IMEI.
Команда ^cardlock — одноразовая. После того, как модем разблокировался, команда работать перестает. Но, к счастью, nlock-код требуется еще одной команде — at^datalock. Она используется для снятия блокировки с ряда служебных команд (типа ^nvrd/nvwr), и ее можно вводить сколько угодно раз. Вот с этой командой мы и будем работать.
Итак, у нас уже есть готовая IDA-база с образом VxWorks. Быстрый поиск по таблице символов дает нам процедуру с именем DRVAGENT_RcvDrvAgentDeviceDatalockSet. Именно эта процедура вызывается после приема сообщения от команды at^datalock. Но так ли это? Давайте проверим. Заходим в шелл VxWorks (C-shell) и вводим такую команду:
Break at 0x50d818c0: VerifySL Task: 0x53e964b8 (I0_TAF_FID)
NAME ENTRY TID PRI STATUS PC SP ERRNO DELAY
———- ———— ——— — ———- ——— ——— ——- ——
I0_TAF_FID vos_FidTask 53e964b8 144 STOP 50d818c0 5414ef38 0 0
task stack: base 0x5414f000 end 0x54147000 size 32768 high 896 margin 31872
exc. stack: base 0x54151ffc end 0x54151000 start 0x54152000
exc. stack: size 4092 high 624 margin 3468
proc id: 0x5245028c ((null))
options: 0x9005
VX_SUPERVISOR_MODE VX_DEALLOC_STACK VX_DEALLOC_TCB VX_DEALLOC_EXC_STACK
VxWorks Events
—————
Events Pended on : Not Pended
Received Events : 0x0
Options : N/A
r0 = 0x5372759c r1 = 0x5414ef3c r2 = 0x00000000
r3 = 0x00000000 r4 = 0x5414ef3c r5 = 0x5372759c
r6 = 0x53727580 r7 = 0x00000000 r8 = 0x5369fb60
r9 = 0x00000010 r10 = 0x0000000f r11/fp = 0x5414ef60
r12/ip = 0x32303634 r13/sp = 0x5414ef38 r14/lr = 0x51463690
pc = 0x50d818c0 cpsr = 0x600c0113 ttbase = 0x53f74000
value = 0 = 0x0
[C]->b 0x50D819C0
value = 0 = 0x0
[C]->c
Break at 0x50d819c0: VerifySL +0x100 Task: 0x53e964b8 (I0_TAF_FID)
NAME ENTRY TID PRI STATUS PC SP ERRNO DELAY
———- ———— ——— — ———- ——— ——— ——- ——
I0_TAF_FID vos_FidTask 53e964b8 144 STOP 50d819c0 5414ef0c 0 0
task stack: base 0x5414f000 end 0x54147000 size 32768 high 896 margin 31872
exc. stack: base 0x54151ffc end 0x54151000 start 0x54152000
exc. stack: size 4092 high 624 margin 3468
proc id: 0x5245028c ((null))
options: 0x9005
VX_SUPERVISOR_MODE VX_DEALLOC_STACK VX_DEALLOC_TCB VX_DEALLOC_EXC_STACK
VxWorks Events
—————
Events Pended on : Not Pended
Received Events : 0x0
Options : N/A
r0 = 0x537273ec r1 = 0x5414ef0c r2 = 0x00000006
r3 = 0x51bfe9c8 r4 = 0x5414ef0c r5 = 0x5414ef3c
r6 = 0x0000000f r7 = 0x537273ec r8 = 0x5369fb60
r9 = 0x00000010 r10 = 0x0000000f r11/fp = 0x5414ef34
r12/ip = 0x00000006 r13/sp = 0x5414ef0c r14/lr = 0x5414ef14
pc = 0x50d819c0 cpsr = 0x200c0113 ttbase = 0x53f74000
value = 0 = 0x0
[C]->d 0x5414ef0c,8,1
NOTE: memory values are displayed in hexadecimal.
0x5414ef00: 36 34 33 31 * 6341*
0x5414ef10: 35 30 38 39 *5084. *
value = 0 = 0x0
Вот так мы вычислили nlock-код c помощью модема. Этот код является абсолютно точным, образцовым. Можно при входе в процедуру VerifySL c помощью команды m вписать в память другой IMEI, и вычислить nlock-код от него. Я использовал эту возможность для отладки своего калькулятора кодов.
Возможности отладчика VxWorks очень обширны. Вот крайткий список полезных команд:
Предусмотрена там и справочная система — команда help и ее производные. Прилагаю к этому посту pdf с фирменным описанием шеллов VxWorks. Есть и другие доки от WindRiver, легко находящиеся на просторах интернета.
Надеюсь, моя статья подвигднет кого-нибдуь на изучение кода модема. Поверьте, это крайне увлекательное и полезное занятие!
Сообщение отредактировал Abbat1985 — 09.07.20, 20:55