code: def cracked(self):
          
          logging.info("Cracking message: {0}".format(self.message))
          entropy_values = {}
          attempt_cache = {}
          message = self.message
          for i in range(25):
              self.message = message
              self.offset = i * -1
              logging.debug("Attempting crack with offset: "
                            "{0}".format(self.offset))
              test_cipher = self.cipher()
              logging.debug("Attempting plaintext: {0}".format(test_cipher))
              entropy_values[i] = self.calculate_entropy(test_cipher)
              attempt_cache[i] = test_cipher
  
          sorted_by_entropy = sorted(entropy_values, key=entropy_values.get)
          self.offset = sorted_by_entropy[0] * -1
          cracked_text = attempt_cache[sorted_by_entropy[0]]
          self.message = cracked_text
  
          logging.debug("Entropy scores: {0}".format(entropy_values))
          logging.debug("Lowest entropy score: "
                        "{0}".format(str(entropy_values[sorted_by_entropy[0]])))
          logging.debug("Most likely offset: {0}".format(self.offset))
          logging.debug("Most likely message: {0}".format(cracked_text))
  
          return cracked_text
docs: Attempts to crack ciphertext using frequency of letters in English.
  
          Returns:
              String of most likely message.