Skip to main content

Hacker Animation Cool Console Kryptographic Sequencer (haccks)

Project description

haccks animated logo

Hacker Animation Cool Console Kryptographic Sequencer (haccks)

Description

a digital rain code password decrypting effect library for Python, useful to visually represent character by-character secrets retrieval attacks. For example a binary search in a blind database injection.

inspired by the "cryptographic sequencer" from the Batman Arkham video games series and the phone number tracking effect from the Matrix movie intro

Usage

basic example
from haccks import Haccks

password = "T0psyKr33t!"

h = Haccks(len(password))

# guess 1 character by second
for i, c in enumerate(password):
    h.setCharacter(i, c)
    time.sleep(1)

basic example

change colors and framerate
from haccks import Haccks

h = Haccks(24, refreshDelay=1,
                    primaryColor="purple", secondaryColor="fuchsia")
h.setCharacter(0, 'A')
h.setCharacter(23, 'Z')

custom colors example

set a custom alphabet
from haccks import Haccks

alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!"#$%&()*+<>?'
e = Haccks(40, alphabet, refreshDelay=0.01,
                    primaryColor="yellow2", secondaryColor="aqua")


# cool animation: guess one random potential character by millisecond 
lal = [random.sample(list(alphabet), len(alphabet)) for _ in range(40)]
while True:
    r = random.randint(0, len(lal)-1)
    if len(lal[r]) > 1:
        e.removeCharsFromAlphabet(r, lal[r].pop())
        time.sleep(0.001)

custom colors example

call a custom method at the animation end
from haccks import Haccks

from blessed import Terminal

def myCustomEnding(term: Terminal):
    paddH = term.height // 2 - 2

    print(term.clear)
    print(term.move_yx(paddH, 0) + term.chocolate1 +
          term.center("It’s now safe to turn off"))
    print(term.move_yx(paddH+1, 0) + term.chocolate1 +
          term.center("your computer"))
    time.sleep(5)

h = Haccks(12, customEndingMethod=myCustomEnding)
...

custom colors example

Documentation

Please tell me if it's not clear
(it makes sense in my mind, but that's because i'm a genius :P)

# constructor of effect. immediatly displays fullscreen on terminal.
# ex: you know you have a 7 chars long secret to guess that can only be hexadecimal chars:
#   Haccks(7, '0123456789abcdef')

h = Haccks(
    numChars: int,               # number of "cracking" characters to display
    alphabet: str = "",          # possible chars shown.
    refreshDelay: float = 0.01,  # sleep time between each refresh of the effect

    # check blessed.readthedocs.io/en/latest/colors.html for available colors
    primaryColor: str = "green", # color of the found characters. 
    secondaryColor: str = "normal",

    customEndingMethod: Callable[[blessed.Terminal], None] = None # custom method called at end
)

# set a character as "decoded", won't change and will appear in PrimaryColor
# ex: you found with a certitude that the second char of your secret is 'c': 
#     h.setCharacter(1, 'c')

h.setCharacter(
    position: int   # index of the character
    character: str: # char to set
)

# remove possible characters from the alphabet of an index
# ex: you know that the third char of your secret cannot b 'Z': 
#     h.removeCharsFromAlphabet(2, 'Z')

h.removeCharsFromAlphabet(
    position: int,  # index of the character
    characters: str # chars to exclude from alphabet
)

features and todos

Done
  • some errors and automatic managements

    • removing alphabet characters will validate a character if there is only 1 char left.
    • if all characters are validated the ending is displayed
  • blazingly fast (printing characters one by one? nobody would try that...)

  • multiplatform (thanks to the blessed library)

  • customisable (colors, custom ending)

  • stoppable (type q to quit)

  • window resize aware

TODO
  • more customization?
    • non-fullscreen mode?
    • multiple secrets guesses?
  • use multiprocessing instead of threading ? (very small performance gain)
  • more? (pull requests are open)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

haccks-1.0.tar.gz (6.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

haccks-1.0-py3-none-any.whl (7.7 kB view details)

Uploaded Python 3

File details

Details for the file haccks-1.0.tar.gz.

File metadata

  • Download URL: haccks-1.0.tar.gz
  • Upload date:
  • Size: 6.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.9.20

File hashes

Hashes for haccks-1.0.tar.gz
Algorithm Hash digest
SHA256 ee3bfe3bc774d1a5518fd6511b7d92cbda84ba883c324635aef9402f94ef3e0a
MD5 040eafd530a4ab8b3132fcb969028085
BLAKE2b-256 a2f023099907f753da804542a2f4bd76854aedf26d16be94e4fd8a0f65fbad97

See more details on using hashes here.

File details

Details for the file haccks-1.0-py3-none-any.whl.

File metadata

  • Download URL: haccks-1.0-py3-none-any.whl
  • Upload date:
  • Size: 7.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.9.20

File hashes

Hashes for haccks-1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5d4091a3556583a1e7faa2a93543cc8f54c51915c720ad37f9f618eca8f35d27
MD5 d9517eab93cd7c52d4ff7957ab8701b2
BLAKE2b-256 cab86fc39576309a0e6f0a9bdde4ee39b4549ab91917747e305e26f474af7df6

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page