1 |
688 |
jeremybenn |
static char newshuffle[256 + 16] = {
|
2 |
|
|
0x0f, 0x08, 0x05, 0x07, 0x0c, 0x02, 0x0e, 0x09, 0x00, 0x01, 0x06, 0x0d,
|
3 |
|
|
0x03, 0x04, 0x0b, 0x0a, 0x02, 0x0c, 0x0e, 0x06, 0x0f, 0x00, 0x01, 0x08,
|
4 |
|
|
0x0d, 0x03, 0x0a, 0x04, 0x09, 0x0b, 0x05, 0x07, 0x05, 0x02, 0x09, 0x0f,
|
5 |
|
|
0x0c, 0x04, 0x0d, 0x00, 0x0e, 0x0a, 0x06, 0x08, 0x0b, 0x01, 0x03, 0x07,
|
6 |
|
|
0x0f, 0x0d, 0x02, 0x06, 0x07, 0x08, 0x05, 0x09, 0x00, 0x04, 0x0c, 0x03,
|
7 |
|
|
0x01, 0x0a, 0x0b, 0x0e, 0x05, 0x0e, 0x02, 0x0b, 0x0d, 0x0a, 0x07, 0x00,
|
8 |
|
|
0x08, 0x06, 0x04, 0x01, 0x0f, 0x0c, 0x03, 0x09, 0x08, 0x02, 0x0f, 0x0a,
|
9 |
|
|
0x05, 0x09, 0x06, 0x0c, 0x00, 0x0b, 0x01, 0x0d, 0x07, 0x03, 0x04, 0x0e,
|
10 |
|
|
0x0e, 0x08, 0x00, 0x09, 0x04, 0x0b, 0x02, 0x07, 0x0c, 0x03, 0x0a, 0x05,
|
11 |
|
|
0x0d, 0x01, 0x06, 0x0f, 0x01, 0x04, 0x08, 0x0a, 0x0d, 0x0b, 0x07, 0x0e,
|
12 |
|
|
0x05, 0x0f, 0x03, 0x09, 0x00, 0x02, 0x06, 0x0c, 0x05, 0x03, 0x0c, 0x08,
|
13 |
|
|
0x0b, 0x02, 0x0e, 0x0a, 0x04, 0x01, 0x0d, 0x00, 0x06, 0x07, 0x0f, 0x09,
|
14 |
|
|
0x06, 0x00, 0x0b, 0x0e, 0x0d, 0x04, 0x0c, 0x0f, 0x07, 0x02, 0x08, 0x0a,
|
15 |
|
|
0x01, 0x05, 0x03, 0x09, 0x0b, 0x05, 0x0a, 0x0e, 0x0f, 0x01, 0x0c, 0x00,
|
16 |
|
|
0x06, 0x04, 0x02, 0x09, 0x03, 0x0d, 0x07, 0x08, 0x07, 0x02, 0x0a, 0x00,
|
17 |
|
|
0x0e, 0x08, 0x0f, 0x04, 0x0c, 0x0b, 0x09, 0x01, 0x05, 0x0d, 0x03, 0x06,
|
18 |
|
|
0x07, 0x04, 0x0f, 0x09, 0x05, 0x01, 0x0c, 0x0b, 0x00, 0x03, 0x08, 0x0e,
|
19 |
|
|
0x02, 0x0a, 0x06, 0x0d, 0x09, 0x04, 0x08, 0x00, 0x0a, 0x03, 0x01, 0x0c,
|
20 |
|
|
0x05, 0x0f, 0x07, 0x02, 0x0b, 0x0e, 0x06, 0x0d, 0x09, 0x05, 0x04, 0x07,
|
21 |
|
|
0x0e, 0x08, 0x03, 0x01, 0x0d, 0x0b, 0x0c, 0x02, 0x00, 0x0f, 0x06, 0x0a,
|
22 |
|
|
0x09, 0x0a, 0x0b, 0x0d, 0x05, 0x03, 0x0f, 0x00, 0x01, 0x0c, 0x08, 0x07,
|
23 |
|
|
0x06, 0x04, 0x0e, 0x02, 0x03, 0x0e, 0x0f, 0x02, 0x0d, 0x0c, 0x04, 0x05,
|
24 |
|
|
0x09, 0x06, 0x00, 0x01, 0x0b, 0x07, 0x0a, 0x08,
|
25 |
|
|
};
|
26 |
|
|
void newpassencrypt (char *, char *, char *);
|
27 |
|
|
void
|
28 |
|
|
newpassencrypt (char *old, char *new, char *out)
|
29 |
|
|
{
|
30 |
|
|
char *p, *bx;
|
31 |
|
|
char copy[8];
|
32 |
|
|
int i, di, ax;
|
33 |
|
|
char cl, dl, ch;
|
34 |
|
|
for (i = 0; i < 16; i++)
|
35 |
|
|
{
|
36 |
|
|
for (bx = old + 7; bx > old; bx--)
|
37 |
|
|
{
|
38 |
|
|
*bx = ((bx[-1] >> 4) & 0x0f) | ((*bx) << 4);
|
39 |
|
|
}
|
40 |
|
|
for (di = 0; di < 16; di++)
|
41 |
|
|
{
|
42 |
|
|
if (newshuffle[di + 0x100] & 1)
|
43 |
|
|
ch = ((copy[newshuffle[di + 0x100] / 2] >> 4) & 0x0f);
|
44 |
|
|
else
|
45 |
|
|
ch = copy[newshuffle[di + 0x100] / 2] & 0x0f;
|
46 |
|
|
out[di / 2] |= ((di & 1) ? ch << 4 : ch);
|
47 |
|
|
}
|
48 |
|
|
memcpy (copy, out, 8);
|
49 |
|
|
}
|
50 |
|
|
}
|