Есть ли способ загрузить 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 Forum ( http://www.wapforum.org/). Формат файла MMS-сообщения состоит из двоичного заголовка MMS-сообщения, за которым следует многокомпонентное сообщение MIME, где многочастное сообщение кодируется в двоичном многочастном формате, как определено спецификацией протокола беспроводного сеанса WAP (WSP). Этот двоичный файл MMS-сообщения хранится на веб-сервере с использованием MIME-типа application / vnd.wap.mms-message и типа MMS-сообщения m-retrieve-conf. Подмножество двоичного заголовка MMS отправляется в виде SMS-уведомления (MMS-сообщение типа m -tification-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
такое WAP-URL для обработчика сообщений?Ae_xxxx_xxxxx-xxx
говорит обработчику сообщений извлечь сообщение, заданное "идентификатором транзакции": Ae_xxxx_xxxxx-xxx`
Следовательно, используя настройки прокси-сервера (APN) и URL-адрес, извлеченный из базы данных сообщений (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-адреса.
2 ответа
Я надеюсь, что вы получите ответ на это. Я не тот, но добавлю в мои 2 цента ценность совета...
Укороченная версия
Вы не можете получать тексты, пропускающие SIM-карту "Отправить на" и автоматически перенаправляющие на какой-либо компьютер.
Сделайте приложение Android для установки на свой телефон, убедитесь, что его задача - обнаруживать и перенаправлять копии новых входящих сообщений на ваш компьютер.
Используйте USB-ключ для SIM-карты. При подключении к компьютеру вы получаете сообщения непосредственно на компьютер без участия телефона.
Длинная версия
Вместо инструментов командной строки лучше создать реальное приложение (через Android SDK), которое проверяет полученные сообщения и пересылает вам некоторые данные (например, по электронной почте или через сокеты, или как вам нравится). Также "некоторые данные" означают либо полную копию самого сообщения, либо просто отправляет отзыв об анализе сообщения [в приложении] (например: количество обнаруженных изображений, шестнадцатеричная распечатка байтов изображения и т. Д.).
Глядя на Android SmsManager API, он даже говорит вам:
Сведения о том, как вести себя как приложение SMS по умолчанию на Android 4.4 (уровень API 19) и выше, см. В разделе Телефония.
Также посмотрите на команду downloadMultimediaMessage этого API. Он делает то, что вам нужно. На странице телефонии есть информация и ссылки для начала, но также есть независимые статьи и учебники в блогах (один из таких примеров) по этой теме.
В любом случае, на ваш пост...
(1)
"Я просто хочу загрузить сообщение в файл, не обрабатывая его, так как оно может содержать вредоносные программы"
Как вы себе представляете "без обработки телефона" работать? В телефоне хранится сим-карта, на которую ваш оператор (через сервисный центр) будет пересылать сообщения после получения из сервисного центра своего провайдера. Ты и curl
вне этого цикла. Вы узнаете текст только тогда, когда ваша SIM-карта его получит и операционная система телефона предупредит вас.
Технически телефон обработал это сообщение, вы просто еще не открыли его.
(2)
"Как я могу загрузить файл MMS из командной строки оболочки или из внешнего браузера?"
Вы должны загрузить все это mmssms.db
файл и извлеките из него конкретное сообщение. Вы относитесь к .db
как любая другая онлайновая база данных (например: использование запросов типа SQL/PHP и т. д.).
Смотрите этот учебник для полезных советов: http://cheeky4n6monkey.blogspot.co.uk/2013/02/
Альтернативой для будущих входящих сообщений является просто получить (USB) SIM-ключ, который забирает вашу карту. После подключения к компьютеру он может получать / отправлять сообщения, так как SIM-карта находится в активном / активном состоянии внутри ключа (в качестве прокси-сервера телефона).
Ключи поставляются с собственным программным обеспечением (пример изображения) для управления веб-соединениями и чтения / записи SMS/MMS-сообщений. Это похоже на то, что SIM-карта работает не на телефоне, а на рабочем столе.
Я просто использовал ваше дополнение , чтобы заставить его работать, но должен был немного изменить его.
Обратите внимание, что я запускаю это из Linux с
PPP
интерфейс определяется через подключенный USB-модем. Очевидно, что соединение, с которого это выполняется, должно быть « в сети » для оператора, который доставил push-уведомление MMS.
curl --interface ppp0 -v -x 10.202.2.60:8080 --output mms.pdu http://pxt-get.vodafone.net.au:8080/mmsc?xxxxxxxxxxx
куда:
ppp0
это интерфейс, определяемый модемным соединением, и:http://pxt-get.vodafone.net.au:8080/mmsc?xxxxxxxxxxx
был ли URL-адрес, переданный в исходном push-уведомлении MMS, и:10.202.2.60
является прокси -сервером MMS , предоставленным моим оператором связи, и:8080
это порт MMS , предоставленный моим оператором.
Это сохраняет MMS в файл
mms.pdu
.
Файлы конфигурации:
/etc/ppp/options
:
debug
4000000
modem
crtscts
lock
connect /etc/ppp/net-connect
asyncmap 0
defaultroute
:
mtu 1400
/etc/ppp/net-chat
:
#!/bin/sh
/usr/sbin/chat -v -t 60 -f /etc/ppp/net-chat
/etc/ppp/net-connect
:
ABORT 'ERROR'
ABORT 'BUSY'
ABORT 'NO CARRIER'
'' AT
OK ATE0
OK AT+IPR=4000000
OK AT+CGDCONT=1,"IP","live.vodafone.com"
OK AT&S1
OK AT&F
OK AT&W
OK AT+CNMP=14
OK AT&W
OK ATE0
OK ATD*99***1#
CONNECT
Наконец подключитесь, выполнив:
/usr/sbin/pppd /dev/ttyUSB3