def hack_affine(message): for key in range(len(affine_cipher.SYMBOLS) ** 2): key_a = affine_cipher.get_key_parts(key)[0] if cryptomath.gcd(key_a, len(affine_cipher.SYMBOLS)) != 1: continue text_decrypted = affine_cipher.decrypt_message(key, message) OUTPUT_FILE_OBJ.write("Tried Key %s... (%s)\n" % (key, text_decrypted[:40])) if not SILENT_MODE: print("Tried Key %s: %s..." % (key, text_decrypted[:100])) if detect_english.is_english(text_decrypted): global TIME_CHECKPOINT = time.time() - TIME_CHECKPOINT global TIME_ELAPSED += TIME_CHECKPOINT print("\nPossible encryption hack:") print("Key: %s" % (key)) print("Decrypted message: " + text_decrypted[:200]) print("\nEnter D for done, or just press Enter to continue hacking:") response = input("> ") if response.strip().upper().startswith("D"): OUTPUT_FILE_OBJ.write("\n\nKey used: %s\nDecrypted message: %s" % (key, text_decrypted)) OUTPUT_FILE_OBJ.write("\nTotal time elapsed: %s" % (format(TIME_ELAPSED, ".5f"))) OUTPUT_FILE_OBJ.close() return text_decrypted TIME_ELAPSED = time.time() - TIME_START OUTPUT_FILE_OBJ.write("\nDecryption failed.") OUTPUT_FILE_OBJ.write("\nTotal time elapsed: %s" % (format(TIME_ELAPSED, ".5f"))) OUTPUT_FILE_OBJ.close() return None
def hack_transposition(msg): """Hack transposition cipher. :param msg: the input message :type msg: str :return: decrypted message or None """ print("Hacking...") print("(Press Ctrl-C to quit at any time.)") for key in range(1, len(msg)): print("Trying key #{}...".format(key)) decrypted_text = decrypt(key, msg) if is_english(decrypted_text): print() print("Possible encryption hack:") print("Key {}: {}".format(key, decrypted_text[:100])) print() print("Enter D if done, anything else to continue hacking:") response = input("> ") if response.strip().upper().startswith("D"): return decrypted_text return None
def find_single_char_xor(byt: bytes) -> List[bytes]: matching_keys = [] for i in range(0, 256): key = int_to_byte(i) deciphered_byt = repeating_key_xor(byt, key) if is_english(deciphered_byt): matching_keys.append(key) return matching_keys
def hack_transposition(message): for key in range(1, len(message)): print("Trying key #%s..." % (key)) text_decrypted = transposition_decrypt.decrypt_message(key, message) if detect_english.is_english(text_decrypted): print("\nPossible encryption hack:") print("Key %s: %s" % (key, text_decrypted[:100])) print("\nEnter D if done, anything else to continue hacking:") response = input("> ") if response.strip().upper().startswith("D"): return text_decrypted return None
def hack_transposition(message, dict_path): """Calls transposition_cipher_decryption module and dectect_english module too brute-force decrypt cipher text. """ print('Decryption in process. Press Ctrl-C to interrupt and exit.') for key in range(1, len(message)): print(f'Trying key: {key}') decrypted_text = transposition_cipher_decryption.decrypt_message( key, message) if detect_english.is_english(decrypted_text, dict_path): print('\nPossible decryption:') print(f'Key {key}: {decrypted_text[:100]}') return decrypted_text print('Decryption unsuccessful.') return None
def parse(self, response): # get author name for x in response.css('.desktop'): NAME_SELECTOR = 'head title ::text' author = x.css(NAME_SELECTOR).extract_first() author = author.split() author = author[-2] + ' ' + author[-1] author = author.strip("'") author = author.strip("'.") #soren kierkgaard only #author = author.replace('ø', 'o') break # get quote information SET_SELECTOR = '.quoteText' for quotes in response.css(SET_SELECTOR): NAME_SELECTOR = '::text' raw_text = quotes.css(NAME_SELECTOR).extract_first().strip() # check if text is english if is_english(raw_text) == False: continue # check if text is too long for twitter if len(raw_text) >= 280: continue yield { 'quote': raw_text.strip('“' '”' u'…' u'—' u'’'), 'author': author } #""" # go to next page NEXT_PAGE_SELECTOR = '.next_page ::attr(href)' next_page = response.css(NEXT_PAGE_SELECTOR).extract_first() if next_page: yield scrapy.Request(response.urljoin(next_page), callback=self.parse)