95 lines
3.3 KiB
Python
95 lines
3.3 KiB
Python
# -*- coding:ISO-8859-1 -*-
|
|
import binascii
|
|
import hashlib
|
|
import json
|
|
import struct
|
|
import base64
|
|
import time
|
|
|
|
import send_sms
|
|
"""
|
|
???????
|
|
"""
|
|
def analysisUnPack(data,type=1):
|
|
keys = [
|
|
'x', 'c', 'b', 'B', '?', 'h', 'H', 'i', 'I', 'l', 'L', 'q', 'Q', 'f', 'd', 's', 'p', 'P',
|
|
]
|
|
two_key = [
|
|
'', '<', '=', '>', '!', '@'
|
|
]
|
|
arr = {}
|
|
for v in keys:
|
|
for v1 in two_key:
|
|
try:
|
|
if type == 1:
|
|
arr["{}{}".format(v1,v)] = struct.unpack("{}{}".format(v,v1), data)
|
|
else:
|
|
arr["{}{}".format(v, v1)] = struct.pack("{}{}".format(v, v1), data)
|
|
except BaseException as e:
|
|
arr["{}{}".format(v, v1)] = "{}: {}".format('error', str(e))
|
|
for v in arr:
|
|
print(v, arr[v])
|
|
print("----")
|
|
return arr
|
|
|
|
|
|
""" ???????
|
|
"""
|
|
def return_x_o_r(data):
|
|
t = None
|
|
for i in range(len(data)):
|
|
if i:
|
|
t ^= data[i]
|
|
else:
|
|
t = data[i] ^ 0
|
|
return t
|
|
|
|
"""
|
|
????
|
|
"""
|
|
def printf(self, *data):
|
|
print(data, time.time())
|
|
|
|
if __name__ == '__main__':
|
|
# time_base = int(time.time())
|
|
# str_res = struct.pack('i', time_base)
|
|
str_res = struct.pack('i', 1)
|
|
# x_o_y = return_x_o_r(str_res)
|
|
# str_res += binascii.a2b_hex(hex(x_o_y).encode()[2:])
|
|
print(str_res)
|
|
exit()
|
|
# self.mqtt_obj.publish("{}/Ack".format(ball_cart_id), str_res)
|
|
|
|
# data = b'\x44\x68\x68\x63\x34\x36\x30\x31\x31\x35\x32\x31\x30\x39\x31\x37\x34\x37\x32\x00\x00\x00\x00\x00\x38\x39\x38\x36\x30\x33\x32\x31\x32\x34\x35\x39\x32\x36\x33\x36\x37\x33\x39\x36\x1F\x01\x01\x00\x64\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x69'
|
|
#
|
|
# data = 'KLloY9IVAQDIJQEAw++mW3aEOEC9N4YA4IddQAAAAACd'
|
|
# # data = b"\xbc\x07\x00\x00460115210917473\x00\x00\x00\x00\x0089860321245926367404\x1c\x00\x00\x00d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfb"
|
|
# data = b'(\xb9hc\xd2\x15\x01\x00\xc8%\x01\x00\xc3\xef\xa6[v\x848@\xbd7\x86\x00\xe0\x87]@\x00\x00\x00\x00\x9d'
|
|
# # data = base64.b64decode(data)
|
|
# data = b'\x00hnc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00e'
|
|
# # data = b"\xbc\x07\x00\x00460115210917473\x00\x00\x00\x00\x0089860321245926367404\x1c\x00\x00\x00d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfb"
|
|
# arr = {}
|
|
# data = "0v91YzQ2MDA0ODQyMzQwODQ5NgAAAAAAODk4NjA0NjQxMTIwNzA1ODg0OTYaAAAASwAAAAAAAAAAAAAAAAAAAABU"
|
|
# data = base64.b64decode(data)
|
|
# analysisUnPack(data[0:4])
|
|
# print(data)
|
|
handle_type = 0
|
|
pattern = 0
|
|
ball_cart_id = 20221000898
|
|
time_base = 1667786802
|
|
str_res = struct.pack('i', time_base)
|
|
str_res += struct.pack('B', handle_type)
|
|
str_res += struct.pack('B', pattern)
|
|
str_res += (hashlib.md5("{}+{}".format(str(ball_cart_id).zfill(16), time_base).encode(
|
|
"utf8")).hexdigest()).upper().encode()
|
|
x_o_y = return_x_o_r(str_res)
|
|
str_res += binascii.a2b_hex(hex(x_o_y).encode()[2:])
|
|
print(str_res)
|
|
|
|
# print(data)
|
|
# print(data[0:8])
|
|
# print(analysisUnPack(data[0:4]))
|
|
# exit();
|
|
|
|
# print(arr)
|