program: EverCrack

  purpose: Caesar Cipher Cracker

  version: v1.0

  creator: Dr MindHacker [Cory Michael Boston]

  contact: [drmindhaxor]@yahoo.com


define("WORDS",  640);

$cword;

$lens;

$syms;

$alphabet = "abcdefghijklmnopqrstuvwxyz";

/**************************************************

 tests each rot result against words in list of

 that length

**************************************************/

function WordSeek($letters, $word)

  {

    $dict;

    $match = 0;

    $result = 0;

    $searching = 1;

    $source;

    $path = "dict/";

    $path .= $letters;

    $path .= ".TXT";

    $dict = fopen($path, "r");

    while($searching)
      
      {

        $match = 0;

        $source = fgets($dict);

        if(!$source)
	    
          {  $searching = 0;  }

        else

          {

            rtrim($source);

            if($word[1] == $source[1])

             { 

	       for($x = 0; $x < $letters; $x++)

                 { 

                   if($word[$x] == $source[$x])

                     {  $match++;  }

                 }

	       if($match == $letters)

		 { 

		   $result = 1;

		   $searching = 0;

	         }

              }

          }

      }

    fclose($dict);

    return $result;

  }

/************************************************

 rotate the letter

************************************************/

function Rotate($letter, $rot)

  {

    $wrapper = 0;

    global $alphabet;

    for($x = 0; $x < 26; $x++)

      { 

         if($letter == $alphabet[$x])

           {  

              if(($x + $rot) >= 25)

                {  $letter = $alphabet[$rot - 1];  }

              else

                 {  $letter = $alphabet[$x + 1];  }

              $x = 26;

          }

      }

    return $letter;

  }

/************************************************

 convert one word at a time and test to see if

 rot matches a word in dictionary - if first

 two match use that rot to decrypt rest of text

************************************************/

function ROTBruteForce()

  {

    $rot = 1;

    $key = 0;

    $letter = 0;

    $letters = 0;

    $comparing = 1;

    $cracking = 2;

    $cracked = 0;

    $result = 0;

    $sym = 0;

    $word = "";

    global $cword;

    global $lens;

    for($rot; $rot < 26; $rot++)

      {

        if(!$cracked)

          { 

	    $comparing = 1;

	    $cracking = 2;

	    while($comparing)

	      { 

	        if($letter = $cword[$sym][$letters])

		  { 

		    $word .= Rotate($letter, $rot); 

                    $letters++;

		    if(($cracked) && ($letters == $lens[$sym]))

		      {

			 //echo "$word ";

			 $letters = 0;

                         $sym++;

                         $word = "";

		      }

		   else if(($cracking) && ($letters == $lens[$sym]))

		     { 

			$result = WordSeek($letters, $word);

			$letters = 0;

			if($result)

			  { 
		      
			   $cracking--;

                           //echo "$word ";

                           $word = "";

                           $sym++;

			   if(!$cracking)  

			     {   $cracked = 1;  }
			
		          }

		       else

			 {

			    $comparing = 0;

			    continue;

		          }

                      }

                  }

                else

                  {  $comparing = 0;  }

              }

          }

      }

    return 0;

  }

/************************************************

 main loop

************************************************/

//echo Clear Text:

global $cword;

global $lens;

global $syms;

$cword = preg_split("/[\s]+/", $_POST['CIPHER']);

for($x = 0; $x < WORDS; $x++)

  {

    $lens[$x] = strlen($cword[$x]);

    $cword[$x] = strtolower($cword[$x]);   

    if($lens[$x] == 0)

      {

        $syms = $x;

        $x = WORDS;

      }

  }

ROTBruteForce();

[Return to EverCrack Main]