Пример #1
0
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
Пример #2
0
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
Пример #3
0
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
Пример #5
0
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
Пример #6
0
    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)