S'identifier

Voir la version complète : [Theorie] Calcul du ISK vers PIN pour Megane 2


MrRorry
09/05/2017, 03h14
Algorithme ISK vers PIN (pour Megane 2 / Scenic 2)

A savoir, l'algo utilisé consiste en general pour ce constructeur a decaler, repositionner, inverser quelques bits, xor avec clef predefinie...
nous allons voir en particulier celui de la Megane 2 / Scenic 2

Les 6 octets de l'isk pour notre exemple,
ISK = FF 82 5E A0 8C 2E

on represente ces 6 octets sous leur forme binaire:

----FF-------82--------5E--------A0-------8C-------2E----
11111111 10000010 01011110 10100000 10001100 00101110


qui nous donne cette chaine binaire de 48 bits: 111111111000001001011110101000001000110000101110

position du bit 0 -> 111111111000001001011110101000001000110000101110 <- position du bit 47 | (0<->47) = 48 bits

nous allons creer virtuellement une nouvelle chaine binaire qui sera notre resultat (en gros la chaine binaire de notre pin)
notre chaine binaire de notre isk sera appelée ISKbitsArray et pour notre pin PINbitsArray par exemple,

PINbitsArray[0] = ISKbitsArray[19]
PINbitsArray[1] = ISKbitsArray[29]
PINbitsArray[2] = ISKbitsArray[39]
PINbitsArray[3] = ISKbitsArray[4] avec inversion de bit pour celui la (1 deviendra 0 et vice-versa)
PINbitsArray[4] = ISKbitsArray[24]
PINbitsArray[5] = ISKbitsArray[46]
PINbitsArray[6] = ISKbitsArray[31]
PINbitsArray[7] = ISKbitsArray[12]
PINbitsArray[8] = ISKbitsArray[16]
PINbitsArray[9] = ISKbitsArray[28]
PINbitsArray[10] = ISKbitsArray[7] avec inversion de bit pour celui la (1 deviendra 0 et vice-versa)
PINbitsArray[11] = ISKbitsArray[10]
PINbitsArray[12] = ISKbitsArray[15]
PINbitsArray[13] = ISKbitsArray[0]
PINbitsArray[14] = ISKbitsArray[40]
Etc... jusqu'au 48eme bit

qui nous donne 100011000000010101010101100011100110101001101100

une fois terminé on redivise notre chaine binaire en 6 octets (8 bits x 6 octets = 48 bits)

---8C--------05--------55-------8E--------6A-------6C---
10001100 00000101 01010101 10001110 01101010 01101100

voila notre pin. PIN = 8C 05 55 8E 6A 6C

Tres simple, on devrait meme plutot appeler ca un encodage qu'un algorithme.

jah83
09/05/2017, 06h54
Merci Rorry, très instructif

soustourou
09/05/2017, 07h27
merci MRORRY toujours au top et au service des autres

subzero
09/05/2017, 10h22
en un mot ; merci !

KEVINOX46
15/05/2017, 21h08
bravo c'est clair net est precis

VroumVroum
26/05/2017, 22h05
Algorithme ISK vers PIN (pour Megane 2 / Scenic 2)

A savoir, l'algo utilisé consiste en general pour ce constructeur a decaler, repositionner, inverser quelques bits, xor avec clef predefinie...
nous allons voir en particulier celui de la Megane 2 / Scenic 2

Les 6 octets de l'isk pour notre exemple,
ISK = FF 82 5E A0 8C 2E

on represente ces 6 octets sous leur forme binaire:

----FF-------82--------5E--------A0-------8C-------2E----
11111111 10000010 01011110 10100000 10001100 00101110


qui nous donne cette chaine binaire de 48 bits: 111111111000001001011110101000001000110000101110

position du bit 0 -> 111111111000001001011110101000001000110000101110 <- position du bit 47 | (0<->47) = 48 bits

nous allons creer virtuellement une nouvelle chaine binaire qui sera notre resultat (en gros la chaine binaire de notre pin)
notre chaine binaire de notre isk sera appelée ISKbitsArray et pour notre pin PINbitsArray par exemple,

PINbitsArray[0] = ISKbitsArray[19]
PINbitsArray[1] = ISKbitsArray[29]
PINbitsArray[2] = ISKbitsArray[39]
PINbitsArray[3] = ISKbitsArray[4] avec inversion de bit pour celui la (1 deviendra 0 et vice-versa)
PINbitsArray[4] = ISKbitsArray[24]
PINbitsArray[5] = ISKbitsArray[46]
PINbitsArray[6] = ISKbitsArray[31]
PINbitsArray[7] = ISKbitsArray[12]
PINbitsArray[8] = ISKbitsArray[16]
PINbitsArray[9] = ISKbitsArray[28]
PINbitsArray[10] = ISKbitsArray[7] avec inversion de bit pour celui la (1 deviendra 0 et vice-versa)
PINbitsArray[11] = ISKbitsArray[10]
PINbitsArray[12] = ISKbitsArray[15]
PINbitsArray[13] = ISKbitsArray[0]
PINbitsArray[14] = ISKbitsArray[40]
Etc... jusqu'au 48eme bit

qui nous donne 100011000000010101010101100011100110101001101100

une fois terminé on redivise notre chaine binaire en 6 octets (8 bits x 6 octets = 48 bits)

---8C--------05--------55-------8E--------6A-------6C---
10001100 00000101 01010101 10001110 01101010 01101100

voila notre pin. PIN = 8C 05 55 8E 6A 6C

Tres simple, on devrait meme plutot appeler ca un encodage qu'un algorithme.
Bonsoir,
bravo si tu as trouver ceci tous seul , c'est effectivement + un encodage , je fais de même de temps en temps pour obfuscer certaine chose , çà ralenti la rétro .
A+

samigravano
26/05/2017, 22h43
Salut,

Merci beaucoup, comment fait tu pour trouver le 19 de :

PINbitsArray[0] = ISKbitsArray[19] ?

Et ainsi de suite

sharediag
27/05/2017, 04h12
par la methode d observation et generalisation

MrRorry
27/05/2017, 04h49
Salut,

Merci beaucoup, comment fait tu pour trouver le 19 de :

PINbitsArray[0] = ISKbitsArray[19] ?

Et ainsi de suite

en comparant les 2 chaines binaires de isk et pin, puis en testant avec plusieurs valeurs connues pour m'assurer que l'algo est bon...

ebt255
05/06/2017, 14h16
Following the MrRorry I decided to do the same for Laguna 2ph2.

eg.1
So, we have ISK: FA2B6C787800

In binary it looks:
11111010 00101011 01101100 01111000 01111000 00000000
------FA-- -----2B--- -----6C--- -----78--- -----78--- -----00---

Now we have to count the ones (number 1 in binary): 22
Next circular shift 22 (count value) bits in right.

----------------------11111010001010110110110001 >> 1110000111100000000000
111000011110000000000011111010001010110110110001

after that bianry is: 111000011110000000000011111010001010110110110001
Next if count value (22) is even then we must xor evry bits by 1.

11100001 11100000 00000011 11101000 10101101 10110001
11111111 11111111 11111111 11111111 11111111 11111111 XOR

00011110 00011111 11111100 00010111 01010010 01001110 Result OK.
------1E-- -----1F--- -----FC--- -----17--- -----52--- -----4E--- PIN


I thought that was all but..
eg.2

ISK: FF825EA08C2E

111111111000001001011110101000001000110000101110

count value: 24
so, circular shift 24

------------------------111111111000001001011110 >> 101000001000110000101110
101000001000110000101110111111111000001001011110

then XOR

10100000 10001100 00101110 11111111 10000010 01011110
11111111 11111111 11111111 11111111 11111111 11111111 XOR

01011111 01110011 11010001 00000000 01111101 10100001 Result - WRONG!
------5F-- -----73--- -----D1--- -----00--- -----7D--- -----A1---

When count value is 24 and only then you must change it to 17.

circular shift 17
-----------------1111111110000010010111101010000 >> 01000110000101110
010001100001011101111111110000010010111101010000

Not XOR because 17 is not even.


01000110 00010111 01111111 11000001 00101111 01010000 Result OK.
------46-- -----17--- -----7F--- -----C1--- -----2F--- -----50--- PIN


I hope that is all.

ebt255
22/06/2017, 12h34
Algorithme ISK vers PIN (pour Megane 2 / Scenic 2)

I have one question to you MrRorry.

PINbitsArray[3] != ISKbitsArray[4]
PINbitsArray[28] = ISKbitsArray[4]
PINbitsArray[40] != ISKbitsArray[4]
PINbitsArray[42] = ISKbitsArray[4]

Am I right?

MrRorry
22/06/2017, 21h39
I have one question to you MrRorry.

PINbitsArray[3] != ISKbitsArray[4]
PINbitsArray[28] = ISKbitsArray[4]
PINbitsArray[40] != ISKbitsArray[4]
PINbitsArray[42] = ISKbitsArray[4]

Am I right?

Hi ebt255,
nope, every "bit" is used just once.

j-sky
22/06/2017, 22h05
Salut Mister !
toujours au top pour ce genre de hack et bravo pour ton explication sur l'ISK to PIN

ebt255
23/06/2017, 12h23
Hi ebt255,
nope, every "bit" is used just once.

it's weird, i tried:

ISK: 00 00 00 00 00 00
PIN: 10 20 20 10 81 88

in binary
ISK: 00000000 00000000 00000000 00000000 00000000 00000000
PIN: 00010000 00100000 00100000 00010000 10000001 10001000

next i tried:
ISK: 08 00 00 00 00 00
PIN: 00 20 20 18 81 28

in binary
ISK: 00001000 00000000 00000000 00000000 00000000 00000000
PIN: 00000000 00100000 00100000 00011000 10000001 00101000

MrRorry
24/06/2017, 15h21
it's weird, i tried:

ISK: 00 00 00 00 00 00
PIN: 10 20 20 10 81 88

in binary
ISK: 00000000 00000000 00000000 00000000 00000000 00000000
PIN: 00010000 00100000 00100000 00010000 10000001 10001000

next i tried:
ISK: 08 00 00 00 00 00
PIN: 00 20 20 18 81 28

in binary
ISK: 00001000 00000000 00000000 00000000 00000000 00000000
PIN: 00000000 00100000 00100000 00011000 10000001 00101000

Hi ebt,

keep in mind
- Every model is different
- bits can be scrambled,shifted,ignored...

And by the way,
few specific bits can be cleared/ignored in the way Isk->pin, it means that if you want to reverse the coding steps, you will have to guess the missing bits (by brute-forcing them) but its a piece of cake because you already know the pin.
for example in my tool "Pin to Isk", a thread is launched to guess them, and it takes just few seconds to find them, every candidate (isk) is compared the known result (pin) and its found when they match... its that simple!

Keep this work up, its good to see that some guys are still interrested in research :wink_ancien:

ebt255
24/06/2017, 19h13
Hi MrR,

it is easy to use someone's programs, but our own research gives us more fun and satisfaction ;)

MrRorry
24/06/2017, 23h51
Hi MrR,

it is easy to use someone's programs, but our own research gives us more fun and satisfaction ;)

i agree :14: