Je sèche. Si ça peut mettre sur la piste, je vais quand même vous faire part de mon raisonnement.
On cherche un mot de 8 caractères à partir d'un mot de 7 lettres. Ça rend impossible toute logique de substitution.
J'ai donc cherché du côté des CRC. Il nous faut 8 caractères, et ça commence par 10. Il est tentant de voir en cela un octet affiché sous forme binaire. J'ai donc pensé à calculer la version binaire du crc8 du mot "poireau".
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47 | #include <stdio.h>
void binaire(unsigned char n);
unsigned char crc8(char* s);
int main(void)
{
binaire( crc8("poireau") );
return 0;
}
void binaire(unsigned char n)
{
if (n)
{
binaire(n>>1);
printf("%u", n & 0x01);
}
}
unsigned char crc8(char* s)
{
unsigned char r = 0;
unsigned int i = 0, j = 0;
while(0 != s[i])
{
r ^= s[i];
for(j = 0; j < 8; j++)
{
if (r & 0x80)
{
r = (r << 1) ^ 0x07;
}
else
{
r <<= 1;
}
}
i++;
}
return r;
}
|
Ce qui nous donne :
Celui-ci comporte bien 8 caractères et commence bien par 10.
C'est le raisonnement qui m'a amené à demander si 10001010 était le mot de passe. Malheureusement ce n'est pas ça.