Advertisement
Guest User

Untitled

a guest
Aug 20th, 2019
202
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.39 KB | None | 0 0
  1. byte[] RXdata = new byte[64];
  2.  
  3.  
  4.  
  5. byte[] init_giag = { 0x01, 0x3E, 0x00, 0x55, 0x55, 0x55, 0x55, 0x55 };
  6.  
  7. byte[] get_seed = { 0x02, 0x27, 0x01, 0x55, 0x55, 0x55, 0x55, 0x55 };
  8. byte[] send_key = { 0x06, 0x27, 0x02, 0x00, 0x00, 0x00, 0x00, 0x55 };
  9.  
  10. byte[] sleep_can = {0x02, 0xA0, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00 };
  11.  
  12. byte[] reprog_session = {0x02, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00 };
  13.  
  14. byte[] cmd_0 = { 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
  15. byte[] cmd_1 = { 0x06, 0x20, 0x07, 0x01, 0x00, 0x02, 0x00, 0x00 };
  16. byte[] cmd_2 = { 0x02, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
  17. byte[] cmd_pass = { 0x04, 0x2B, 0x6A, 0x53, 0xB1, 0x00, 0x00, 0x00 };
  18.  
  19.  
  20.  
  21. can_init(500, 125, 0x7E8, 0x000, 0x000, 0x000);
  22. RXdata = send_can_UDS(0x7E0, 0x7E8, init_giag, 1000, 1, 0x00);
  23.  
  24. //log_add_array(RXdata,8);
  25.  
  26. if (RXdata[1] != 0x7E)
  27. {
  28. //log_add("Diagnostic session error!");
  29. //return;
  30. }
  31.  
  32. // seed
  33. RXdata = send_can_UDS(0x7E0, 0x7E8, get_seed, 2000, 3, 0x00);
  34.  
  35. if (RXdata[0] == 0x06)
  36. {
  37. send_key[3] = RXdata[3];
  38. send_key[4] = (byte)(RXdata[4] ^ 0x60);
  39. send_key[5] = (byte)(RXdata[5] ^ 0x60);
  40. send_key[6] = RXdata[6];
  41.  
  42. RXdata = send_can_UDS(0x7E0, 0x7E8, send_key, 2000, 3, 0x00);
  43.  
  44. if (RXdata[0] == 0x02)
  45. {
  46. log_add("Security access 0x01 ... OK.");
  47. }
  48. else
  49. {
  50. log_add("Security access 0x01 ... ERROR!");
  51. return;
  52. }
  53.  
  54.  
  55. }
  56. else
  57. {
  58. log_add("Error get seed!!!");
  59. return;
  60. }
  61.  
  62. Thread.Sleep(20);
  63. tx_can_message(0x720, 0x000, 0x08, sleep_can);
  64. Thread.Sleep(20);
  65. tx_can_message(0x720, 0x000, 0x08, sleep_can);
  66. Thread.Sleep(20);
  67. tx_can_message(0x720, 0x000, 0x08, sleep_can);
  68. Thread.Sleep(20);
  69.  
  70.  
  71. RXdata = send_can_UDS(0x7E0, 0x7E8, reprog_session, 1000, 3, 0x00);
  72.  
  73. if (RXdata[1] == 0x50)
  74. {
  75. log_add("Reprog session start.");
  76. }
  77. else
  78. {
  79. log_add("Reprog session error!!!");
  80. return;
  81. }
  82.  
  83. can_init(500, 125, 0x002, 0x000, 0x000, 0x000);
  84.  
  85. Thread.Sleep(20);
  86. tx_can_message(0x001, 0x000, 0x08, cmd_0);
  87. Thread.Sleep(20);
  88. tx_can_message(0x001, 0x000, 0x08, cmd_0);
  89. Thread.Sleep(20);
  90. tx_can_message(0x001, 0x000, 0x08, cmd_1);
  91. Thread.Sleep(20);
  92. tx_can_message(0x001, 0x000, 0x08, cmd_2);
  93. Thread.Sleep(20);
  94.  
  95.  
  96. tx_can_message(0x001, 0x000, 0x08, cmd_pass);
  97.  
  98. if (rx_can_message(RXdata, 200))
  99. {
  100. if (RXdata[0] == 0x01 && RXdata[1] == 0x3C)
  101. {
  102. log_add("Pass ok");
  103.  
  104. }
  105.  
  106. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement