78 lines
2.5 KiB
Python
78 lines
2.5 KiB
Python
|
|
import lupa
|
|
from lupa import LuaRuntime
|
|
import execjs
|
|
|
|
|
|
class save:
|
|
def __init__(self) -> None:
|
|
pass
|
|
def save(self,data:bytearray):
|
|
d=data[1:]
|
|
for i in range(20):
|
|
self.save_item(d[i*28:i*28+28])
|
|
def save_item(self,d:bytearray):
|
|
s='=\"'+d[0:8].hex()+'\"'+','
|
|
s+='=\"'+self.hex2bit(d[8:10])+'\"'+','
|
|
s+=self.hex2int(d[10:])
|
|
print(d[8:10].hex(' '))
|
|
print(s)
|
|
with open("./file/save.csv","+a") as f:
|
|
f.write(s+'\n')
|
|
def hex2int(self,d:bytearray):
|
|
s=""
|
|
for i in range(len(d)//2):
|
|
s+=str(d[i*2]|(d[i*2+1]<<8))+','
|
|
return s
|
|
def hex2bit(self,d:bytearray):
|
|
s=""
|
|
for i in range(len(d)*8):
|
|
if(d[i//8]&(1<<(i%8))!=0):
|
|
s+='1'
|
|
else:
|
|
s+='0'
|
|
if((i>0) and ((i+1)%8==0) and ((i+1)<len(d)*8)):
|
|
s+='_'
|
|
return s
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def lua_test():
|
|
# 初始化lua运行环境
|
|
lua = LuaRuntime(unpack_returned_tuples=True)
|
|
# 初始化全局变量 json
|
|
save_json=lua.eval("function(a) json=a end")
|
|
with open("file/json.lua",encoding="utf-8") as f:
|
|
save_json(lua.execute(f.read()))
|
|
# 初始化全局变量 prints
|
|
save_prints=lua.eval("function(a) prints=a end")
|
|
with open("file/prints.lua",encoding="utf-8") as f:
|
|
save_prints(lua.execute(f.read()))
|
|
# 初始化全局变量 cfg_name
|
|
lua.execute("cfg_name=\"file/checker_ye_cfg.json\"\n")
|
|
# 初始化全局变量 check_data
|
|
lua.execute("check_data={0xB5,0x96,0xEC,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0x00,0x00,0x21,0x00,0x12,0x01,0x00,0x00,0x00,0x00,0xB5,0x00,0xB1,0x00,0x6B,0x00,0x00,0x00,0xA5,0x02,0xA4,0x02,0x00,0x00,0xA4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}\n")
|
|
# 执行判定脚本
|
|
with open("file/judge.lua",encoding="utf-8") as f:
|
|
a,b=lua.execute(f.read())
|
|
print(a,b)
|
|
|
|
|
|
def js_test():
|
|
with open("file/judge.js",encoding="utf-8") as f:
|
|
context1 = execjs.compile(f.read())
|
|
json=open("file/checker_ye_cfg.json",encoding="utf-8").read()
|
|
check_data=bytearray([0xB5,0x96,0xEC,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0x00,0x00,0x21,0x00,0x12,0x01,0x00,0x00,0x00,0x00,0xB5,0x00,0xB1,0x00,0x6B,0x00,0x00,0x00,0xA5,0x02,0xA4,0x02,0x00,0x00,0xA4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00])
|
|
a=context1.call("main",1,check_data)
|
|
print(a)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
sa=save()
|
|
print(sa.hex2bit(bytes([0xab,0xcd])))
|
|
# lua_test()
|
|
js_test()
|