有没有办法使用curl或wget从命令行下载彩信?
我正在做一些基于MMS的攻击的Android恶意软件研究。我正在寻找一种手动方式来检索或下载收到的彩信。我希望能够找到一些curl
或wget
行,但没有发现任何有用的东西。有没有办法使用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
我如何可以从shell命令行(或外部浏览器)的MMS文件?
PS。很显然,这款手机已经扎根,同时拥有busybox
和sqlite3
,并且可能还安装了curl
或wget
。 AOS是5.0+。
附录:2017年11月9日
从here:
MMS(多媒体消息服务)消息使用SMS和WAP技术的 组合发送。当发送MMS消息时,移动设备通过SMS接收MMS通知消息。当该移动设备接收到该MMS通知消息时,该移动设备自动发起WAP网关连接,以便下载该MMS消息的内容。
要发送彩信,必须先创建彩信文件。 MMS消息文件的 格式记录在由开放移动联盟 (http://www.openmobilealliance.org)和/或WAP论坛 (http://www.wapforum.org)公布的MMS封装 协议规范中。 MMS消息文件格式由MMS消息二进制头部和多部分MIME消息组成,其中多部分消息以二进制多部分格式编码为由WAP无线会话协议(WSP)规范定义的 。此 二进制MMS消息文件使用MIME类型 application/vnd.wap.mms-message和MMS消息类型 m-retrieve-conf存储在Web服务器上。二进制MMS报头的一个子集作为MMS消息通过SMS发送到移动设备的 通知消息(MMS消息类型m-notification-ind)以及指向完整消息位置的URL指针。
此外,智能手机不再将MMS或短信内容下载到SIM卡。这就是“功能”手机用来做这件事的方式。
附录:2017年11月13日
综观API-23(M)为SQLite3的表中所示Telephony.java来源,我们发现, CONTENT_LOCATION = "ct_l";
,所以我们可以搜索其其他用途here。简单地总结一下我们的发现:
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端口)(如图所示)上述 -
/mmsc/3_2
是WAP URL向消息处理器 -
?Ae_xxxx_xxxxx-xxx
告诉消息处理器以检索由“交易ID”中给出的信息:Ae_xxxx_xxxxx-xxx`
因此,使用代理(APN)的设置,并使用从消息DB(mmssms.db)中提取的URL,应该能够检索和下载的内容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移动中工作,因为它是指IP C类,才可见。
我希望你能得到一个答案。我不是一个,而是会在我的2值得意见美分扔...
短版
你不能有文字跳过“发送到” SIM卡和自动转移到某台计算机。
做一个Android应用程序安装在手机上,确保它的工作是检测和转移的新的收件箱中的邮件的副本到您的计算机。
使用的SIM卡一个USB加密狗。当插入电脑时,您不需要手机就可以直接接收信息到您的电脑。
龙版
比相反的命令行工具,你最好做一个实际的应用程序(使用Android SDK)来检查收到的消息和转发一些资料给你(例如:通过电子邮件或套接字,或者你喜欢)。此外,“某些数据”表示消息本身的完整副本,或者仅发送[应用内] 消息分析(例如:检测到的图像数量,图像字节的十六进制打印输出等等)的反馈。
纵观Android的SmsManager API它甚至会告诉你:
有关如何表现为在Android 4.4 (API级别19)和更高的默认短信应用的信息,请参阅Telephony。
也查看该API的downloadMultimediaMessage命令。它正在做你所需要的。 Telephony页面有信息和链接开始,但有关此主题的独立博客文章和教程(其中一个如example)也在那里。
不管怎么说,到你的帖子...
(1)
“我只是想将消息下载到一个文件,而手机处理它,因为它可能含有恶意软件”
你如何想像‘电话不处理它’工作?手机持有SIM卡,您的运营商(通过服务中心)将从发件人自己的提供商的服务中心收到邮件后转发邮件。你和curl
不在这个循环中。当您的SIM卡收到SIM卡并且手机操作系统提醒您时,您只会知道一段文字。
从技术上讲,手机已经处理了这条消息,你还没有打开它。
(2)
“我怎么可以从shell命令行或外部浏览器彩信文件?”
您必须下载整个mmssms.db
文件并从中提取特定消息。您将.db
视为任何其他在线数据库(例如:使用SQL/PHP类型查询等)。
请参见本教程有用的建议:http://cheeky4n6monkey.blogspot.co.uk/2013/02/
为日后入学的消息另一种方法是只得到一个(USB)SIM加密狗是把你的卡。一旦插入计算机,它就可以接收/发送消息,因为SIM卡在加密狗内部(作为电话的代理)处于活动/活动状态。
加密狗带有自己的软件(例如image of such),用于管理网络连接和读取/写入SMS/MMS消息。这就像SIM卡不在手机中工作,而是在桌面上工作。
是的,当然我们可以编写一个应用程序来拦截邮件,但这不是我问到的。但就像应用程序一样,我们也应该能够检索消息。 (1)AFAIK,没有新手机将任何消息下载到SIM,消息的二进制细节决定手机(TE)操作系统将如何处理该消息。例如。在SIM上保存,在SE中进行处理(APN设置等),直接显示(闪光短信)或回复发件人等。 (2)直到您或您的手机决定打开它,这又取决于你的设置。 – not2qubit
代理通常用于检索MSISDN(号码)并将其附加到MMSC以进行检查。无论您在HTTP头中提供什么,该号码都不会被传递,因此不会下载消息。 – Marvin
@Marvin当然,但应该能够根据发现/提取的内容设置代理(如上所示)。 – not2qubit
自己的代理不能这样做。运营商的代理检查sgsn/ggsn以进行数据连接,以便检索imsi/msisdn,然后将其传递给mmsc,以便用用户号码验证MMS下载链接。 – Marvin