-
Notifications
You must be signed in to change notification settings - Fork 0
mapa17/VigenereCrack
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
VigenereCrack - Cracking Vignere Ciphers the easy way ##################################################### 14 May 2012 VigenereCrack is a little tool that can be used to decipher texts encrypted with the Vignere Algorithm (http://en.wikipedia.org/wiki/Vigen%C3%A8re_cipher) . Usage ===== VigenereCrack has three modes of operation. It can be used to generate a table of letter distributions for a specific cipher text and key length. Decrypt a cipher text with an specified password, and generate a pdf containing cipher text decrypted with variations of passwords generated out of the most likely password. !!!IMPORTANT!!! By default the script assumes Spanish language as the natural language. In order to crack English texts, three variables need to be adapted in main() Letter distribution table: '''''''''''''''''''''''''' To generate a letter distribution table out of the cipher Text A1, and with a assumed key length of 16 python3 VigenereCrack.py ../../CriptoCompeticion/TextosConcurs/A1.txt 16 Create letter distribution table only! Finding most likely passwords with 16 characters ... Distance of the letter distribution frequency to Spanish. (lower values are better , lowest are marked with *) Column 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 [A]: [3.667] [4.120] [3.755] *3.204* [3.396] *3.360* [3.622] [3.799] [3.892] [3.704] [3.522] [3.662] [3.463] [4.012] [3.699] [3.913] [A]: [B]: [3.798] [3.999] [4.065] [3.928] [4.067] [3.867] [3.835] [4.266] [4.155] [4.206] [4.169] [4.233] [4.057] [3.932] [3.477] [3.802] [B]: [C]: *3.149* *3.012* *3.169* [3.379] *3.177* *3.058* *3.089* *3.413* *3.073* *3.232* *2.903* *3.273* *3.106* *3.024* [3.432] *3.320* [C]: [D]: [4.469] [4.274] [4.641] [4.277] [4.113] [4.333] [4.335] [3.782] [4.302] *3.465* [3.948] [3.894] [4.378] [4.197] [3.817] [3.997] [D]: [E]: [4.211] [3.519] [3.601] [3.517] *3.279* [3.763] [3.870] [3.985] [3.825] [3.604] [3.873] [3.890] [3.897] [3.816] [3.988] [3.659] [E]: [F]: [4.037] [4.220] [4.323] [4.281] [4.030] [4.462] [4.440] [3.603] [4.029] [3.732] [4.608] [4.009] [4.074] [3.823] [3.878] [3.974] [F]: [G]: [3.387] *3.036* [3.657] *3.271* [3.560] [3.712] [3.324] [3.544] *2.888* [3.605] *3.097* *3.374* [3.789] [3.671] [4.038] [4.239] [G]: [H]: [4.159] [4.308] [4.259] [4.407] [4.381] [3.910] [4.550] [4.286] [4.199] [4.236] [4.204] [4.193] [3.763] [4.138] [3.874] [3.993] [H]: [I]: [4.076] [3.906] [3.534] [3.922] [3.972] [4.033] [3.635] [3.593] [3.923] [4.032] [4.069] [4.124] [4.036] [3.946] [4.176] [4.193] [I]: [J]: [3.425] [4.100] [3.569] [3.823] [3.775] [3.949] [3.570] [3.838] [3.826] [3.802] [4.269] [4.045] *3.318* [3.670] [3.379] [3.430] [J]: [K]: *3.227* [3.703] [3.756] [3.821] [4.004] [3.926] [3.687] [3.838] [3.355] [4.054] [3.111] [3.628] [3.918] [4.004] [4.162] [3.801] [K]: [L]: [3.954] [3.881] [4.253] [3.961] [3.955] [3.691] [4.071] [3.964] [4.243] [3.825] [3.636] [3.673] [3.608] [3.652] [3.941] [3.729] [L]: [M]: [4.029] [3.804] *3.410* [3.478] [3.689] [3.520] [3.512] [3.601] [3.723] [3.983] [3.936] [3.831] [4.048] [3.851] [4.197] [3.609] [M]: [N]: [3.587] [3.911] [3.666] [3.420] [3.500] [3.778] [3.603] [4.061] [3.826] [3.538] [4.064] [3.850] [3.676] *3.251* *3.334* [3.363] [N]: [Ñ]: [3.998] [3.956] [3.977] [4.192] [4.247] [3.732] [3.612] [4.369] [3.848] [4.286] [3.723] [3.428] [4.572] [3.921] [3.643] [3.909] [Ñ]: [O]: [4.451] [3.658] [3.953] [4.097] [3.653] [3.696] [4.260] [3.979] [4.728] [3.685] [3.624] [3.649] [3.531] [4.361] [3.758] [4.131] [O]: [P]: [3.801] [3.857] [3.955] [3.951] [3.976] [3.516] [4.110] [3.432] [3.759] [4.044] [4.235] [4.193] [4.077] [4.223] [4.275] [4.299] [P]: [Q]: [3.551] [3.661] [3.814] [3.533] [3.716] [4.027] [3.942] [3.946] [3.550] [3.656] [3.796] [4.026] [3.626] [3.739] *3.336* [3.795] [Q]: [R]: [4.233] [3.782] [3.665] [3.660] [3.826] [4.089] [4.095] [3.896] [3.688] [3.711] [3.867] [4.147] [3.902] [4.095] [3.555] [3.849] [R]: [S]: [3.762] [4.089] [4.225] [4.444] [3.938] [4.184] [4.173] [3.520] [4.056] [3.542] [3.571] [4.025] [3.592] [3.926] [3.846] [4.029] [S]: [T]: [3.442] [3.633] [3.509] [3.523] [3.374] [3.449] *3.240* *3.299* [3.689] [3.476] [3.914] [3.665] [3.888] [3.334] [4.125] *3.304* [T]: [U]: [3.525] [3.602] [4.120] [3.385] [3.787] [4.137] [3.688] [3.917] [3.417] [3.757] [3.860] [3.719] [3.708] [3.476] [3.925] [4.084] [U]: [V]: [4.239] [3.969] [4.196] [3.960] [4.195] [3.991] [3.692] [4.039] [3.688] [4.267] [3.982] [3.808] [4.080] [3.870] [4.186] [3.596] [V]: [W]: [4.121] [4.101] [3.765] [3.894] [3.785] [3.736] [4.117] [3.882] [3.760] [3.956] [3.733] [3.452] [3.733] [3.816] [3.926] [3.956] [W]: [X]: [3.803] [3.811] [3.476] [4.128] [4.142] [4.070] [3.781] [3.769] [3.806] [4.186] [4.330] [3.781] [3.927] [3.848] [4.135] [3.705] [X]: [Y]: [3.505] [3.572] [3.636] [4.072] [3.813] [3.665] [3.798] [3.849] [3.857] [3.763] [3.636] [4.095] [3.784] [3.694] [3.649] [3.900] [Y]: [Z]: [4.145] [4.271] [3.805] [4.226] [4.407] [4.101] [4.105] [4.285] [4.650] [4.407] [4.074] [4.088] [4.203] [4.460] [4.005] [4.178] [Z]: Column 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 Most likely password is: CCCACCCTGCCCCCNT xTotal 50.220 , xClearText 0.044 The table shows the distance of a letter distribution for each column of the cipher text to the letter distribution used for analysing. The value is calculated by x = sum[ sqrt( (n * f)**2 ) * 100 ] , over every letter of the alphabet. n ... the letter distribution found in the text, f ... letter distribution in the natural language Meaning that lower values represent distributions that follow more closely the natural language distribution. ( 0 being an identical distribution ) The most likely password is than generated by choosing the letter with the lowest x in for every column. Decrypt Text '''''''''''' To decrypt the text A1 with the password JSNGJCCTWAGQCTCXMDMKA and to store the result into clearText.txt python3 VigenereCrack.py ../../CriptoCompeticion/TextosConcurs/A1.txt JSNGJCCTWAGQCTCXMDMKA clearText.txt Decrypting file ../../CriptoCompeticion/TextosConcurs/A1.txt with password JSNGJCCTWAGQCTCXMDMKA, writing solution to clearText.txt Finding the right password '''''''''''''''''''''''''' If the most likely keys dont make up the password, used, its possible to let the script generate variations of close by passwords and encrypt parts of the cipher text with those passwords. The result will be fused together in an single pdf file and can than be used to guess the right password. To do this for the cipher text A1, a password length of 21 and to store the solution in output.pdf call python3 VigenereCrack.py ../../CriptoCompeticion/TextosConcurs/A1.txt 21 output.pdf Note: this will generate a sub folder called out containing a text file for every password and deciphered text Bugs #### Well, time will tell ... Notes ##### If you make any real of this application or want a neat feature, let me know! Author: Pasieka Manuel , [email protected]
About
Cracking Vignere Ciphers the easy way
Resources
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published