#!/usr/bin/env python3 # -*- coding:utf-8 -*- """ Create a password that can be found/calculated without a computer, using binary to ascii conversion. Example: Consider the following binary code: 00101011 01011100 01000110 01111000 00110000 01000000 01011010 00101110 Hexa result: 2B 5C 46 78 30 40 5A 2E Ascii result (wifi password): +\Fx0@Z. """ import random import string import binascii import textwrap def randomword(length): letters = string.ascii_letters + string.digits + string.punctuation return ''.join(random.choice(letters) for i in range(length)) def text_to_bits(text, encoding='utf-8', errors='surrogatepass'): bits = bin(int.from_bytes(text.encode(encoding, errors), 'big'))[2:] return bits.zfill(8 * ((len(bits) + 7) // 8)) def main(length): password = randomword(length) binary = text_to_bits(password) hexa = textwrap.wrap(hex(int(binary, 2)), 2) print('Binary tree:') for i in range(0, length): text = textwrap.wrap(binary, 8) print('{}'.format(text[i])) print('\nPassword: {}'.format(password)) print('Hexa: {}'.format(' '.join(hexa[2:]))) if __name__ == '__main__': length = 10 main(length)