home *** CD-ROM | disk | FTP | other *** search
/ The Elite Hackers Toolkit / TheEliteHackersToolkitVolume1_1998.rar / HACKERS.BIN / appcraks / CRYPTO31.ZIP / README.TXT < prev   
Text File  |  1990-01-01  |  8KB  |  205 lines

  1. 999«999999999999999999999999999999999999999999999999999999999999
  2. 8888 ##88888## 88888888888888888888:L 888888:L 88888888888888888
  3. 77777###7777## 7777777777777777777:L 777777:L 777777777777777777
  4. 6666## #666## 6666666666666666666:L 666666:L 6666  zZzZzZ 666666
  5. 5555## 5#55## 555 u|555|u 55555:L 555555:L 555555555 zZ 55555555
  6. 444## 44#4## 4444 u|444|u 4444:L 444444:L 444444444 zZ 444444444
  7. 333## 333### 3333 u|333|u 333:L 333333:L 333333333 zZ 3333333333
  8. 22## 2222## 22222 \UuuuU/ 222:LLLL 222:LLLL 22222 ZzZzZz... ⌐222
  9. 1111111111111111111111111111111111111111111111111111111111111111
  10. ================================================================
  11.  
  12. Revise Engineered version of Crypto v3.1
  13. Cracked on April 7, 1998
  14. E-mail:  crackz@hehe.com
  15. By:  ½ Nullz ╗
  16.  
  17. First of all I mean absolutely no harm towards anyone in producing
  18. this program. It is solely for the knowledge that I'm interested in.
  19. Thank you for your understanding!
  20.  
  21. Background Information about Crypto:
  22. Name:  Crypto for Windows 95/NT v3.1
  23. Download URL:  http://www.execpc.com/~sbd/Crypto.html
  24. Software Date:  April 6, 1998
  25. Company:  Software Design
  26. =------------------------------------------------------------------=
  27.  
  28. Crack INFO:
  29.  
  30. The file "CrackMe.(=txt=)" is provided by the author, Gregory,
  31. as a challenge to crackers.  It is an encrypted file, encrypted
  32. using his improved algorithm in Crypto v3.1.  Unfortunately, I've 
  33. cracked it the next day the software was released.  You'll
  34. experience how it is done by following the instructions here.
  35.  
  36. If you are looking for the encryption algorithm, it's included
  37. in the zip package under the file name "Crypto31.cpp". The
  38. instructions found in this Readme file is not about the 
  39. encryption algorithm, it is about hacking the key signature.
  40. The point here is to crack the file provide by the author,
  41. "CrackMe.(=txt=)". This file is included in the Shareware
  42. package, which you will find once you've ran the setup program.
  43. If you haven't downloaded the program Crypto v3.1 yet, don't worry.
  44. I've provided the "CrackMe.(=txt=)" file here for you to crack.
  45.  
  46. -------------===-------------
  47.  
  48. Now, fire up CryptoRE.exe, and look around at the buttons & controls.
  49. Note that while you entered text into the password field, the ID
  50. text field gets updated with different values. The ID is generated
  51. is equivalent to the password. And that ID value is very important.
  52. In order to decode a file, you'll need either the password or an 
  53. ID for the password. And the point of this instruction assumes that
  54. you don't know neither one of them. So you'll need to generate the ID.
  55.  
  56. First select the file "CrackMe.(=txt=)" into the input field.
  57. You can ignore anything in the output field.
  58. You can also ignore the password field, since you don't know it.
  59. Now is time to hack the signature!
  60.  
  61. Go down to the area "Brute force key signature cracking..."
  62. This part allows you to search for the ID from the Signature.
  63. First you need to select a resonable starting value to test.
  64. The default starting value is 9FFFFFFF. And the testing will
  65. end when the value reaches 00000000.
  66.  
  67. Enter 0F000000 into the start value. You can adjust the update
  68. increment value if you want, it's optional. This is the value
  69. to allow CryptoRE to give you an update, so you know it is not
  70. halting the computer. As brute force key serching takes time!
  71. Now click on the button [Generate Password ID]. A messagebox
  72. will pop up (only once) to tell you that the key hacking will
  73. take a while.
  74.  
  75. In about 27 seconds or less, CryptoRE should come up with a
  76. possible ID. Notice at this time, the password ID field is
  77. updated with this newly found ID. That means when you click
  78. on the decode button, this value will be used to decode the
  79. currently selected file. Do that, and see what happens.
  80. You should have the encrypted file cracked! And it should be
  81. the poem "Jabberwocky" by Lewis Carroll.
  82.  
  83.  
  84. More on the Key Hacking algorithm:
  85.  
  86. Now that you've just cracked an encrypted file. You might
  87. wonder how all that works. Here's the algorithm...
  88.  
  89. BOOL GetPassID(DWORD key, DWORD start, DWORD &retval)
  90. {
  91.   register DWORD i = 0, j = 0, tmp = 0;
  92.   DWORD val = 0;
  93.   BOOL found = FALSE;
  94.  
  95.   for (i = start; i != 0; i--) // loop exits at 0
  96.   {
  97.     val = i;   // save the current test key value
  98.     tmp = ((((((i*4 + i)*4) + (i*4 + i) + i) * 8) + i) << 8) - i;
  99.     i = (tmp * 4) + i + 0x269EC3;   // i is reuse next
  100.     j  = (i & 0x7FFF0000);   // store newval in j
  101.     j >>= 0x10;   // j is moved to lower 16 bits
  102.  
  103.     tmp = ((((((i*4 + i)*4) + (i*4 + i) + i) * 8) + i) << 8) - i;
  104.     i = (tmp * 4) + i + 0x269EC3;
  105.     i &= 0x7FFF0000;   // clear out lower 16 bits
  106.     i += j;
  107.     if ((i + val) == key)   // if key is found
  108.     {
  109.       found = TRUE;
  110.       break;  // break out of loop now
  111.     }
  112.     i = val;   // restore current test key
  113.   }
  114.  
  115.   retval = val;  // return with the new ID
  116.   return (found);
  117. }
  118.  
  119. void OnGetsignature() 
  120. {
  121.   CFile infp;
  122.   CFileException err;
  123.   DWORD key = 0;
  124.   unsigned char buff[17] = "\0";
  125.   char tmp[10] = "\0";
  126.   BOOL found = FALSE;
  127.  
  128.   if (infp.Open(infile, CFile::modeRead | CFile::typeBinary, &err))
  129.   {
  130.     key = infp.Read(buff, 16); // read file into buffer
  131.     infp.Close();
  132.  
  133.     key = buff[15]; key <<= 8;  // get signature from buffer
  134.     key |= buff[14]; key <<= 8;
  135.     key |= buff[13]; key <<= 8;
  136.     key |= buff[12];   // key now contains the signature!
  137.  
  138.     found = GetPassID(key, start, key);
  139.     if (found)
  140.     {  // key is returned with the new ID
  141.       ultoa(key, tmp, 10);
  142.       SetDlgItemText(IDC_KEYSIG, tmp); // print to text field
  143.     }
  144. }
  145.  
  146. What you've done is you've chosen the start value to be 0F000000
  147. And then the signature is retrieved from the select file.
  148. GetPassID() is called with the appropriate parameter. 
  149. Then each value starting from 0F000000 all the way down to 0
  150. is tested, decrementing by 1 each time.
  151. If the value after feeding into the algorithm matches the
  152. signature value, then the GetPassID() function returned with
  153. the new ID value. This value is then printed out.
  154.  
  155. Notice that you can choose the starting value, that is remember
  156. that not all IDs have a unique signature value. So certain ID value
  157. might not decode the file correctly as a result.  Therefore you'll
  158. be able to run the algorihtm again at a different range of values
  159. to test.
  160. For example, the password "hello world" has two ID that'll give
  161. the same signature.
  162. Key1: 0B5C4EDB
  163. Key2: 07B75FFC
  164.  
  165. If you start testing from 0F000000, you're first stop would be
  166. at value 0B5C4EDB.  Now say, this is the incorrect ID value because
  167. it doensn't decode the file correctly. What you would do now is
  168. enter a different starting value to continue the search.
  169. You would enter 0B5C4EDA, 1 less than the previous value!
  170. Your search will then begin until it reaches another possible ID
  171. value or 0.  And of course, it'll stopped at 07B75FFC. This is 
  172. another possible ID, which you'll use to attempt to decode the file.
  173. As you can see, the search can go on an on until you come up with
  174. a decoded file that make sense.
  175.  
  176. If you perform this testing on the file "CrackMe.(=txt=)" file,
  177. you will come up with these values...
  178.  Value  |    ID
  179. --------------------
  180. 07BBAFFA - 129740794
  181. 0416C11B - 68600091
  182. 0071D23C - 7459388
  183.  
  184. How fast is the searches?  Well on my P133, it'll test about 4
  185. million values in 1 second.  So a range of FFFFFFFF to 0 is about
  186. 4 billion values. At a rate of 4 million values per second, it'll
  187. be done in about 20 minutes.  Of course if you have a faster,
  188. the searches would be much faster! Theoretically, on a P266,
  189. it would be twice as fast.
  190. To further lower the key hacking time, it would be best to
  191. choose the most probable starting value.  Because most IDs
  192. fall within a range of values. So the number of possibilities
  193. is lowered.  That is why at the beginning, I have you entered
  194. the value 0F000000 as the staring value when you crack the file
  195. "CrackMe.(=txt=)" file, instead of starting from FFFFFFFF or
  196. 9FFFFFFF.
  197.  
  198. =------------------------------------------------------------------=
  199. Send me comments to my E-mail address:  crackz@hehe.com
  200.  
  201. By the way, this reEngineered program requires
  202. MFC42.DLL and MSVCRT.DLL to run:
  203. MFC42 file version - 4.21.7303
  204. MSVCRT file version - 5.00.7303
  205.