2828 b'\x01 8965B4209000\x00 \x00 \x00 \x00 ' : b'\x01 !!!!!!!!!!!!!!!!' , # 2021 RAV4 Prime
2929 b'\x01 8965B4233100\x00 \x00 \x00 \x00 ' : b'\x01 !!!!!!!!!!!!!!!!' , # 2023 RAV4 Prime
3030 b'\x01 8965B4509100\x00 \x00 \x00 \x00 ' : b'\x01 !!!!!!!!!!!!!!!!' , # 2021 Sienna
31+ b'\x04 8965F3401200\x00 \x00 \x00 \x00 8A3113402000\x00 \x00 \x00 \x00 8965F3402200\x00 \x00 \x00 \x00 8A3213402000\x00 \x00 \x00 \x00 ' : b'\x04 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!' ,
3132}
3233
3334KEY_STRUCT_SIZE = 0x20
@@ -61,7 +62,7 @@ def get_secoc_key(key_struct):
6162 panda = Panda ()
6263 panda .set_safety_mode (CarParams .SafetyModel .elm327 )
6364
64- uds_client = UdsClient (panda , ADDR , ADDR + 8 , BUS , timeout = 0.1 , response_pending_timeout = 0.1 )
65+ uds_client = UdsClient (panda , ADDR , ADDR + 8 , BUS , timeout = 0.1 , response_pending_timeout = 1.0 )
6566
6667 print ("Getting application versions..." )
6768
@@ -82,8 +83,6 @@ def get_secoc_key(key_struct):
8283 uds_client .diagnostic_session_control (SESSION_TYPE .PROGRAMMING )
8384
8485 # Get bootloader version
85- uds_client .diagnostic_session_control (SESSION_TYPE .DEFAULT )
86- uds_client .diagnostic_session_control (SESSION_TYPE .EXTENDED_DIAGNOSTIC )
8786 bl_version = uds_client .read_data_by_identifier (DATA_IDENTIFIER_TYPE .APPLICATION_SOFTWARE_IDENTIFICATION )
8887 print (" - APPLICATION_SOFTWARE_IDENTIFICATION (bootloader) " , bl_version )
8988
@@ -113,7 +112,7 @@ def get_secoc_key(key_struct):
113112 print ("\n Preparing to upload payload..." )
114113
115114 # Write something to DID 203, not sure why but needed for state machine
116- uds_client .write_data_by_identifier (0x203 , b"\x00 " * 5 )
115+ uds_client .write_data_by_identifier (0x203 , b"\x01 \ x00\x00 \x00 \x00 " )
117116
118117 # Write KEY and IV to DID 201/202, prerequisite for request download
119118 print (" - Write data by identifier 0x201" , DID_201_KEY .hex ())
@@ -126,7 +125,7 @@ def get_secoc_key(key_struct):
126125 data = b"\x01 " # [1] Format
127126 data += b"\x46 " # [2] 4 size bytes, 6 address bytes
128127 data += b"\x01 " # [3] memoryIdentifier
129- data += b"\x00 " # [4]
128+ data += b"\x01 " # [4]
130129 data += struct .pack ('!I' , 0xfebf0000 ) # [5] Address
131130 data += struct .pack ('!I' , 0x1000 ) # [9] Size
132131
@@ -155,7 +154,7 @@ def get_secoc_key(key_struct):
155154 # [5] 0x0
156155 # [6] mem addr
157156 # [10] mem addr
158- data = b"\x45 \x00 "
157+ data = b"\x45 \x01 "
159158 data += struct .pack ('!I' , 0xfebf0000 )
160159 data += struct .pack ('!I' , 0x1000 )
161160
@@ -172,7 +171,7 @@ def get_secoc_key(key_struct):
172171 # [5] 0x0
173172 # [6] mem addr
174173 # [10] mem addr
175- data = b"\x45 \x00 "
174+ data = b"\x45 \x01 "
176175 data += struct .pack ('!I' , 0xe0000 )
177176 data += struct .pack ('!I' , 0x8000 )
178177
0 commit comments