Login Register

Vida CEM swapping

A mid-size luxury crossover SUV, the Volvo XC90 made its debut in 2002 at the Detroit Motor Show. Recognized for its safety, practicality, and comfort, the XC90 is a popular vehicle around the world. The XC90 proved to be very popular, and very good for Volvo's sales numbers, since its introduction in model year 2003 (North America). P2 platform.
Post Reply
User avatar
RickHaleParker
Posts: 7129
Joined: 25 May 2015
Year and Model: See Signature below.
Location: Kansas
Has thanked: 8 times
Been thanked: 958 times

Re: Vida CEM swapping

Post by RickHaleParker »

aaivar wrote: 11 Oct 2021, 00:53 Key in flash zone have 7ff00-7ff30
That is 49 bytes. ( 49 bytes keys ) / 7 bytes = 7 keys. Only 7 keys used to decrypt the entire eeprom?
⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙
1998 C70, B5234T3, 16T, AW50-42, Bosch Motronic 4.4, Special Edition package.
2003 S40, B4204T3, 14T twin scroll AW55-50/51SN, Siemens EMS 2000.
2004 S60R, B8444S TF80 AWD. Yamaha V8 conversion
2005 XC90 T6 Executive, B6294T, 4T65 AWD, Bosch Motronic 7.0.

User avatar
RickHaleParker
Posts: 7129
Joined: 25 May 2015
Year and Model: See Signature below.
Location: Kansas
Has thanked: 8 times
Been thanked: 958 times

Post by RickHaleParker »

vtl wrote: 13 Oct 2021, 06:47 They xor it with current eeprom byte offset divided by 7:
😕 Not all offsets are multiples of multiples of 7. Xor only works with real numbers. Imaginary number would xor.

Do you mean if you do the division in hex it will return the real part only? That would work.
⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙
1998 C70, B5234T3, 16T, AW50-42, Bosch Motronic 4.4, Special Edition package.
2003 S40, B4204T3, 14T twin scroll AW55-50/51SN, Siemens EMS 2000.
2004 S60R, B8444S TF80 AWD. Yamaha V8 conversion
2005 XC90 T6 Executive, B6294T, 4T65 AWD, Bosch Motronic 7.0.

vtl  
Posts: 4727
Joined: 16 August 2012
Year and Model: 2005 XC70
Location: Boston
Has thanked: 114 times
Been thanked: 606 times

Post by vtl »

RickHaleParker wrote: 13 Oct 2021, 14:19
vtl wrote: 13 Oct 2021, 06:47 They xor it with current eeprom byte offset divided by 7:
😕 Not all offsets are multiples of multiples of 7. Xor only works with real numbers. Imaginary number would xor.

Do you mean if you do the division in hex it will return the real part only? That would work.
This is integer division. [0..6] / 7 = 0, [7..13] / 7 = 1, [14..20] / 7 = 2, etc.

vtl  
Posts: 4727
Joined: 16 August 2012
Year and Model: 2005 XC70
Location: Boston
Has thanked: 114 times
Been thanked: 606 times

Post by vtl »

RickHaleParker wrote: 13 Oct 2021, 13:49 That is 49 bytes. ( 49 bytes keys ) / 7 bytes = 7 keys. Only 7 keys used to decrypt the entire eeprom?
Crypto key for EEPROM encryption/decryption is 0x3d bytes long, 61 in decimal.

I wrote C code that hopefully goes the same thing what the CEM machine code I found does.

User avatar
RickHaleParker
Posts: 7129
Joined: 25 May 2015
Year and Model: See Signature below.
Location: Kansas
Has thanked: 8 times
Been thanked: 958 times

Post by RickHaleParker »

vtl wrote: 13 Oct 2021, 14:33 This is integer division. [0..6] / 7 = 0, [7..13] / 7 = 1, [14..20] / 7 = 2, etc.
There is a term for that. It is Truncation. I recall Truncation as an operator way back in the 8 bit days.
⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙
1998 C70, B5234T3, 16T, AW50-42, Bosch Motronic 4.4, Special Edition package.
2003 S40, B4204T3, 14T twin scroll AW55-50/51SN, Siemens EMS 2000.
2004 S60R, B8444S TF80 AWD. Yamaha V8 conversion
2005 XC90 T6 Executive, B6294T, 4T65 AWD, Bosch Motronic 7.0.

User avatar
RickHaleParker
Posts: 7129
Joined: 25 May 2015
Year and Model: See Signature below.
Location: Kansas
Has thanked: 8 times
Been thanked: 958 times

Post by RickHaleParker »

vtl wrote: 13 Oct 2021, 14:35
RickHaleParker wrote: 13 Oct 2021, 13:49 That is 49 bytes. ( 49 bytes keys ) / 7 bytes = 7 keys. Only 7 keys used to decrypt the entire eeprom?
Crypto key for EEPROM encryption/decryption is 0x3d bytes long, 61 in decimal.

I wrote C code that hopefully goes the same thing what the CEM machine code I found does.
You think the the key(s) are flash offsets 7FF00 - 7FF3C not 7FF00-7FF30 as stated by aaivar ?


Notes:
61 is not a multiple of 7.
49, 56, 63 are multiples of 7.

There are 2048 bytes in the eeprom. One would need to recycle the keys to decrypt the whole eeprom. 2048 / 7 = 292. Will need 292 keys to decrypt the entire eeprom. FF₁₆ = 255₁₀ , if you reduce a eeprom byte by more then 255₁₀ the results will be negative.

If the number of bytes in the key block is not a multiple of 7, it could loop back to the beginning creating a different set of keys then the first pass. With 61 bytes in the keys block, the keys would shift by two bytes each cycle.
Last edited by RickHaleParker on 14 Oct 2021, 17:11, edited 4 times in total.
⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙
1998 C70, B5234T3, 16T, AW50-42, Bosch Motronic 4.4, Special Edition package.
2003 S40, B4204T3, 14T twin scroll AW55-50/51SN, Siemens EMS 2000.
2004 S60R, B8444S TF80 AWD. Yamaha V8 conversion
2005 XC90 T6 Executive, B6294T, 4T65 AWD, Bosch Motronic 7.0.

User avatar
RickHaleParker
Posts: 7129
Joined: 25 May 2015
Year and Model: See Signature below.
Location: Kansas
Has thanked: 8 times
Been thanked: 958 times

Post by RickHaleParker »

vtl wrote: 13 Oct 2021, 06:47 They xor it with current eeprom byte offset divided by 7:

Something like this (haven't verified):

Code: Select all

void eeprom_decrypt(unsigned char *eeprom, int len, unsigned char *crypto, unsigned char *decrypted)
{
	for (int i = 0; i < len; i++)
		decrypted[i] = eeprom[i] ^ crypto[i % 0x3d] ^ (i / 7);
}

I tried it with manual calculations. It is not working, at least it does not produce the same results as the files.
Looks like each eeprom byte needs to be reduced before xor with flash key.

Use i/7 to reduce the eeprom byte as you read it from the file ?
⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙
1998 C70, B5234T3, 16T, AW50-42, Bosch Motronic 4.4, Special Edition package.
2003 S40, B4204T3, 14T twin scroll AW55-50/51SN, Siemens EMS 2000.
2004 S60R, B8444S TF80 AWD. Yamaha V8 conversion
2005 XC90 T6 Executive, B6294T, 4T65 AWD, Bosch Motronic 7.0.

User avatar
RickHaleParker
Posts: 7129
Joined: 25 May 2015
Year and Model: See Signature below.
Location: Kansas
Has thanked: 8 times
Been thanked: 958 times

Post by RickHaleParker »

aaivar wrote: 13 Oct 2021, 09:11 I can send another example if necessary
What software did you use to produce the decrypt file?
Can we get a copy of it?
⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙
1998 C70, B5234T3, 16T, AW50-42, Bosch Motronic 4.4, Special Edition package.
2003 S40, B4204T3, 14T twin scroll AW55-50/51SN, Siemens EMS 2000.
2004 S60R, B8444S TF80 AWD. Yamaha V8 conversion
2005 XC90 T6 Executive, B6294T, 4T65 AWD, Bosch Motronic 7.0.

aaivar
Posts: 14
Joined: 31 March 2021
Year and Model: v70 2015
Location: Latvia
Has thanked: 1 time

Post by aaivar »

RickHaleParker wrote: 14 Oct 2021, 21:47
aaivar wrote: 13 Oct 2021, 09:11 I can send another example if necessary
What software did you use to produce the decrypt file?
Can we get a copy of it?
my program will not work without activating a license

User avatar
RickHaleParker
Posts: 7129
Joined: 25 May 2015
Year and Model: See Signature below.
Location: Kansas
Has thanked: 8 times
Been thanked: 958 times

Post by RickHaleParker »

aaivar wrote: 14 Oct 2021, 23:41 my program will not work without activating a license
Ok but what is the name of the program?
Is it something you paid for or something you wrote?

Can you do this.
  • 1. Take a eeprom file and and fill it with all FF.
    2. Take a Flash file and fill it with all FF.
    3. Run the program using the two fake files.
    4. Upload the Decrypt file here.
If my theory is right, the Decrypt file will show the reduction cycles for the whole process. The math is saying it will. Be kind of like analyzing wave interference.

Run the software with the two files in the Zip file below. Then upload the resulting Decrypt file.
Attachments
RC detect.zip
(125.55 KiB) Downloaded 141 times
⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙
1998 C70, B5234T3, 16T, AW50-42, Bosch Motronic 4.4, Special Edition package.
2003 S40, B4204T3, 14T twin scroll AW55-50/51SN, Siemens EMS 2000.
2004 S60R, B8444S TF80 AWD. Yamaha V8 conversion
2005 XC90 T6 Executive, B6294T, 4T65 AWD, Bosch Motronic 7.0.

Post Reply
  • Similar Topics
    Replies
    Views
    Last post