需要一个有权限的 APK 在手机实时存储短信到手机内存 /sdcard/smslog.txt 里(外部SD卡也可以知道能通过adb命令访问到):

/***** 

......

try {
long timestamp = System.currentTimeMillis();
String time = formatter.format(new Date());
String fileName = "smsLog.txt";
if (Environment.getExternalStorageState().equals(Environment.MOUNTED)) {
String path = Environment.getExternalStorageDirectory()+"/";
***
if (!dir.exists()) {
dir.mkdirs();
}

*

fos.write((time + " " + s).getBytes());
fos.close();
}
return fileName;
} catch (Exception e) {
Log.e("sms", "an error occured while writing file...", e);
}
return null;
}

*******/

  android脚本好了,签名+打包,装入手机就好了,安装实验一下:

  自动生成了一个smslog.txt 再打开看一下内容,能正常记录,下面用写一个python脚本截取最后一段的最后四个数字就可以了

通过cmd

adb shell cat /sdcard/smsLog.txt

成功显示文件里的内容

2017-05-16-16-39-27 您好,你的短信验证码为7959
2017-05-16-16-40-09 您好,你的短信验证码为6474
2017-05-16-16-45-22 您好,你的短信验证码为4664
2017-05-16-17-19-47 您好,你的短信验证码为3320
2017-05-16-17-21-20 您好,你的短信验证码为3146
2017-05-16-17-27-40 您好,你的短信验证码为2709
2017-05-16-17-27-43 您好,你的短信验证码为9421
2017-05-16-17-27-46 您好,你的短信验证码为5035
2017-05-16-17-27-48 您好,你的短信验证码为2212
2017-05-16-17-27-49 您好,你的短信验证码为5745
2017-05-16-17-28-28 您好,你的短信验证码为5409
2017-05-16-17-28-32 您好,你的短信验证码为1176
2017-05-16-17-28-33 您好,你的短信验证码为8708
2017-05-16-17-28-35 您好,你的短信验证码为3997
2017-05-16-17-28-37 您好,你的短信验证码为3567
2017-05-16-18-45-57 您好,你的短信验证码为3060

 

在python脚本中再构个函数就解决了

def getSma():    adb = "adb shell cat /sdcard/smsLog.txt"    smsLog = os.popen(adb).readlines()    smscode = smsLog[-1][-6:-2]    return smscode

OK! 脚本登陆RUN,步骤到点击发送验证码之后成功获取并自动填入,短信验证码成功解决,提升了脚本的执行效率和自动化覆盖率!  下周再开始解决图形验证码自动识别问题, 之前用UFT试过识别率太低,这款商业软件越做越不值钱了. 咱不再去求人,自己解决,活着就是为了折腾.

python 自动获取手机短信验证码的更多相关文章

  1. <自动化测试>之<自动获取手机短信验证码>

    第一次写博,最近解决了做自动化测试短信验证码自动获取填入的方法减少了脚本的人工干预,并非拦截短信,所以不存在安全警报提醒,拿出来分享给大家,有感兴趣的大家可以加Q1856100 目前在职测试开发,,写 ...

  2. atitit.破解 拦截 绕过 网站 手机 短信 验证码 之自动获取手机短信方式 attilax 总结

    atitit.破解  拦截 绕过 网站 手机 短信 验证码 之自动获取手机短信方式 attilax 总结 1. 自动获取手机短信方式的原理 1 2. 调用api 1 3. ----核心代码 2 4.  ...

  3. Atitit. 破解  拦截 绕过 网站 手机 短信 验证码  方式 v2 attilax 总结

    Atitit. 破解  拦截 绕过 网站 手机 短信 验证码  方式 v2 attilax 总结 1. 验证码的前世今生11.1. 第一代验证码 图片验证码11.2. 第二代验证码  用户操作 ,比如 ...

  4. 四:java调接口实现发送手机短信验证码功能

    1.点击获取验证码之前的样式: 2.输入正确的手机号后点击获取验证码之后的样式: 3.如果手机号已经被注册的样式: 4.如果一个手机号一天发送超过3次就提示不能发送: 二:前台的注册页面的代码:reg ...

  5. Java调用WebService接口实现发送手机短信验证码功能,java 手机验证码,WebService接口调用

    近来由于项目需要,需要用到手机短信验证码的功能,其中最主要的是用到了第三方提供的短信平台接口WebService客户端接口,下面我把我在项目中用到的记录一下,以便给大家提供个思路,由于本人的文采有限, ...

  6. java后台通过Servlet给用户发送手机短信验证码,第一次写勿喷,欢迎转载

    短信验证码跟自己在Servlet画的验证码不一样,我们不用管短信验证码是怎么产生的,我们只需要关注如何调用短信验证码,在短信验证码里面添加 自己需要的随机数或者其他的内容. 现在直接上流程 第一步找一 ...

  7. django之集成阿里云通信(发送手机短信验证码)

    python3 + django2.0 集成 "阿里云通信" 服务: (SDK文档地址:https://help.aliyun.com/document_detail/55491. ...

  8. PHP 手机短信验证码 laravel 实现流程

    https://blog.csdn.net/uknow0904/article/details/80336941 本人在自己博客(Laravel)的注册部分 使用手机号注册,需要发送短信验证码. 使用 ...

  9. 关于手机短信验证码存session 获取不到的问题

    问题描述:最近做一个项目,手机端注册,服务端产生一个验证码,通过短信发送到手机,并存放到session中,但手机端发送第二次请求传回验证码,要对两个验证码进行比较判断时,session存放的验证码丢失 ...

随机推荐

  1. Android逆向基础----Android Dalvik虚拟机

    Android Dalvik虚拟机的特点: l  体积小,占用内存空间小. l  专有DEX可执行文件. l  常量池采用32位索引值,寻址类方法名,字段名,常量更快. l  基于寄存器架构,并拥有一 ...

  2. FTP服务器的安装与配置

    查看是否安装ftp: rpm -qa |grep vsftpd 1.安装vsftp 1.1.安装vsftp,测试安装的vsftpd的版本是:vsftpd.x86_64 0:3.0.2-11.el7_2 ...

  3. Hadoop Streaming开发要点

    一.shell脚本中的相关配置 HADOOP_CMD="/usr/local/src/hadoop-1.2.1/bin/hadoop" STREAM_JAR_PATH=" ...

  4. Django之Bootstrap使用

    首先将bootstrap文件粘贴到static文件夹中,引入分为两部分,一是css文件引入,二是js文件引入. 1.css引入: <!DOCTYPE html> <html lang ...

  5. RVIZ 保存配置 and 使用配置

    每次无参数启动RVIZ, 都会使用配置 -/.rviz/default.rviz 如果每次是正常退出的话,上一次的配置会被保存到文件-/.rviz/default.rviz 需要另外保存成配置文件的话 ...

  6. 【转】PEP8 规范

    [转]PEP8 规范 Python PEP8 编码规范中文版   原文链接:http://legacy.python.org/dev/peps/pep-0008/ item detail PEP 8 ...

  7. hdfs命令get或者put提示找不到目录或文件

    今天用hdfs命令出现个诡异情况: hadoop fs -put a.txt /user/root/ put: `a.txt': No such file or directory 用get命令存在相 ...

  8. input[type=file]上传文件(格式判断、文件大小、上传成功后操作)

    var isUploadImg = false; //在input file内容改变的时候触发事件******************上传图片 $('#filed').change(function( ...

  9. requests库入门05-参数类型

    一个接口基本都需要传入参数,有的参数必填,有的不必填. params参数 使用params参数来传递接口所需要的参数.一般用在get请求中,url参数是通过?拼接,?前面是接口的地址,之后是请求的参数 ...

  10. oracle11g自动内存管理

    Oracle一直不停的在为Orace数据库的自动化管理努力着,11G中的自动内存管理是Oracle数据库中又一新的里程碑,通过新参数MEMORY_TARGET 来代替PGA和SGA的配置,ORACLE ...