android 对短信的操作(伪造信息)

1、调用系统发送短信界面(传入手机号码+短信内容) 
2、隐藏发送短信(指定号码指定内容)(这里隐藏只是没有反写入数据库)

3、获得收件箱接收到的短信

4、Android屏蔽新短信通知提示信息:(ContentObserver)

4、删除刚接收到的短信:

      A)、带提示删除

        B)、无新短信通知=删除短信





所用到的相关数据类:

Intent、SmsManager、BroadcastReceiver、ContentObserver、Bundle

涉及动作(Action):

android.provider.Telephony.SMS_RECEIVED

涉及权限:

<!-- 短信 -->

<uses-permission android:name="android.permission.SEND_SMS" />

<uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission>

<uses-permission android:name="android.permission.WRITE_SMS"></uses-permission>

<uses-permission android:name="android.permission.READ_SMS"></uses-permission>



1、调用系统发送短信界面(传入手机号码+短信内容)

(直接使用Intent 意图执行系统的sms即可--同理这里可以使用该方式调用手机发送邮件等)源码如下:

public void SendSMS( String aContent ){

// 新建smsto意图

Intent iIntent = new Intent(Intent.ACTION_SENDTO, Uri.parse("smsto:158********"));//传入要发送的地址

// 设置短信内容

iIntent.putExtra("sms_body", aContent);//设置传递的信息内容

// 启动短信服务内容

aContent.startActivity(iIntent);//直接打开意图即可

}

2、隐藏发送短信(指定号码指定内容)(这里隐藏只是没有反写入数据库)
创建发送自己的短信需要用到短信管理类SmsManager,使用它的sendTextMessage方法即可实现程序发送:

public void SendSMSHide(String aPhoneNUM, String aContent){

// 创建一个默认的SmsManager。

SmsManager aSmsManager = SmsManager.getDefault();

// 发送信息的intent参数。

String aSent = "SMS_SENT";

// 信息反馈的intent参数。

String aDelivered = "SMS_DELIVERED";



// 创建发送新信息的PendingIntent对象

PendingIntent aSentPI = PendingIntent.getBroadcast(this, 0, new Intent(aSent), 0);

// 信息反馈的PendingIntent。

PendingIntent aDeliveredPI = PendingIntent.getBroadcast(this, 0,

new Intent(aDelivered), 0);

aSmsManager .sendTextMessage(aPhoneNUM, null, aContent, aSentPI, aDeliveredPI);//发送短信(还可以发送彩信等)

//debuge

if(BOOL_ISDEBUGE){

Toast.makeText(aContent,"短信送出成功!!",Toast.LENGTH_SHORT ).show();

}

}


3、获得收件箱接收到的短信

A)、方法一:

通过继承BroadcastReceiver服务,处理onReceive函数,判断接收到的动作为SMS_RECEIVED 

我将其封装在ReceiveSMS(aContext, aIntent);函数中只需要在onReceive()函数中调用即可!

public void ReceiveSMS(Context aContext, Intent aIntent) {

if (aIntent.getAction().equals(SSTR_SMSACTION)) { // 监听SMS_RECEIVED消息

Bundle iBundle = aIntent.getExtras(); // 获取Intent数据

if (iBundle != null) {

Object[] iObject = (Object[]) iBundle.get("pdus"); // 获取pdus对象

SmsMessage iMsg = SmsMessage.createFromPdu((byte[]) iObject[0]); // 初始化信息对象

m_strSMSAddress = iMsg.getDisplayOriginatingAddress(); // 获取信息发送人

m_strSMSText = iMsg.getDisplayMessageBody(); // 获取信息内容

 

Toast.makeText(aContext, "Address = "+m_strSMSAddress+"\nCountent = "+m_strSMSText, Toast.LENGTH_LONG).show();

}

}

}

B)、方法二:继承ContentObserver类在onChange中调用(注册监听sms即可)

      this.getContentResolver().registerContentObserver(Uri.parse("content://sms/"), true, content);  

4、Android屏蔽新短信通知提示信息:(ContentObserver)

大致思路先从收件箱获得指定未读短信,在执行通知前更改为已读,执行SQL的updata即可

        @Override  

        public void onChange(boolean selfChange) {  

            super.onChange(selfChange);  

            //读取收件箱中指定号码的短信  

cursor = managedQuery(Uri.parse("content://sms/inbox"), 

            new String[]{"_id", "address", "read"}, 

            "read = 0", null,

            "date desc");

      cursor.moveToFirst();  

        for(int i =0;i<cursor.getCount();++i)

            {

            Log.i("address","address = "+cursor.getLong(1));

            if(cursor.getString(1).indexOf("136******")>=0)

            {//这里运用indexof方式查找,并没有用比较因为系统会有国际号码

                ContentValues values = new ContentValues();  

                values.put("read", "1");        //修改短信为已读模式  

                    getContentResolver().update(Uri.parse("content://sms/inbox"), values, " _id=?", new String[]{""+cursor.getInt(0)});  

          break;//这里如果跳出就只能更改一条(刚收到的可以这样实现而且手机上方将不再有短信提示)

            }

            cursor.moveToNext();

            }

        }

5、删除刚接收到的短信:

A)、带提示删除(这样不知到有什么用。呵呵。写出来分享)

短信能删除但是当手机接收到短信时还会在手机通知里面显示给用户

继承BroadcastReceiver类,首先获得会话id在执行数据库删除即可

I、获得会话id:

(思路这样还可以简洁的-网上找的大家也可以用上面的managedQuery方法)

private long getThreadId(Context aContext) {



long threadId = 0;



String SMS_READ_COLUMN = "read";



String WHERE_CONDITION = SMS_READ_COLUMN + " = 0";



String SORT_ORDER = "date DESC";



int count = 0;

Cursor cursor = aContext.getContentResolver().query(



Uri.parse("content://sms/inbox"),new String[] { "_id", "thread_id", "address", "person", "date",

"body" },WHERE_CONDITION,null,SORT_ORDER);





if (cursor != null) {try {count = cursor.getCount();



if (count > 0) {



cursor.moveToFirst();



threadId = cursor.getLong(1);}



} finally {cursor.close();}}

Log.i("threadId", String.valueOf(threadId));



return threadId;}

II、执行删除:

这里我们可以在BroadcastReceiver的onReceive函数里面直接调用删除方法如下:

long id = getThreadId(aContext);

Uri mUri=Uri.parse("content://sms/conversations/" + id);

//无条件删除id所有会话,第二个参数可以添加条件

aContext.getContentResolver().delete(mUri, null, null);

但是这里你会发现你删除的并不是你刚才发送的信息,而是你上一次发送的信息的所有,这里是为什么呢,原因是我们刚刚监听的收件箱的时候当前会话是还没有来得及创建的,所以删除会话也是删除的以前的,所以这里我们需要时间。可以用如下方式来实现:这样就会成功了。但是这种方式短信通知依然存在

new Thread(){

public void run(){

try {sleep(600);//等待一段时间删除

} catch (InterruptedException e) {

e.printStackTrace();}

long id = getThreadId(aContext);

Uri mUri=Uri.parse("content://sms/conversations/" + id);

aContext.getContentResolver().delete(mUri, null, null);

}}.start();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
用户信息伪造是指攻击者通过各种手段篡改或伪造用户的身份信息,以获取非法利益或进行欺诈行为。在计算机网络中,用户信息伪造可能涉及以下几个方面: 1. IP地址伪造:攻击者可以使用技术手段更改或隐藏自己的IP地址,以掩盖自己的真实身份或绕过网络安全措施。这种伪造可以使攻击者更难被追踪和定位。 2. MAC地址伪造:MAC地址是网络设备的唯一标识符,攻击者可以通过修改或伪造MAC地址来欺骗网络系统,获取未经授权的访问权限或绕过网络访问控制。 3. 会话劫持:攻击者可以通过窃取用户的会话标识符或会话令牌来劫持用户的会话,并冒充合法用户的身份进行各种操作。这种伪造可以导致用户的账户被盗用或用户的隐私信息泄露。 4. 伪造网页和钓鱼网站:攻击者可以通过伪造合法网站的外观和功能来欺骗用户,引导用户提供个人敏感信息,如用户名、密码、信用卡号等。这种伪造技术常被用于进行网络钓鱼攻击。 为了防止用户信息伪造,网络系统和用户可以采取以下一些措施: - 使用加密技术:通过使用SSL/TLS等加密协议,可以保护用户信息在传输过程中的安全性,防止被篡改或窃取。 - 强化身份验证:采用多因素认证、双因素认证等身份验证机制,增加用户身份的可信度,降低伪造风险。 - 定期更新和维护:及时修补操作系统和应用程序的漏洞,防止攻击者利用漏洞进行伪造攻击。 - 用户教育和意识训练:提高用户对网络安全的认知,教育用户如何辨别钓鱼网站、避免点击恶意链接等。 这些措施可以加强网络系统的安全性,减少用户信息伪造的风险。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值