В предыдущий В этой статье я рассказал о том, как работает уровень радиоинтерфейса в ОС Android. Сегодня я расскажу о том, как можно напрямую взаимодействовать с модемом.
Часто бывает, что планшет с 3G-модемом не предоставляет возможности совершать звонки, отправлять СМС-сообщения или даже узнавать баланс своего счета.
В этой статье мы с этим разберемся, а также посмотрим, как использовать весь функционал, предоставляемый модемом.
Как вы уже знаете, RIL производителя переводит запросы ОС Android в форму, понятную модему.
Обычно для взаимодействия с модемом используется набор стандартизированных AT-команд Hayes, однако некоторые производители модемов дополняют стандартный набор AT-команд собственными расширениями.
Сегодня мы будем работать на уровне между RIL производителя и модемом.
Отмечу, что для экспериментов ваше устройство должно быть рутировано, а также иметь минимальный опыт программирования с помощью NDK.
Давайте начнем
Для начала нам необходимо установить в системе имя файла устройства модема.Как правило, это /dev/ttyACM0 или /dev/smd0 (также встречается /dev/ttyUSB0).
Чтобы это узнать, нужно запустить команду просмотра радиолога в терминале: logcat -b радио .
Самая первая строка радиолога должна выглядеть так: " Открытие устройства tty /dev/ttyACM0 ".
Если такой строки нет, то нам повезло меньше, нам придется перебрать все устройства, расположенные в каталоге /dev/.
Для этого нам нужно отправить тестовую команду к каждому файлу из этого каталога" В "а если это файл устройства модема, то посмотреть ответ в журнале радио" ХОРОШО ".
Команды можно отправлять, например, с помощью терминала: эхо "AT" > /dev/имя_файла .
Теперь давайте установим, какие команды отправляются модему.
Для этого проведем «атаку» по типу MITM.
Для этого:
- Давайте переименуем настоящий файл модема в /dev/ttyACM0_real .
- Давайте создадим файл /dev/ttyACM0 как символическая ссылка на псевдотерминал /dev/ptmx .
- Мы будем протоколировать все, что происходит /dev/ttyACM0 и перенаправить его на /dev/ttyACM0_real
- Давайте перезапустим демон rild: " убить pid_rild ", он запустится автоматически.
Изучив наш лог, можно увидеть, какие 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
-
«Новые Былины». Едим Слона По Частям
19 Oct, 24 -
Нечестный Прием Клиентов
19 Oct, 24 -
Что Бесит Клиента
19 Oct, 24 -
Россия Может Ужесточить Наказание Кардерам
19 Oct, 24 -
Что За Фрукт Этот Инфобизнес?
19 Oct, 24