Browse Source

initial commit

master
prototux 1 year ago
commit
c871a79b98
  1. 15
      KEYS.md
  2. 27
      README.md
  3. 28
      algo_uds_auth.c
  4. 13025
      nac_config.json

15
KEYS.md

@ -0,0 +1,15 @@
# ECUs keys
| ECU | KEY |
|-------------|------------------------------|
| BSI AEE2004 | 2925 or B2B2 |
| BSI AEE2010 | 5B4B or E4D8 |
| NAC | 4F8F or D91C |
| NCC | 1070 or 99FD |
| AAS | 7673 or 898D |
| AMPLI | 1E4B or A7D8 |
| SMEG | 244D or ADDA |
| MATT | 635F or ECEC |
| CIROCCO | 716D or 8487 or FAFA |
| BV6 | 6D6C or 8086 or F6F9 |
| BV8 | 7648 or 8962 or FFD5 |

27
README.md

@ -0,0 +1,27 @@
# PSA UDS auth algorithm & NAC diagnostic informations
# Ou: une lecon de karma et de securite par l'obscurite
C'est l'histoire d'une personne, on va l'appeller V. V est une personne un peu parano, et ceci a tendance a attirer le mauvais karma.
Cette personne pouvait devenir un hero, et creer une petite merveille, un outil opensource pour configurer les i-cockpit de chez PSA.
Malheureusement pour elle, elle pris le chemin de la force obscure, et decida non seulement d'etre proprio, mais en plus d'obfusquer.
Il faut dire que cette personne avait une croisade, il ne fallait surtout pas que ces secrets soient utilises de maniere commerciale.
Il etait pret a tout pour defendre le secret devine, meme la creation d'un web service afin que nul ne puisse comprendre le precieux.
Il le defendit avec peu de bravoure et beaucoup d'agressivite, ceci est sa plus grosse fierte, personne ne doit reproduire l'exploit!
Quitte a violer les regles de bienseance de base, a publier des binaires prioprio et obfusques sur une plateforme de code opensource.
Ceci est l'histoire de V, et ce repo contient les precieux tant defendus, ainsi qu'une lecon de karma.
## Infos
* Ce repo contient le json dechiffre contenant les IDs et le format des donnees de configuration du NAC
* Il contient aussi une implementation de l'algo challenge-response des services UDS de PSA
* C'est beaucoup de QnD, l'algo a ete reverse engineer en 5 soirs
* Zero obfuscation, Zero AES, Zero web service proprio, Zero bullshit
* Ce repo va probablement se faire takedown rapidement selon la reaction de V
## Mot de la fin
> Tu ne trouveras pas l'algorithme
Challenge accepted.

28
algo_uds_auth.c

@ -0,0 +1,28 @@
// UDS SA challenge-response implementation
// This should match the authentication between diagbox and any ECU
// Thanks to vlud for giving me the will to do it
#include <inttypes.h>
// Transformation function with PSA not-so-secret sauce
int16_t transform(uint8_t data_msb, uint8_t data_lsb, uint8_t sec[])
{
int16_t data = (data_msb << 8) | data_lsb;
int32_t result = ((data % sec[0]) * sec[2]) - ((data / sec[0]) * sec[1]);
if (result < 0)
result += (sec[0] * sec[2]) + sec[1];
return result;
}
// Challenge reponse calculation for a given pin and challenge
// Challenge (seed) is 4 bytes and pin (key) is 2 bytes
uint32_t compute_response(uint8_t pin[], uint8_t chg[])
{
// Still hardcoded secrets
int8_t sec_1[3] = {0xB2, 0x3F, 0xAA};
int8_t sec_2[3] = {0xB1, 0x02, 0xAB};
// Compute each 16b part of the response, with the twist, and return it
int16_t res_msb = transform(pin[0], pin[1], sec_1) | transform(chg[0], chg[3], sec_2);
int16_t res_lsb = transform(chg[1], chg[2], sec_1) | transform(res_msb>>8, res_msb&0xFF, sec_2);
return (msb << 16) | lsb;
}

13025
nac_config.json

File diff suppressed because it is too large
Loading…
Cancel
Save

Med zimskimi počitnicami so pričakovani občasni izpadi podomrežja O, ker bodo izvajana testiranja varnosti komunikacijsko-informacijske opreme.