diff --git a/smssend/__pycache__/fastSMS.cpython-310.pyc b/smssend/__pycache__/fastSMS.cpython-310.pyc new file mode 100644 index 0000000..243cab9 Binary files /dev/null and b/smssend/__pycache__/fastSMS.cpython-310.pyc differ diff --git a/smssend/__pycache__/viewSMS.cpython-310.pyc b/smssend/__pycache__/viewSMS.cpython-310.pyc new file mode 100644 index 0000000..bdfea09 Binary files /dev/null and b/smssend/__pycache__/viewSMS.cpython-310.pyc differ diff --git a/smssend/decodetext.py b/smssend/decodetext.py new file mode 100644 index 0000000..88df171 --- /dev/null +++ b/smssend/decodetext.py @@ -0,0 +1,17 @@ +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)) + print(Hex_Str) + return Hex_Str + +def decode2HexStr(Unicde_Str): + newText=bytes.fromhex(Unicde_Str).decode('utf-16-be') + print(newText) + return newText + +inputText=input('请输入: ') +# newhex=Unicode2HexStr(inputText) +newhex=Unicode2HexStr(inputText) +decode2HexStr(newhex) +# decode2HexStr('30106D4191CF63D0919230115C0A656C768475286237FF0C622A81F30030003467080032003365E50032003465F6FF0C60A85F53670859579910591665368D396D4191CF5DF24F7F7528003700390030002E0039004D0042FF1B82E597008BA28D2D6D4191CF5305FF0C8BF770B951FB002000680074007400700073003A002F002F0075002E') diff --git a/smssend/fastSMS.py b/smssend/fastSMS.py new file mode 100644 index 0000000..6a77c44 --- /dev/null +++ b/smssend/fastSMS.py @@ -0,0 +1,18 @@ +from typing import Union +import serial +import time +import requests +from fastapi import FastAPI +# from viewSMS import viewSMS + +app = FastAPI() +@app.get("/") +def read_root(num: Union[str, None] = None,text: Union[str, None] = None): + return {"Hello": "World","num":num,"text":text} + + +@app.get("/items/{item_id}") +def read_item(item_id: int, q: Union[str, None] = None): + return {"item_id": item_id, "q": q} + + diff --git a/smssend/flashSend.py b/smssend/flashSend.py new file mode 100644 index 0000000..10d9551 --- /dev/null +++ b/smssend/flashSend.py @@ -0,0 +1,97 @@ +import serial +import time + + +#手机号 +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---') + # if line.startswith("+CMGS"): + # print ("已成功发送") + # return True + # else: + # print ("发送遇到问题,请检查控制模块") + # modem.close() + # return False + + + + + +try: + modem = serial.Serial(port='COM8', baudrate=9600) + print ("短信助手硬件USB接口已连接成功...正在启动") + phonenumber=input('请输入phonenumber: ') + warntext=input('warntext: ') + sendSMS(phonenumber,warntext) + # tishiyu="请设置每条短信发送的时间间隔,单位为秒" + # timejiange = float(raw_input("Set time:")) + modem.close() +except Exception as e: + print(e) + print ("请检查短信模块是否插上usb 或 确定端口号是否正确") + + + diff --git a/smssend/sms.ico b/smssend/sms.ico new file mode 100644 index 0000000..04f95f0 Binary files /dev/null and b/smssend/sms.ico differ diff --git a/smssend/test.py b/smssend/test.py new file mode 100644 index 0000000..bcdfe41 --- /dev/null +++ b/smssend/test.py @@ -0,0 +1,3 @@ +import serial +modem = serial.Serial(port='COM8', baudrate=9600) +modem.write(("AT"+"\r\n").encode()) diff --git a/smssend/tgbot.py b/smssend/tgbot.py new file mode 100644 index 0000000..d0c85be --- /dev/null +++ b/smssend/tgbot.py @@ -0,0 +1,12 @@ +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}' + r = requests.get(url) + # https://api.telegram.org/bot558659722:AAENA3v8gKq7R7_nsr8V58Iu-_Z6BWx2SCw/sendMessage?chat_id=-861577609&text=1234 + +sendTg('123python') \ No newline at end of file diff --git a/smssend/viewSMS.py b/smssend/viewSMS.py new file mode 100644 index 0000000..7166239 --- /dev/null +++ b/smssend/viewSMS.py @@ -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:AA32A3v8gK23q7R7_nsr8V58Iu-_Z6B232SCw" + chat_id="-861532r23527609" + 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='COM8', baudrate=9600) + print("短信助手硬件USB接口已连接成功...正在启动") + viewSMS() + # time.sleep(1) + except Exception as e: + print(e) + print("请检查短信模块是否插上usb 或 确定端口号是否正确") + time.sleep(60) #每30s检测1次短信