Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- byte[] RXdata = new byte[64];
- byte[] init_giag = { 0x01, 0x3E, 0x00, 0x55, 0x55, 0x55, 0x55, 0x55 };
- byte[] get_seed = { 0x02, 0x27, 0x01, 0x55, 0x55, 0x55, 0x55, 0x55 };
- byte[] send_key = { 0x06, 0x27, 0x02, 0x00, 0x00, 0x00, 0x00, 0x55 };
- byte[] sleep_can = {0x02, 0xA0, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00 };
- byte[] reprog_session = {0x02, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00 };
- byte[] cmd_0 = { 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
- byte[] cmd_1 = { 0x06, 0x20, 0x07, 0x01, 0x00, 0x02, 0x00, 0x00 };
- byte[] cmd_2 = { 0x02, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
- byte[] cmd_pass = { 0x04, 0x2B, 0x6A, 0x53, 0xB1, 0x00, 0x00, 0x00 };
- can_init(500, 125, 0x7E8, 0x000, 0x000, 0x000);
- RXdata = send_can_UDS(0x7E0, 0x7E8, init_giag, 1000, 1, 0x00);
- //log_add_array(RXdata,8);
- if (RXdata[1] != 0x7E)
- {
- //log_add("Diagnostic session error!");
- //return;
- }
- // seed
- RXdata = send_can_UDS(0x7E0, 0x7E8, get_seed, 2000, 3, 0x00);
- if (RXdata[0] == 0x06)
- {
- send_key[3] = RXdata[3];
- send_key[4] = (byte)(RXdata[4] ^ 0x60);
- send_key[5] = (byte)(RXdata[5] ^ 0x60);
- send_key[6] = RXdata[6];
- RXdata = send_can_UDS(0x7E0, 0x7E8, send_key, 2000, 3, 0x00);
- if (RXdata[0] == 0x02)
- {
- log_add("Security access 0x01 ... OK.");
- }
- else
- {
- log_add("Security access 0x01 ... ERROR!");
- return;
- }
- }
- else
- {
- log_add("Error get seed!!!");
- return;
- }
- Thread.Sleep(20);
- tx_can_message(0x720, 0x000, 0x08, sleep_can);
- Thread.Sleep(20);
- tx_can_message(0x720, 0x000, 0x08, sleep_can);
- Thread.Sleep(20);
- tx_can_message(0x720, 0x000, 0x08, sleep_can);
- Thread.Sleep(20);
- RXdata = send_can_UDS(0x7E0, 0x7E8, reprog_session, 1000, 3, 0x00);
- if (RXdata[1] == 0x50)
- {
- log_add("Reprog session start.");
- }
- else
- {
- log_add("Reprog session error!!!");
- return;
- }
- can_init(500, 125, 0x002, 0x000, 0x000, 0x000);
- Thread.Sleep(20);
- tx_can_message(0x001, 0x000, 0x08, cmd_0);
- Thread.Sleep(20);
- tx_can_message(0x001, 0x000, 0x08, cmd_0);
- Thread.Sleep(20);
- tx_can_message(0x001, 0x000, 0x08, cmd_1);
- Thread.Sleep(20);
- tx_can_message(0x001, 0x000, 0x08, cmd_2);
- Thread.Sleep(20);
- tx_can_message(0x001, 0x000, 0x08, cmd_pass);
- if (rx_can_message(RXdata, 200))
- {
- if (RXdata[0] == 0x01 && RXdata[1] == 0x3C)
- {
- log_add("Pass ok");
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement