Python安全之生成純數字N位手機驗證碼

手機驗證碼暴破:

工作中經常遇到需要爆破手機驗證碼的情況,一般的手機驗證碼都是4位或者6位純數字的,當然,暴破驗證碼是需要條件的:
1、程序有沒有錯誤鎖定
2、程序有沒有驗證碼防暴破,當然驗證碼要不可重放的纔有效防止暴破
3、手機驗證碼的失效時間,一般爲了用戶體驗都會有3到5分鐘,這種情況下如果出現6位驗證碼已經很難暴破了,假如還帶字母的6位,那還是放棄吧!當然你是土豪有高性能的機子,同時程序也扛得住那另說。
手機驗證碼爆破圖
進入正題,如何生成這個手機驗證碼呢?用Python其實一行代碼就可以搞定了,如下4位純數字驗證碼:

for i in range(0,10000):print(str(i).zfill(4))

然後命令行執行這一行的腳本輸出重定向到文件裏就大功告成了。不過這樣不夠裝逼,今天我們把代碼稍微完善一下,方便沒有代碼基礎的人也能靈活使用。

代碼:

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
# @Time     :2020/1/6 16:31
# @Author   :Donvin.li
# @File     :seq.py

import sys
import getopt
def main():
    help=False
    try:
        opts,x=getopt.getopt(sys.argv[1:],'n:o:h')
        for y,z in opts:
            if y=='-h':
                help=True
            elif y=='-n':
                num=int(z)
            elif y=='-o':
                file=z
            else:
                pass
    except:
        print('參數輸入有誤,請參考:python3 seq.py -h')
        sys.exit()
    if help:
        usage()
    else:
        seq(num,file)

def seq(num,file):
    x=10**num
    for i in range(0,x):
        y=str(i).zfill(num)
        f=open(file,'a+')
        f.write(y+'\n')
    f.close()

def usage():
    print('help info: python3 seq.py -n [number] -o [file]')

if __name__=='__main__':
    main()

使用方法:

python3 seq.py -n [驗證碼位數] -o [輸出文件]
例如4位驗證:
python3 seq.py -n 4 -o test.txt
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章