实现自动输入密码
This commit is contained in:
120
touch.py
Normal file
120
touch.py
Normal file
@@ -0,0 +1,120 @@
|
||||
import os
|
||||
import sys
|
||||
import time
|
||||
import json
|
||||
import serial
|
||||
|
||||
from ocr import get_text
|
||||
from log import log_init, myprint
|
||||
|
||||
|
||||
class ser(object):
|
||||
gpio_table={
|
||||
"enter":"pa0",
|
||||
"1":"pa4",
|
||||
"2":"pa5",
|
||||
"3":"pa6",
|
||||
"4":"pb0",
|
||||
"5":"pb1",
|
||||
"6":"pb10",
|
||||
"7":"pa12",
|
||||
"8":"pa11",
|
||||
"9":"pb7",
|
||||
"0":"pb6"
|
||||
}
|
||||
def __init__(self):
|
||||
self.ser=None
|
||||
def open(self,com:str):
|
||||
try:
|
||||
self.ser = serial.Serial(port=com, baudrate=115200, timeout=0.3)
|
||||
except Exception:
|
||||
print(f"serial com:{com} open failed.")
|
||||
sys.exit(-1)
|
||||
def close(self):
|
||||
if not (self.ser is None):
|
||||
self.ser.close()
|
||||
self.ser=None
|
||||
def write(self,t:str):
|
||||
# print("send:",t.encode('utf-8').hex(' '))
|
||||
if not (self.ser is None):
|
||||
self.ser.write(t.encode(encoding="utf-8"))
|
||||
def read(self):
|
||||
data=bytearray()
|
||||
if not (self.ser is None):
|
||||
data=self.ser.read(4096)
|
||||
try:
|
||||
t=data.decode(encoding='utf-8')
|
||||
except Exception as e:
|
||||
print(e)
|
||||
print(data.hex(' '))
|
||||
t=""
|
||||
return t
|
||||
def touch(self,key:str):
|
||||
if not (key in self.gpio_table):
|
||||
return
|
||||
gpio=self.gpio_table[key]
|
||||
print(f"touch {key}:{gpio}")
|
||||
self.write(f"output on {gpio}\r\n")
|
||||
ret=self.read()
|
||||
print(ret)
|
||||
time.sleep(0.05)
|
||||
self.write(f"output off {gpio}\r\n")
|
||||
ret=self.read()
|
||||
print(ret)
|
||||
time.sleep(0.05)
|
||||
def enter(self):
|
||||
s.touch("enter")
|
||||
def passsword(self,p:str):
|
||||
for i in p:
|
||||
self.touch(i)
|
||||
|
||||
|
||||
def find_text(t:str):
|
||||
text=get_text(1560,198,363,331)
|
||||
print(text)
|
||||
for item in text:
|
||||
if(item[1]==t):
|
||||
return True
|
||||
return False
|
||||
|
||||
|
||||
def data_save(data:dict):
|
||||
data_file="index.json"
|
||||
with open(data_file,mode='w+') as f:
|
||||
f.write(json.dumps(data,sort_keys=True, indent=2, separators=(',', ': ')))
|
||||
|
||||
|
||||
def data_get()->dict:
|
||||
data_file="index.json"
|
||||
if os.path.exists(data_file):
|
||||
with open(data_file,mode='r') as f:
|
||||
return json.loads(f.read())
|
||||
return {"index":0}
|
||||
|
||||
if __name__ == "__main__":
|
||||
s=ser()
|
||||
s.open("com6")
|
||||
password=data_get().get("index",0)
|
||||
log_init("log.txt")
|
||||
myprint(f"start_index:{password}")
|
||||
while(True):
|
||||
try:
|
||||
if(find_text("手机存储")):
|
||||
myprint("enter")
|
||||
s.enter()
|
||||
if(find_text("请输入解锁密码")):
|
||||
myprint(f"try:{password:06d}")
|
||||
s.passsword(f"{password:06d}")
|
||||
except Exception as e:
|
||||
myprint(e)
|
||||
data_save({"index":password})
|
||||
break
|
||||
except KeyboardInterrupt as k:
|
||||
myprint(k)
|
||||
data_save({"index":password})
|
||||
break
|
||||
if password>999999:
|
||||
myprint("try end")
|
||||
break
|
||||
myprint(f"end_index:{password}")
|
||||
s.close()
|
Reference in New Issue
Block a user