Magic Codes is a program that allows you to play around with coded messages. At it's very basics, without any sort of cryptographic or analytical plugins, it can help you perform simple conversions between data formats like text, binary, and hex. Add into that a plugin architecture and you can perform limitless operations on any of these data types.
Out of the box, it ships with a handful of plugins. With the power of Java interfaces, it takes mere minutes to add new functionality.
Please take a look at the demonstration for screenshots and examples.
Magic Codes was designed with two types of people in mind:
The intelligent nonprogrammer: There is a class of people who understand the concepts of secret codes and cryptography, but may not have a firm grasp of the underlying details and certainly do not know programming. This person may not know which tools to use or where to find them, or may have a half-dozen different online tools bookmarked. Often, this person might understand what a base conversion from hex to ASCII-text is but might not know how to do so by hand. This type of person would use Magic Codes as a "black box"--giving it inputs and receiving outputs without necessarily understanding the gritty details of what is going on behind the buttons and text fields.
The novice or lazy programmer: This is a class of people who understand the concepts of codes and cryptography and have some programming experience--perhaps only a little, perhaps a lot. This class of person either does not know how to make a full-fledged application or has done it so many times in the past that it becomes annoying to do so yet again. Either way, this class of user knows enough to write plugins, allowing Magic Codes to handle all of the user interface, error checking, input, output, and hex/binary/ASCII translations. This class of user would write new plugins, perhaps by copying an existing plugin and simply changing a single function.
Out of the box, Magic Codes ships with the following plugins:
|No-Op||This plugin does absolutely nothing. It performs no operation upon the input data. How could this possibly be useful? If you have the hex digits "48656C6C6F" and want to, say, convert them to ASCII text without having a plugin change anything, then this is the plugin to use.|
|XOR||This plugin does XOR "encryption/decryption" on the input data.|
|RotN||This plugin performs simple rotations (from 1 to 26) on the input data. If you are dealing with a simple Caesar cipher, this plugin will make the plaintext clear.|
|VigenereDecrypt||This plugin decrypts Vigenere ciphers. These are simple polyalphabetic substitution codes. You will need the correct key (or need to guess it).|
|VigenereCrypt||This plugin encrypts Vigenere ciphers. These are simple polyalphabetic substitution codes.|
|MD5||This plugin will calculate the MD5 checksum of the input data. While this is no substitute for a brute-force tool like John The Ripper, it makes spot-checking specific words or phrases easy.|
|BASE-64 Encoder||This plugin will convert binary input data into text-save BASE-64 output.|
|BASE-64 Decoder||This plugin will convert text-safe input data into binary output data.|
|TexelCode||This decrypts a variation of XOR code used during the MU Alternate Reality Game. The particular encoding algorithm is a chaining XOR. The first letter of the cyphertext is the same as plaintext. That letter is used as the key for the next ciphertext letter. The decryption of THAT letter is then the key for the following, etc. plainLetter(n) = cipherLetter(n) XOR plainLetter(n-1). This is not very useful in and of itself, but is here for historic purposes.|
|Analyze Frequency||This plugin analyzes letter frequencies on the input data. If the input data is a simple alphabetic substitution then certain coded letters will appear more often than others. This corresponds with the English language in which "E" appears most frequently, followed by "T," then "A." It should be noted that if the letter frequency detected matches that of English, you are likely not dealing with a substitution cipher, but a letter rearrangement.|
|XOR:Analysis||This plugin calculates the Index of Coincidence on different key lengths of your input. If you believe the input to be an XOR code, but do not know the plaintext or key, this plugin will help you determine whether it is XOR (and if so, the probable key length).|