feat: 短信验证码
This commit is contained in:
BIN
__pycache__/app.cpython-311.pyc
Normal file
BIN
__pycache__/app.cpython-311.pyc
Normal file
Binary file not shown.
BIN
__pycache__/flashSMS.cpython-311.pyc
Normal file
BIN
__pycache__/flashSMS.cpython-311.pyc
Normal file
Binary file not shown.
BIN
__pycache__/tgMesaage.cpython-311.pyc
Normal file
BIN
__pycache__/tgMesaage.cpython-311.pyc
Normal file
Binary file not shown.
35
app.py
Normal file
35
app.py
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
from typing import Union
|
||||||
|
from fastapi import FastAPI,Header
|
||||||
|
from urllib.parse import unquote
|
||||||
|
from flashSMS import sendFlash
|
||||||
|
from tgMesaage import sendTg
|
||||||
|
|
||||||
|
app = FastAPI()
|
||||||
|
|
||||||
|
|
||||||
|
@app.get("/")
|
||||||
|
#def read_root():
|
||||||
|
# return {"Hello": "World"}
|
||||||
|
def read_items(appid: Union[str, None] = Header(default=None),bid: Union[str, None] = Header(default=None),requestid: Union[str, None] = Header(default=None),uid: Union[str, None] = Header(default=None)):
|
||||||
|
print("console :,","appid", appid,"bid", bid,"requestid", requestid,"uid", uid)
|
||||||
|
return {"appid": appid,"bid": bid,"requestid": requestid,"uid": uid}
|
||||||
|
|
||||||
|
# 微信对话-用户输入
|
||||||
|
@app.get("/input")
|
||||||
|
async def getphonenum(inputArguments: Union[str, None] = None,appid: Union[str, None] = Header(default=None),bid: Union[str, None] = Header(default=None),requestid: Union[str, None] = Header(default=None),uid: Union[str, None] = Header(default=None)):
|
||||||
|
print('inputArguments',inputArguments)
|
||||||
|
# 要处理url编码问题decode
|
||||||
|
try:
|
||||||
|
inputArguments = unquote(inputArguments, 'utf-8')
|
||||||
|
except:
|
||||||
|
inputArguments=''
|
||||||
|
phonenumber='13243889782'
|
||||||
|
phonenumber='13243889782'
|
||||||
|
warntext='[异度世界],加群验证码:3399'
|
||||||
|
sendTg(f'用户手机号{phonenumber},开始发送验证码')
|
||||||
|
# 发送闪信
|
||||||
|
sendFlash(phonenumber,warntext)
|
||||||
|
# uid:唯一标识用户的openid
|
||||||
|
print("appid", appid,"bid",bid,"requestid", requestid,"uid", uid)
|
||||||
|
# 存储uid和手机号
|
||||||
|
return {"appid": appid,"bid": bid,"requestid": requestid,"uid": uid,'inputArguments':inputArguments}
|
||||||
95
flashSMS.py
Normal file
95
flashSMS.py
Normal file
@@ -0,0 +1,95 @@
|
|||||||
|
import serial
|
||||||
|
import time
|
||||||
|
from tgMesaage import sendTg
|
||||||
|
|
||||||
|
#手机号
|
||||||
|
phonenumber=''
|
||||||
|
# 短信内容
|
||||||
|
warntext=''
|
||||||
|
|
||||||
|
# 在test(US2)模式下需要用16进制转换电话和中文短信
|
||||||
|
# 转换为hex16进制
|
||||||
|
def Unicode2HexStr(Unicde_Str):
|
||||||
|
Hex_Str = ""
|
||||||
|
for i in range(0, len(Unicde_Str)):
|
||||||
|
Hex_Str += (hex(ord(Unicde_Str[i])).replace('0x','').zfill(4))
|
||||||
|
return Hex_Str
|
||||||
|
|
||||||
|
def decode2HexStr(Unicde_Str):
|
||||||
|
newText=bytes.fromhex(Unicde_Str).decode('utf-16-be')
|
||||||
|
print(newText)
|
||||||
|
return newText
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def sendSMS(phonenumber,warntext):
|
||||||
|
modem.write(("AT"+"\r\n").encode())
|
||||||
|
print(modem.readline())
|
||||||
|
time.sleep(0.5)
|
||||||
|
|
||||||
|
modem.write(("AT+CMGF=1"+"\r\n").encode())
|
||||||
|
print(modem.readline())
|
||||||
|
time.sleep(0.5)
|
||||||
|
|
||||||
|
modem.write(("AT+CSCS="+'"UCS2"'+"\r\n").encode())
|
||||||
|
print(modem.readline())
|
||||||
|
time.sleep(0.5)
|
||||||
|
|
||||||
|
|
||||||
|
modem.write(("AT+CSCA?"+"\r\n").encode())
|
||||||
|
print(modem.readline())
|
||||||
|
time.sleep(0.5)
|
||||||
|
|
||||||
|
#尾数如果是24,则短消息不会保存,也不会提示号码,可用来短信轰炸机
|
||||||
|
modem.write(("AT+CSMP=17,167,0,24"+"\r\n").encode())
|
||||||
|
# modem.write(("AT+CSMP=17,167,0,25"+"\r\n").encode())
|
||||||
|
print(modem.readline())
|
||||||
|
time.sleep(0.5)
|
||||||
|
|
||||||
|
#modem.write('AT+CMGS="' + convert2Unicode( str(phonenumber) ) + '"\r\n')
|
||||||
|
newNum=Unicode2HexStr(phonenumber)
|
||||||
|
print(newNum)
|
||||||
|
modem.write(("AT+CMGS="+'"%s"'%(newNum)+"\r\n").encode())
|
||||||
|
print(modem.readline())
|
||||||
|
time.sleep(1)
|
||||||
|
|
||||||
|
|
||||||
|
#modem.write(Unicode2HexStr(warntext.decode('utf-8')))
|
||||||
|
modem.write((Unicode2HexStr(warntext)).encode())
|
||||||
|
print(modem.readline())
|
||||||
|
#print(Unicode2HexStr(u"我爱你"))
|
||||||
|
time.sleep(1)
|
||||||
|
|
||||||
|
# 构造 HEX 1A
|
||||||
|
modem.write((chr(26)).encode())
|
||||||
|
print(modem.readline())
|
||||||
|
time.sleep(1)
|
||||||
|
|
||||||
|
line = modem.readline()
|
||||||
|
print(modem.readline())
|
||||||
|
print('end---')
|
||||||
|
# 触发tg消息提醒
|
||||||
|
sendTg('4g模块短信发送成功,succsess')
|
||||||
|
# if line.startswith("+CMGS"):
|
||||||
|
# print ("已成功发送")
|
||||||
|
# return True
|
||||||
|
# else:
|
||||||
|
# print ("发送遇到问题,请检查控制模块")
|
||||||
|
# modem.close()
|
||||||
|
# return False
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def sendFlash(phonenumber,warntext):
|
||||||
|
try:
|
||||||
|
modem = serial.Serial(port='/dev/ttyUSB2', baudrate=9600)
|
||||||
|
print ("短信助手硬件USB接口已连接成功...正在启动")
|
||||||
|
# phonenumber=input('请输入phonenumber: ')
|
||||||
|
# warntext=input('warntext: ')
|
||||||
|
sendSMS(phonenumber,warntext)
|
||||||
|
modem.close()
|
||||||
|
except Exception as e:
|
||||||
|
print(e)
|
||||||
|
print ("请检查短信模块是否插上usb 或 确定端口号是否正确")
|
||||||
|
# 触发tg消息提醒
|
||||||
|
sendTg('4g模块短信发送失败,请检查错误')
|
||||||
16
tgMesaage.py
Normal file
16
tgMesaage.py
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
import time
|
||||||
|
import requests
|
||||||
|
|
||||||
|
|
||||||
|
# bot发消息到tg群组
|
||||||
|
def sendTg(message):
|
||||||
|
baseUrl="https://api.telegram.org/bot"
|
||||||
|
toekn="558659722:AAENA3v8gKq7R7_nsr8V58Iu-_Z6BWx2SCw"
|
||||||
|
chat_id="-861577609"
|
||||||
|
text=message
|
||||||
|
url=f'{baseUrl}{toekn}/sendMessage?chat_id={chat_id}&text={text}'
|
||||||
|
try:
|
||||||
|
r = requests.get(url)
|
||||||
|
except:
|
||||||
|
print('请检查网络代理')
|
||||||
|
# https://api.telegram.org/bot558659722:AAENA3v8gKq7R7_nsr8V58Iu-_Z6BWx2SCw/sendMessage?chat_id=-861577609&text=1234
|
||||||
100
viewSMS.py
Normal file
100
viewSMS.py
Normal file
@@ -0,0 +1,100 @@
|
|||||||
|
import serial
|
||||||
|
import time
|
||||||
|
import requests
|
||||||
|
|
||||||
|
def Unicode2HexStr(Unicde_Str):
|
||||||
|
Hex_Str = ""
|
||||||
|
for i in range(0, len(Unicde_Str)):
|
||||||
|
Hex_Str += (hex(ord(Unicde_Str[i])).replace('0x', '').zfill(4))
|
||||||
|
return Hex_Str
|
||||||
|
|
||||||
|
|
||||||
|
def decode2HexStr(Unicde_Str):
|
||||||
|
strText = (bytes.fromhex(Unicde_Str)).decode('utf-16-be')
|
||||||
|
# print(strText)
|
||||||
|
return strText
|
||||||
|
|
||||||
|
# bot发消息到tg群组
|
||||||
|
def sendTg(message):
|
||||||
|
baseUrl="https://api.telegram.org/bot"
|
||||||
|
toekn="558659722:AAENA3v8gKq7R7_nsr8V58Iu-_Z6BWx2SCw"
|
||||||
|
chat_id="-861577609"
|
||||||
|
text=message
|
||||||
|
url=f'{baseUrl}{toekn}/sendMessage?chat_id={chat_id}&text={text}'
|
||||||
|
try:
|
||||||
|
r = requests.get(url)
|
||||||
|
except:
|
||||||
|
print('请检查网络代理')
|
||||||
|
# https://api.telegram.org/bot558659722:AAENA3v8gKq7R7_nsr8V58Iu-_Z6BWx2SCw/sendMessage?chat_id=-861577609&text=1234
|
||||||
|
|
||||||
|
def deleteALLsms():
|
||||||
|
#删除所有短信
|
||||||
|
modem.write(("AT+CMGD=1,4"+"\r\n").encode())
|
||||||
|
print(modem.readline())
|
||||||
|
time.sleep(1)
|
||||||
|
print(modem.readline())
|
||||||
|
print('删除所有短信完成')
|
||||||
|
def deleteIndexsms(index):
|
||||||
|
#删除指定短信
|
||||||
|
modem.write((f"AT+CMGD={index}\r\n").encode())
|
||||||
|
print(modem.readline())
|
||||||
|
time.sleep(1)
|
||||||
|
print(modem.readline())
|
||||||
|
print(f'删除{index}完成')
|
||||||
|
|
||||||
|
def viewSMS():
|
||||||
|
modem.write(("AT"+"\r\n").encode())
|
||||||
|
print(modem.readline())
|
||||||
|
time.sleep(1)
|
||||||
|
print(modem.readline())
|
||||||
|
modem.write(("AT+CMGF=1"+"\r\n").encode())
|
||||||
|
print(modem.readline())
|
||||||
|
time.sleep(1)
|
||||||
|
print(modem.readline())
|
||||||
|
modem.write(("AT+CMGL="+'"ALL"'+"\r\n").encode())
|
||||||
|
print(modem.readline()) # 命令显示
|
||||||
|
|
||||||
|
nowIndex=-1
|
||||||
|
while True:
|
||||||
|
itext = (modem.readline()[:-2]).decode('utf-8') # [:-2]==>先删除\r\n
|
||||||
|
if itext.startswith("+CMGL"): # spilt解析手机号码
|
||||||
|
textArr=itext.split(",")
|
||||||
|
# 手机号
|
||||||
|
phoneNUm=textArr[2]
|
||||||
|
print(phoneNUm)
|
||||||
|
# 短信索引
|
||||||
|
smsindex=(textArr[0]).split(":")[1]
|
||||||
|
nowIndex=int(smsindex)
|
||||||
|
print(smsindex)
|
||||||
|
|
||||||
|
print(itext)
|
||||||
|
sendTg(itext)
|
||||||
|
elif itext == "OK":
|
||||||
|
print('查询短信列表完成')
|
||||||
|
if nowIndex>0 or nowIndex==0:
|
||||||
|
deleteIndexsms(str(nowIndex))
|
||||||
|
# time.sleep(5)
|
||||||
|
break
|
||||||
|
else :
|
||||||
|
if len(itext)>0:
|
||||||
|
try:
|
||||||
|
print(decode2HexStr(((itext))))
|
||||||
|
sendTg(decode2HexStr(((itext))))
|
||||||
|
except:
|
||||||
|
# print(itext)
|
||||||
|
sendTg(itext)
|
||||||
|
modem.close() #关闭终端
|
||||||
|
# time.sleep(1)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
while True:
|
||||||
|
try:
|
||||||
|
modem = serial.Serial(port='/dev/ttyUSB2', baudrate=9600)
|
||||||
|
print("短信助手硬件USB接口已连接成功...正在启动")
|
||||||
|
viewSMS()
|
||||||
|
# time.sleep(1)
|
||||||
|
except Exception as e:
|
||||||
|
print(e)
|
||||||
|
print("请检查短信模块是否插上usb 或 确定端口号是否正确")
|
||||||
|
time.sleep(60) #每30s检测1次短信
|
||||||
Reference in New Issue
Block a user