Here you go:
(01 March 1998)
Dear Reverser,
I've reached you 'javdevio.htm' page 3 days ago, and yesterday I finally
got a username/password to reach the protected part...
The method I used was :
1 - look at the JavaScript code, and modify it in order to localize the
usernames/passwords
I mean username/password is user 2, fred/fred user 1, reverser/reverser
user 3...
Doing this I realised that I have to find username/password for user
4 & 6.
Just a little observation lead me the conclusion that user 6 name is
"username" 'coz it's the same that user 2.
2 - write an utility to brute-force these unknown codes (user4,
password4, password6)
My first C program was performing about 20000 tries by second on my
Pentium 2 233Mhz.
I then computed how much time should be required with this approach,
assuming that the username/password to find has only characters (so
digits), the result was :
Phase 1 (password is 1 character long)............... 26 possibilities immediate result
Phase 2 (password is 2 character long).............. 676 possibilities immediate result
Phase 3 (password is 3 character long)........... 17.576 possibilities immediate result
Phase 4 (password is 4 character long).......... 456.976 possibilities 23 seconds
Phase 5 (password is 5 character long)....... 11.881.376 possibilities 10 minutes
Phase 6 (password is 4 character long)...... 308.915.776 possibilities 4 hours
Phase 7 (password is 4 character long).... 8.031.810.176 possibilities 4,5 days
Phase 8 (password is 8 character long)...208.827.064.576 possibilities 121 days
3 - considering the results above, I then decided to optimize my C code,
moving as much computation I could outside of the loops, storing results
in arrays... I also decided to change to order of characters to check,
from 'A', 'B'... 'Z' to the growing order of frequency of the characters
in a common language "ERISANTOULCPMDGFBVHZQXYJKW" (in french) my result
was something like the following code :
--------------------------------------------------------
//__________________________________________________________________________
// parse(c) <==> parse(uppercase(j[i]),36);
#define parse(c) ((c)-'A'+10)
//__________________________________________________________________________
char savefile[80],resultfile[80];
FILE *fcfg, *fsav;
char last_try[]="AAAA"; // starting values for a,b,c,d
char start_phase;
char a,b,c,d,e,f,g,h;
char CharacterSet[26]="ERISANTOULCPMDGFBVHZQXYJKW";
double
tpow1[10][26+'A'],tpow2[10][26+'A'],tpow3[10][26+'A'],tpow4[10][26+'A'];
int len;
void init_arrays(void)
{
char i,j;
for(i=0;i<10;i++)
for(j='A';j<='Z';j++) {
tpow1[i][j]=parse(j)*pow(base1,i);
tpow2[i][j]=parse(j)*pow(base2,i);
tpow3[i][j]=parse(j)*pow(base3,i);
tpow4[i][j]=parse(j)*pow(base4,i);
}
}
//__________________________________________________________________________
//
// Encryption functions F1 F2 ...
double F1(char j[])
{
char i;
double z=0;
// if (strlen(j)>10) j=j.substring(0,10);
for(i=0;i10) j=j.substring(0,10);
for(i=0;i
With this code the performance was : about 666667 tries by second,
giving :
Phase 1 (password is 1 character long)............... 26 possibilities immediate result
Phase 2 (password is 2 character long).............. 676 possibilities immediate result
Phase 3 (password is 3 character long)........... 17.576 possibilities immediate result
Phase 4 (password is 4 character long).......... 456.976 possibilities 6 seconds
Phase 5 (password is 5 character long)....... 11.881.376 possibilities 3 minutes
Phase 6 (password is 4 character long)...... 308.915.776 possibilities 80 minutes
Phase 7 (password is 4 character long).... 8.031.810.176 possibilities 35 hours
Phase 8 (password is 8 character long)...208.827.064.576 possibilities 37 days
This was much better, but not enough for me...
4 - Considering that when you want to use brute force, you have to be
very strong, powerful, etc...
I choosed to reduce the waiting time using the computing power of
the network of my company...
This required a little more coding but the result is here : only
using the network after working hours (in order to not disturb the
employees), the more the network uses computer, the less it takes to
find a solution.
That's all, the result is here.
Comments can be send at :
Azazel_Corp(at)hotmail(point)com