import ctypes
mylib = ctypes.WinDLL("./GenerateKeyExImpl.dll")
seed = (ctypes.c_byte * 4)(0xff, 0xfe, 0xfd, 0xfc) # these bytes you should get from the ECU i.e.
# Tx 27 01
# Rx 67 01 ff fe fd fc
key = (ctypes.c_byte * 4)() # this will contain the secret key after Dll call
keylength = ctypes.c_int(4) # this will contain the secret key length after Dll call
mylib.ExGenerateKeyEx(
ctypes.pointer(seed), # Seed from the ECU
ctypes.c_int(4), # Example: Seed length = 4 bytes
ctypes.c_int(1), # Example: Security Level 1
POINTER(c_int)(), # Example: NULL = No variant string
ctypes.pointer(key), # Key to send back to the ECU
ctypes.c_int(4), # Example: Key Max length = 4 bytes
ctypes.pointer(keylength), # Example: Seed length = 4 bytes
)
# TODO: Send "key" back to the ECU i.e.
# Tx 27 02 XX XX XX XX
# Rx 67 02
有了DLL,您可以使用类似DependencyWalker的工具查看DLL的导出符号。但是如果您已经知道您的DLL在CANoe中工作,那么它将遵循指定的API by Vector Informatik在CANoe的安全访问DLL中实现:GenerateKeyx&;GenerateKeyXopt
GenerateKeyx:
GenerateKeyXOpt:
然后,只需从python调用此Dll,即使用ctypes
相关问题 更多 >
编程相关推荐