Skip to content

Instantly share code, notes, and snippets.

@sundowndev
Created October 12, 2019 15:14
Show Gist options
  • Save sundowndev/367213ef6baeec358c68cf63d410e888 to your computer and use it in GitHub Desktop.
Save sundowndev/367213ef6baeec358c68cf63d410e888 to your computer and use it in GitHub Desktop.

Revisions

  1. sundowndev created this gist Oct 12, 2019.
    50 changes: 50 additions & 0 deletions wifipass.py
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,50 @@
    #!/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)