Взаимодействие С Модемом В Ос Android

В предыдущий В этой статье я рассказал о том, как работает уровень радиоинтерфейса в ОС Android. Сегодня я расскажу о том, как можно напрямую взаимодействовать с модемом.

Часто бывает, что планшет с 3G-модемом не предоставляет возможности совершать звонки, отправлять СМС-сообщения или даже узнавать баланс своего счета.

В этой статье мы с этим разберемся, а также посмотрим, как использовать весь функционал, предоставляемый модемом.

Как вы уже знаете, RIL производителя переводит запросы ОС Android в форму, понятную модему.

Обычно для взаимодействия с модемом используется набор стандартизированных AT-команд Hayes, однако некоторые производители модемов дополняют стандартный набор AT-команд собственными расширениями.

Сегодня мы будем работать на уровне между RIL производителя и модемом.



Взаимодействие с модемом в ОС Android

Отмечу, что для экспериментов ваше устройство должно быть рутировано, а также иметь минимальный опыт программирования с помощью NDK.



Давайте начнем

Для начала нам необходимо установить в системе имя файла устройства модема.

Как правило, это /dev/ttyACM0 или /dev/smd0 (также встречается /dev/ttyUSB0).

Чтобы это узнать, нужно запустить команду просмотра радиолога в терминале: logcat -b радио .

Самая первая строка радиолога должна выглядеть так: " Открытие устройства tty /dev/ttyACM0 ".

Если такой строки нет, то нам повезло меньше, нам придется перебрать все устройства, расположенные в каталоге /dev/.

Для этого нам нужно отправить тестовую команду к каждому файлу из этого каталога" В "а если это файл устройства модема, то посмотреть ответ в журнале радио" ХОРОШО ".

Команды можно отправлять, например, с помощью терминала: эхо "AT" > /dev/имя_файла .

Теперь давайте установим, какие команды отправляются модему.

Для этого проведем «атаку» по типу MITM.

Взаимодействие с модемом в ОС Android

Для этого:

  • Давайте переименуем настоящий файл модема в /dev/ttyACM0_real .

  • Давайте создадим файл /dev/ttyACM0 как символическая ссылка на псевдотерминал /dev/ptmx .

  • Мы будем протоколировать все, что происходит /dev/ttyACM0 и перенаправить его на /dev/ttyACM0_real
  • Давайте перезапустим демон rild: " убить pid_rild ", он запустится автоматически.

Доступен код программы здесь .



Взаимодействие с модемом в ОС Android

Изучив наш лог, можно увидеть, какие AT-команды и параметры соответствуют действиям.

После первого запуска демона rild происходит инициализация модема, получение необходимой информации от базовой станции и т.д. Если вы отправили СМС-сообщение, то этому соответствовала следующая последовательность АТ-команд: АТ+ЦМГС=18 > 0001000b815686070855f4345005c8329bfd06^Z Сообщение появляется таким образом, поскольку оно закодировано в формате PDU. Воспроизводя эту последовательность AT-команд программно, вы можете убедиться, что сообщение отправлено успешно.

В этом случае оно, конечно, не отображается в списке отправленных сообщений в приложении ОС Android. Использование АТ-команды AT+CUSD=1,*100#,15 вы можете сделать USSD-запрос И с помощью команды АТД+79161234567; сделать исходящий звонок.

Используя такой подход, можно осуществлять, например, фильтрацию СМС-сообщений, звонков и т. д. Используемые материалы: 1. fabiensanglard.net/cellphoneModem/index2.php 2. Исходные коды RIL производителя.

Теги: #Android #ril #AT-команды #Разработка Android

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.