Есть ли способ загрузить MMS из командной строки с помощью curl или wget?

Я делаю некоторые исследования вредоносных программ для Android для атак на основе MMS. И я ищу ручной способ получить или загрузить принятое MMS-сообщение. Я надеялся найти строки curl или wget, чтобы это сделать, но не нашел ничего полезного.

До сих пор у меня есть информация MMS из внутренних баз данных, найденная по:

# find / -iname "*.db" |grep -iE "mms|sms"
...
/data/data/com.android.providers.telephony/databases/mmssms.db
/data/data/com.google.android.gms/databases/icing_mmssms.db
/data/data/com.android.mms/databases/message.db
/data/data/com.android.mms/databases/message_glance.db

# cd /data/data/com.android.providers.telephony/databases/
# echo "select * from pdu;" | sqlite3 -header mmssms.db
...
# echo "select date,sub,ct_l,tr_id from pdu;" | sqlite3 -header mmssms.db

  date|sub|ct_l|tr_id
  1495xxxxxx|Download this message|http://mmsc32:10021/mmsc/3_2?Ae_xxxx_xxxxx-xxx|Ae_xxxx_xxxxx-xxx

Как интерпретировать часть mmsc32:10021?

Затем, глядя в настройках сообщений для MMSC, Proxy и port, я хочу создать рабочий CLI-запрос с одним слоем или браузером, чтобы загрузить файл для проверки.

В настройках настроек телефона мы можем найти MMSC через:

Settings > More > Mobile network > Access Point Names > MMS: <your operator>

MMSC:       http://mms.company.net:8002/
MMS Proxy:  194.xx.xx.xx
MMS Port:   8080

Как загрузить файл MMS из командной строки оболочки (или внешнего браузера)?

PS. Очевидно, что телефон укоренен и имеет как busybox, так и sqlite3, а возможно и curl или wget. AOS 5.0+.


Приложение: 2017-11-09

Из здесь:

Сообщения MMS (Служба мультимедийных сообщений) отправляются с использованием сочетание технологий SMS и WAP. Когда отправляется MMS-сообщение, мобильное устройство принимает сообщение уведомления MMS через SMS. когда это сообщение уведомления MMS принимается мобильным устройством, мобильное устройство автоматически инициирует соединение шлюза WAP с загрузите содержимое MMS-сообщения.

Чтобы отправить MMS-сообщение, вы должны сначала создать файл сообщения MMS. формат файла сообщения MMS документируется в инкапсуляции MMS Спецификация протокола, опубликованная Open Mobile Alliance (http://www.openmobilealliance.org) и/или WAP-форум (http://www.wapforum.org). Формат файла сообщения MMS состоит из MMS-сообщение с двоичным заголовком, а затем многостраничное сообщение MIME, где многостраничное сообщение кодируется в двоичном формате в формате определяемый спецификацией протокола WAP Wireless Session Protocol (WSP). Эта бинарный файл сообщения MMS хранится на веб-сервере с использованием типа MIME application/vnd.wap.mms-message и тип сообщения MMS м-извлечения-конф. Подмножество двоичного заголовка MMS отправляется как MMS (MMS-сообщение типа m-notification-ind) с помощью SMS-сообщения мобильное устройство вместе с указателем URL-адреса местоположения полное сообщение.

Кроме того, смартфоны еще не загружают MMS или SMS-контент на SIM-карту. Именно так использовались телефоны с функцией "функция".


Приложение: 2017-11-13

Посмотрев на источники API-23 (M) для таблиц SQLite3, показанные в Telephony.java, мы обнаружим, что CONTENT_LOCATION = "ct_l";, поэтому мы можем искать другие его приложения здесь. Кратко изложим наши выводы:

date    # The message delivery time.
sub     # The subject of the message, if present.
ct_l    # The Content-Location of the message. A field in interface:Telephony.BaseMmsColumns 
tr_id   # The transaction-id of the message. 

Таким образом, мы могли бы ожидать, что URI в ct_l можно интерпретировать следующим образом:

  • http://mmsc32:10021 - сервер (IP: PORT), замаскированный прокси-сервером MMS (показан) выше
  • /mmsc/3_2 - это URL-адрес WAP для процессора сообщений
  • ?Ae_xxxx_xxxxx-xxx сообщает процессору сообщений получить сообщение, указанное "идентификатором транзакции": Ae_xxxx_xxxxx-xxx

Поэтому, используя параметры прокси-сервера (APN) и используя URL-адрес, извлеченный из DB сообщения (mmssms.db), нужно иметь возможность извлекать и загружать содержимое MMS с помощью тщательно созданного оператора curl, Возможно, что-то вроде:

# curl -x http://proxy_server:proxy_port --proxy-user username:password -L http://url
curl -v -x http://194.xx.xx.xx:8080 -L http://mmsc32:10021/mmsc/3_2?Ae_xxxx_xxxxx-xxx
# Or from outside local net:
curl -v -x http://mms.company.net:8002 -L http://mmsc32:10021/mmsc/3_2?Ae_xxxx_xxxxx-xxx

Первый, очевидно, не будет работать из-за пределов телефонной сети, поскольку он относится к классу IP C, только видимый в назначенном мобильном IP-адресе.

Ответ 1

Надеюсь, ты получишь ответ на этот вопрос. Я не тот, но брошу свои ценные советы на 2 цента...

Краткая версия

  • У вас не могут быть тексты, пропускающие SIM-карту "отправить на" и автоматическое переадресацию на какой-либо компьютер.

  • Сделайте Android-приложение для установки на свой телефон, убедитесь, что его задача заключается в обнаружении и переадресации на компьютер новых сообщений о входящих сообщениях.

  • Используйте USB-ключ для SIM-карты. Когда вы подключаетесь к компьютеру, вы получаете сообщения непосредственно на свой компьютер без участия телефона.

Длинная версия

Вместо инструментов командной строки вам лучше сделать реальное приложение (через Android SDK), которое проверяет полученные сообщения и пересылает вам некоторые данные (например, по электронной почте или сокетам или, как вам нравится). Также "некоторые данные" означают либо полную копию самого сообщения, либо просто отправляет обратную связь [in-app] анализ сообщений (например, количество обнаруженных изображений, шестнадцатеричная распечатка байтов изображения и т.д.).

Глядя на Android API-интерфейс SmsManager, он даже сообщает вам:

Информацию о том, как вести себя как приложение SMS по умолчанию на Android 4.4 (API-уровень 19) и выше, см. Телефония.

Также посмотрите, что API downloadMultimediaMessage. Он делает то, что вам нужно. Телефония на странице есть информация и ссылки для запуска, но независимые статьи и учебники блога (один такой example) об этой теме тоже есть.

В любом случае, на ваш пост...

(1)

"Я просто хочу загрузить сообщение в файл без обработки его телефона, поскольку он может содержать вредоносное ПО"

Как вы себе представляете "без обработки телефона"? Телефон держит сим, что ваш оператор (через сервисный центр) будет пересылать сообщения, после получения из собственного центра обслуживания поставщика-отправителя. Вы и curl вышли из этого цикла. Вы будете знать только текст, когда ваша SIM-карта примет его, и операционная система телефона сообщит вам об этом.

Технически телефон обработал это сообщение, вы его еще не открыли.

(2)

"Как загрузить файл MMS из командной строки оболочки или внешнего браузера?"

Вам нужно загрузить весь этот файл mmssms.db и извлечь из него определенное сообщение. Вы относитесь к .db как к любой другой онлайн-базе данных (например, используя запросы типа SQL/PHP и т.д.).

См. этот учебник для полезных советов: http://cheeky4n6monkey.blogspot.co.uk/2013/02/

Альтернативой для будущих входящих сообщений является просто получить (USB) SIM-ключ, который берет вашу карту. После подключения к компьютеру он может принимать/отправлять сообщения, так как SIM активна/активна внутри ключа (в качестве прокси телефона).

Ключи поставляются с собственным программным обеспечением (например образ такого) для управления веб-соединениями и чтения/записи SMS/MMS-сообщения. Это похоже на то, что SIM-карта работает не в телефоне, а на рабочем столе.