当前位置:文档之家› 手机测试获取短信验证码

手机测试获取短信验证码

</intent-filter>
</receiver>
添加权限(还是上面这个xml文件,搞不清就问下你们安卓开发):
下面这个代码我这里是添加在application标签上面的
<uses-permissionandroid:name="android.permission.RECEIVE_SMS"/>
手机要连上电脑,打开USB调试。adbdevices查看手机有没有连接上,准备工作做好之后,点击android studio页面上的绿色三角按钮运行即可。运行成功的话手机上会有个你自己建的工程名蓝色标题的页面。
python代码,主要通过adblog来获取apk包所截取的短信信息,然后进行分析后既可使用。
首先安装个android studio,然后新建个工程,建好工程之后到工程-->app-->src-->main-->java-->com.example.xxx.myapplication下新建个文件,文件名是SmsInterceptReceiver,输入如下代码,如果你拷贝之后发现有些类的名称是红色的,说明你没有导包,mac是按住alt+enter运行python文件,通过接口给被链接手机发验证码或者是用其他手机给被连接手机发送验证码进行测试。就可以在终端看见输出验证码,然后根据自己需求拿出来即可。
E/SmsRec(12345): free message
E/SmsRec(12345): free message
String body =sms.getMessageBody().toString();
message+= body;
}
Log.e(TAG, "free message : " + message);
} catch (Exception e) {
// TODO: handle exception
Log.e(TAG,e.getMessage());
packagecom.example.getsms;
imporiver;
importandroid.content.ContentResolver;
importandroid.content.Context;
importandroid.content.Intent;
String message = "";
Log.e(TAG, "free message " );
Bundle extras =intent.getExtras();
if( extras != null ) {
try{
Object[]smsExtra= (Object[])extras.get( SMS_EXTRA_NAME );
importandroid.os.Bundle;
importandroid.telephony.SmsMessage;
importandroid.util.Log;
/**
* Created by xxx on 17/3/28.
*/
publicclassSmsInterceptReceiverextendsBroadcastReceiver{
#coding=utf-8
importos
defGetCodeFromSms():
os.system("adblogcat-c")
cmd= 'adblogcat-d |grepE/SmsRec'
while(1):
smscode=os.popen(cmd).read()
printsmscode
if(smscode!=""):
privatefinal String TAG = "SmsRec";
privatestatic final String SMS_EXTRA_NAME ="pdus";
@Override
publicvoidonReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
ContentResolvercontentResolver=context.getContentResolver();
Log.e(TAG, "free message " );
for(inti = 0; i <smsExtra.length; ++i ) {
SmsMessagesms=SmsMessage.((byte[])smsExtra[i]);
E/SmsRec(12345): free message :验证码:654321
验证码是:654321
至于为什么会多出来几个free message,是因为写java那段代码的开发用Log.e调试用的。E/是错误消息的意思,但是可以显示出来就好。D/是debug消息,I/是一般消息W/警告消息V/是各种乱七八槽的消息
}
}
}
}
AndroidManifest.xml(这个文件在java同级目录res下)里注册一下接收器:
下面的代码添加到activity标签同级的下方即可
<receiverandroid:name=".SmsInterceptReceiver">
<intent-filter>
<actionandroid:name="android.provider.Telephony.SMS_RECEIVED" />
smscode=smscode.split("验证码:")[1].split(",")[0]
break;
print "验证码是:"+smscode
if__name__ == '__main__':
GetCodeFromSms()
因为小编用的是mac,所以过滤用的grep,如果你是windows,改成findstr。
相关主题