SMSK--从短信中分析你的手机号注册过哪些公司账号

先看demo:

功能:

  1. 分析短信,得到注册信息
  2. 一键导出注册信息为txt文本文件
  3. 点击任意item跳转到相关的百度搜索
  4. 觉得内嵌的浏览器难用,支持一键切换到系统安装的浏览器

1. 背景

不关心的朋友可直接跳到第二节。

这个APP是干什么的呢?

其实就是从短信中分析出你注册过哪些网站或APP。

为什么要做?

先提一下我在本科使用的电话卡是学校的运营商卡,这张卡绑定了学校的宽带账号,每月都会进行扣费。但是今年我毕业了,忘记取消该套餐,这意味着我不使用学校的宽带,但是仍要计费。所以想着去取消这个套餐,但是被工作人员告知该套餐必须回到学校才能取消,学校暑假又不上班(坑比)。这就让我很为难了,几番考虑,决定还是换一张电话卡,可是我的电话卡实在绑定了太多网站和APP了,于是我百度了下看有什么方法能找到这些绑定信息不,发现有个网站REG007似乎可以查,花了点钱注册了这个网站,才发现NMD就显示了3个,所以这网站就有点坑了。最后准备放弃治疗的时候,突然看到手机短信应用里面有很多“验证码”短信(对于我个人来说,我的联系人,短信都是经常在云备份的,所以几乎保留了我使用这个手机号以来的所有短信)。于是我将短信导出到了电脑上,用python分析了一遍。然后想着可能有同学和我一样需要知道自己的手机号注册过哪些网站或APP,并且也保留了短信信息,所以就做了这个APP。当然了,这个APP也非常简单。

2. 正文

这一节主要说一下怎么实现它,以及还有哪些问题。熟悉Android开发的朋友可能不到半小时就搞定吧,我做了小半天,主要遇到一个问题 。下面分开来说说。

2.1 制作流程

制作流程如下:

step1: 申请短信权限(6.0以后的系统);

step2: 读取短信信息;

step3: 过滤出包含“验证码”关键字的短信;

step4: 使用正则表达式,抓出注册公司名。

APP的界面也设计得很简单,只有一个ListView(用不着RecyclerView吧):

2.2 问题

首先说说app已经做过的部分的问题:

  1. 过滤包含”验证码“部分的短信,简单采用了String.contains("验证码")这类方法,是否会漏掉一些注册信息?
  2. 正则表达式部分,根据我的观察,几乎所有公司发来的短信都会将其公司名包含在一个中括号之间。如[豆瓣网]或【腾讯云】。中括号有英文和中文的两种。于是我只抓取了这两种。正则表达式如下:

    String pattern = "\[|【(.*?)\|]】";

在python中,我使用的正则表达式如下:

pattern = r"[[【]](.*?)[]】]

那是否有些公司不是这样呢?还有正则表达式其实有个漏洞那就是[腾讯云】。这种也会捕获,但是正规公司发过来的短信,不会有这种短信吧。

好,再来说说我花了很多时间的未做的部分:

首先这个APP我在是准备识别双卡的。因为我的手机就是双卡的,我想知道卡一和卡二分别注册了哪些网站,这一定程度上受了“华为手机助手”的诱导。我在“背景”中说过,我首先是用python分析的,从手机中将信息导入到电脑上,华为手机助手给我生成了一个csv文件。csv的header如下:

SIMCardID分了双卡的。所以我觉得既然可以识别双卡,那就做成双卡识别咯。谷歌了很久,查Android Api也查看了很久。首先是读取短信的cursor所用projection字段中没有相关字段信息,其次大多的博客也是探讨“如何用副卡来发送短信”的话题。如何识别“短信是属于那张卡的”之类的问题却少之又少。花了2,3个小时在查资料上,却无果。我又去看了那个csv文件,发现它的识别居然是有错的!之后我又想到,既然我用过云备份短信,那从云中恢复短信时它怎么知道每个短信是属于哪张卡的?万一我换过卡?又或者我将卡槽中的两张卡交换了位置呢?所以很显然这有问题。于是我又去查了自己手机中好几年前的短信(因为我这几年都换过手机了,所以肯定有从云备份中恢复的短信),发现只要是旧信息,都是默认归属于主卡的。

2.3 不完美的解决方案

文字略显多了,总之这个功能无法做到精确。但是也不是说不可以做,cursor的projection字段有一个serveice_center,这个是用来查短信中心的,我看了下,如果短信属于主卡,是有短信中心的信息的,而对于卡2,短信中心号码默认为0。当然了,因为要考虑我在2.2节中说过的问题,所以这只是一种“不完美的解决方案”。

开源地址:

The contents of this review need to be reviewed before reading.

APK下载地址:

The contents of this review need to be reviewed before reading.

Last modification:August 10th, 2019 at 12:02 pm
如果觉得我的文章对你有用,请随意赞赏

Leave a Comment