by ROADY
05 March 1998

/*	
** Fravia javascript password brutecracker
** Special version, does only work with Fravia's hints 
** and what I assumed/found to be true
** Just needed a bit of luck.
** Should be fast even in java. Takes about 10 sec on my machine
** If you translate it to C I would like to see the result.
** No extensive *englishness* check. Just some to speed up tests.
** find the good one yourself it's fast.
** Hmm... as you are all crackers I didn't comment :)
**
** By ROADY/TROOPERS 1998 Roady(at)rocketmail(dot)com
*/

public class Fraviapass
{
  static int f[]={80,83,93,99,113,131,159,194,346,416,619,861,1165,1649,2256,
		  4766,6077,9554,13713,20576,28894,65661,82386,131248,164801,262524};

  static int g[]={160,163,173,179,193,211,239,274,426,496,699,941,1245,1729,2336,4846,6157,
		  9634,13793,20656,28974,65741,82466,131328,164881,262604,166,176,182,196,214,242,277,429,
		  499,702,944,1248,1732,2339,4849,6160,9637,13796,20659,28977,65744,82469,131331,164884,
		  262607,186,192,206,224,252,287,439,509,712,954,1258,1742,2349,4859,6170,9647,13806,20669,
		  28987,65754,82479,131341,164894,262617,198,212,230,258,293,445,515,718,960,1264,1748,
		  2355,4865,6176,9653,13812,20675,28993,65760,82485,131347,164900,262623,226,244,272,307,
		  459,529,732,974,1278,1762,2369,4879,6190,9667,13826,20689,29007,65774,82499,131361,164914,
		  262637,262,290,325,477,547,750,992,1296,1780,2387,4897,6208,9685,13844,20707,29025,65792,
		  82517,131379,164932,262655,318,353,505,575,778,1020,1324,1808,2415,4925,6236,9713,13872,
		  20735,29053,65820,82545,131407,164960,262683,388,540,610,813,1055,1359,1843,2450,4960,
		  6271,9748,13907,20770,29088,65855,82580,131442,164995,262718,692,762,965,1207,1511,1995,
		  2602,5112,6423,9900,14059,20922,29240,66007,82732,131594,165147,262870,832,1035,1277,1581,
		  2065,2672,5182,6493,9970,14129,20992,29310,66077,82802,131664,165217,262940,1238,1480,
		  1784,2268,2875,5385,6696,10173,14332,21195,29513,66280,83005,131867,165420,263143,
		  1722,2026,2510,3117,5627,6938,10415,14574,21437,29755,66522,83247,132109,165662,263385,
		  2330,2814,3421,5931,7242,10719,14878,21741,30059,66826,83551,132413,165966,263689,3298,
		  3905,6415,7726,11203,15362,22225,30543,67310,84035,132897,166450,264173,4512,7022,
		  8333,11810,15969,22832,31150,67917,84642,133504,167057,264780,9532,10843,14320,18479,
		  25342,33660,70427,87152,136014,169567,267290,12154,15631,19790,26653,34971,71738,88463,
		  137325,170878,268601,19108,23267,30130,38448,75215,91940,140802,174355,272078,27426,34289,
		  42607,79374,96099,144961,178514,276237,41152,49470,86237,102962,151824,185377,283100,
		  57788,94555,111280,160142,193695,291418,131322,148047,196909,230462,328185,164772,213634,
		  247187,344910,262496,296049,393772,329602,427325,525048};

  static int var5=0;
  static int var1[]= {'j','k','q','x','y','z'};
  static char var2[] = {'a', 'b', 'c', 'd', 'e', 'f','g', 'h', 'i', 'j', 'k', 'l', 'm',
			'n', 'o', 'p', 'q', 'r', 's', 't','u', 'v', 'w', 'x', 'y', 'z'};
  static char var3[] = {'a','a','a','b','a','c','a','d','a','e','a','f','a','g','a',
			'h','a','i','a','j','a','k','a','l','a','m','a','n','a','o','a','p','a','q','a','r','a',
			's','a','t','a','u','a','v','a','w','a','x','a','y','a','z','b','b','b','c','b','d','b',
			'e','b','f','b','g','b','h','b','i','b','j','b','k','b','l','b','m','b','n','b','o','b',
			'p','b','q','b','r','b','s','b','t','b','u','b','v','b','w','b','x','b','y','b','z','c',
			'c','c','d','c','e','c','f','c','g','c','h','c','i','c','j','c','k','c','l','c','m','c',
			'n','c','o','c','p','c','q','c','r','c','s','c','t','c','u','c','v','c','w','c','x','c',
			'y','c','z','d','d','d','e','d','f','d','g','d','h','d','i','d','j','d','k','d','l','d',
			'm','d','n','d','o','d','p','d','q','d','r','d','s','d','t','d','u','d','v','d','w','d',
			'x','d','y','d','z','e','e','e','f','e','g','e','h','e','i','e','j','e','k','e','l','e',
			'm','e','n','e','o','e','p','e','q','e','r','e','s','e','t','e','u','e','v','e','w','e',
			'x','e','y','e','z','f','f','f','g','f','h','f','i','f','j','f','k','f','l','f','m','f',
			'n','f','o','f','p','f','q','f','r','f','s','f','t','f','u','f','v','f','w','f','x','f',
			'y','f','z','g','g','g','h','g','i','g','j','g','k','g','l','g','m','g','n','g','o','g',
			'p','g','q','g','r','g','s','g','t','g','u','g','v','g','w','g','x','g','y','g','z','h',
			'h','h','i','h','j','h','k','h','l','h','m','h','n','h','o','h','p','h','q','h','r','h',
			's','h','t','h','u','h','v','h','w','h','x','h','y','h','z','i','i','i','j','i','k','i',
			'l','i','m','i','n','i','o','i','p','i','q','i','r','i','s','i','t','i','u','i','v','i',
			'w','i','x','i','y','i','z','j','j','j','k','j','l','j','m','j','n','j','o','j','p','j',
			'q','j','r','j','s','j','t','j','u','j','v','j','w','j','x','j','y','j','z','k','k','k',
			'l','k','m','k','n','k','o','k','p','k','q','k','r','k','s','k','t','k','u','k','v','k',
			'w','k','x','k','y','k','z','l','l','l','m','l','n','l','o','l','p','l','q','l','r','l',
			's','l','t','l','u','l','v','l','w','l','x','l','y','l','z','m','m','m','n','m','o','m',
			'p','m','q','m','r','m','s','m','t','m','u','m','v','m','w','m','x','m','y','m','z','n',
			'n','n','o','n','p','n','q','n','r','n','s','n','t','n','u','n','v','n','w','n','x','n',
			'y','n','z','o','o','o','p','o','q','o','r','o','s','o','t','o','u','o','v','o','w','o',
			'x','o','y','o','z','p','p','p','q','p','r','p','s','p','t','p','u','p','v','p','w','p',
			'x','p','y','p','z','q','q','q','r','q','s','q','t','q','u','q','v','q','w','q','x','q',
			'y','q','z','r','r','r','s','r','t','r','u','r','v','r','w','r','x','r','y','r','z','s',
			's','s','t','s','u','s','v','s','w','s','x','s','y','s','z','t','t','t','u','t','v','t',
			'w','t','x','t','y','t','z','u','u','u','v','u','w','u','x','u','y','u','z','v','v','v',
			'w','v','x','v','y','v','z','w','w','w','x','w','y','w','z','x','x','x','y','x','z','y',
			'y','y','z','z','z'};



  static boolean func2(char param1,char param2)
  {
    char v[]={'a','e','i','o','u'};

    switch(param1)
      {
      case 'j':
      case 'x':
      case 'y':
      case 'z':
	for(int i=0;i<5;i++)
	  {
	    if (param2==v[i])
	      return true;
	  }
	return false;
      case 'q':
	return param2=='u';
      default:
	return true;
      }
  }


  /* 
  ** The recursive part. Find yourself how it works.
  ** You are crackers aren't you ?
  */
  static void func1(long param1, int param2,String param3,int param4)
  {
    int var4=0;
    if (param2==1) 
      {
	for (int i=0; i<351;i++)
	  {
	    if (param1-g[i] ==0 ) 
	      {
		for(int j=0;j<6;j++)
		  {
		    if (var3[2*i]==var1[j])
		      {
			param4++;
			break;
		      }}
		for(int j=0;j<6;j++)
		  {
		    if (var3[2*i+1]==var1[j])
		      {
			param4++;
			break;
		      }}

		if (param4<2) {

		  System.out.println("_"+var3[2*i]+var3[2*i+1]+param3);
		  System.out.println("_"+var3[2*i+1]+var3[2*i]+param3);

		  var5+=2;
		  break;
		}}
	  }			
      }

    else if (param2>1)
      {
      

	for (int i=0; i<26; i++)
	  {
	    if ((param1-f[i])%param2 == 0 && param1-f[i]>159)
	      {
		var4=param4;
		for(int j=0;j<6;j++)
		  {
		    if (var2[i]==var1[j])
		      {
			var4++;
			break;
		      }}

		if ((var4 <2) && func2(var2[i],param3.charAt(0)))
		  func1((param1-f[i])/param2,param2-1,var2[i]+param3,var4);	  
	      }
	  }
      }
  }
 

  static public void main(String argv[])
  {
    int min=1;
    int max=1;
    int total;
    long dummy=0;
    long key = 25834242042L;

    for (;dummy<key;min++)
      {
	dummy+=262524;
	dummy*=min;
      }


    for (dummy=0;dummy>key;max++)
      {
	dummy+=80;
	dummy*=max;
      }

    for (total=min-1;total<max;total++)
      {
	if (key %total == 0) break;
      }


    func1(((key/9)-f[17])/8,7,"r",0); 
    System.out.println("\nMinimal total password length: "+min);
    System.out.println("Maximal total password length: "+max);
    System.out.println("Total password length: "+(total+1));
    System.out.println("\nThere are "+ var5+"*26 possibilities left");

  }
}

You are deep inside Fravia's page of reverse engineering, choose your way out:

entrance
advanced page
Back to the entrance
Back to the devious page

redhomepage redlinks redanonymity red+ORC redstudents' essays redacademy database
redtools redcocktails redantismut CGI-scripts redsearch_forms redmail_Fravia
redIs reverse engineering legal?