ST3GG/ascii_art.py

250 lines
11 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"""
STEGOSAURUS WRECKS - ASCII Art & Visual Assets
🦕 The most epic steg tool of all time 🦕
"""
# Color codes for Rich
COLORS = {
"primary": "#00ff00", # Matrix green
"secondary": "#00ffff", # Cyan
"accent": "#ff00ff", # Magenta
"warning": "#ffff00", # Yellow
"error": "#ff0000", # Red
"muted": "#666666", # Gray
"white": "#ffffff",
"dark": "#0a0a0a",
}
# Main stegosaurus - large
STEGOSAURUS_LARGE = r"""
[green]
. .
/ `. .' \
.---. < > < > .---.
| \ \ - ~ ~ - / / |
~-..-~ ~-..-~
\~~~\.' `./~~~/
\__/ \__/
/ .- . \
_._ _.- .-~ ~-. / } \/~~~/
_.-'q }~ / } { ; \__/
{'__, / ( / { / `. ,googl
`\ \ | | } / \ ---__-..-'
`\ \ | `.___/-" -._ { / \ / /
`\ `.___| /\ | \ \ { ._..---' / /
`-.___/ | `-._ | \ `-.___ _/ /
| `----| `. ``---'' /
| | `----. __..--'
\ | .-' \'\'\'
\ | /
`. | '
`'---'`'-'
[/green]
"""
STEGOSAURUS_MEDIUM = r"""[green]
__
.' '.
: : [cyan]S T E G O S A U R U S[/cyan]
| _ _ | [magenta]W R E C K S[/magenta]
.--| o o |--.
/ '. .' \ [dim]>> LSB Steganography Suite <<[/dim]
/ / `~~` \ \
/ / \ \
/ .' /\ `. \
/ _.' .' `. `._ \
:.' / \ `.:
.' ; ; `.
/ _ | __ | _ \
| (o) | / \ | (o) |
| | | | | |
\ /| | | |\ /
'._ _' | \__/ | '._ _'
`` | | ``
|___ ___|
| `` |
/ || \
' | | '
/ \
' '
[/green]"""
STEGOSAURUS_SMALL = r"""[green]
__
/ '-.
/ .-. | [cyan]STEGOSAURUS[/cyan]
/.' \| [magenta]WRECKS[/magenta]
// |\ \
|| | \ | [dim]v2.0[/dim]
/|| | \ |
/ ||__/ \/
\ --' |\_\
'._____.' \/
[/green]"""
STEGOSAURUS_MINI = r"[green]🦕[/green]"
STEGOSAURUS_ASCII_SIMPLE = r"""
[green] .-. [cyan]╔═══════════════════════════════╗[/cyan]
/ \ [cyan]║[/cyan] [bold white]S T E G O S A U R U S[/bold white] [cyan]║[/cyan]
__./_ _\ [cyan]║[/cyan] [magenta]W R E C K S[/magenta] [cyan]║[/cyan]
/ , ' \ [cyan]╠═══════════════════════════════╣[/cyan]
| | o o | [cyan]║[/cyan] [dim]>> Ultimate Steg Suite <<[/dim] [cyan]║[/cyan]
\ \ ▽ / [cyan]║[/cyan] [dim]>> Encode • Decode • Inject[/dim] [cyan]║[/cyan]
'.`'---'`.' [cyan]╚═══════════════════════════════╝[/cyan]
`-----`[/green]
"""
# Banner for CLI
BANNER = r"""
[green]███████╗████████╗███████╗ ██████╗ ██████╗ ███████╗ █████╗ ██╗ ██╗██████╗ ██╗ ██╗███████╗
██╔════╝╚══██╔══╝██╔════╝██╔════╝ ██╔═══██╗██╔════╝██╔══██╗██║ ██║██╔══██╗██║ ██║██╔════╝
███████╗ ██║ █████╗ ██║ ███╗██║ ██║███████╗███████║██║ ██║██████╔╝██║ ██║███████╗
╚════██║ ██║ ██╔══╝ ██║ ██║██║ ██║╚════██║██╔══██║██║ ██║██╔══██╗██║ ██║╚════██║
███████║ ██║ ███████╗╚██████╔╝╚██████╔╝███████║██║ ██║╚██████╔╝██║ ██║╚██████╔╝███████║
╚══════╝ ╚═╝ ╚══════╝ ╚═════╝ ╚═════╝ ╚══════╝╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝ ╚═════╝ ╚══════╝[/green]
[cyan] ██╗ ██╗██████╗ ███████╗ ██████╗██╗ ██╗███████╗
██║ ██║██╔══██╗██╔════╝██╔════╝██║ ██╔╝██╔════╝
██║ █╗ ██║██████╔╝█████╗ ██║ █████╔╝ ███████╗
██║███╗██║██╔══██╗██╔══╝ ██║ ██╔═██╗ ╚════██║
╚███╔███╔╝██║ ██║███████╗╚██████╗██║ ██╗███████║
╚══╝╚══╝ ╚═╝ ╚═╝╚══════╝ ╚═════╝╚═╝ ╚═╝╚══════╝[/cyan]
"""
BANNER_SMALL = r"""
[green]╔═╗╔╦╗╔═╗╔═╗╔═╗╔═╗╔═╗╦ ╦╦═╗╦ ╦╔═╗[/green] [cyan]╦ ╦╦═╗╔═╗╔═╗╦╔═╔═╗[/cyan]
[green]╚═╗ ║ ║╣ ║ ╦║ ║╚═╗╠═╣║ ║╠╦╝║ ║╚═╗[/green] [cyan]║║║╠╦╝║╣ ║ ╠╩╗╚═╗[/cyan]
[green]╚═╝ ╩ ╚═╝╚═╝╚═╝╚═╝╩ ╩╚═╝╩╚═╚═╝╚═╝[/green] [cyan]╚╩╝╩╚═╚═╝╚═╝╩ ╩╚═╝[/cyan]
"""
BANNER_MINI = "[green]◤[bold]STEGOSAURUS[/bold][/green] [cyan][bold]WRECKS[/bold][/cyan]"
# Loading animation frames
LOADING_FRAMES = [
"[green]🦕 [/green]",
"[green] 🦕 [/green]",
"[green] 🦕 [/green]",
"[green] 🦕 [/green]",
"[green] 🦕 [/green]",
"[green] 🦕 [/green]",
"[green] 🦕 [/green]",
"[green] 🦕[/green]",
"[green] 🦕 [/green]",
"[green] 🦕 [/green]",
"[green] 🦕 [/green]",
"[green] 🦕 [/green]",
"[green] 🦕 [/green]",
"[green] 🦕 [/green]",
]
# Encode animation
ENCODE_FRAMES = [
"[green]▓[/green]░░░░░░░░░",
"[green]▓▓[/green]░░░░░░░░",
"[green]▓▓▓[/green]░░░░░░░",
"[green]▓▓▓▓[/green]░░░░░░",
"[green]▓▓▓▓▓[/green]░░░░░",
"[green]▓▓▓▓▓▓[/green]░░░░",
"[green]▓▓▓▓▓▓▓[/green]░░░",
"[green]▓▓▓▓▓▓▓▓[/green]░░",
"[green]▓▓▓▓▓▓▓▓▓[/green]░",
"[green]▓▓▓▓▓▓▓▓▓▓[/green]",
]
# Matrix rain characters
MATRIX_CHARS = "ハミヒーウシナモニサワツオリアホテマケメエカキムユラセネスタヌヘ01234567890"
# Box drawing characters for panels
BOX = {
"tl": "", "tr": "", "bl": "", "br": "",
"h": "", "v": "",
"tl_r": "", "tr_r": "", "bl_r": "", "br_r": "",
"h_s": "", "v_s": "",
}
# Status indicators
STATUS = {
"success": "[green]✓[/green]",
"error": "[red]✗[/red]",
"warning": "[yellow]⚠[/yellow]",
"info": "[cyan][/cyan]",
"loading": "[magenta]◐[/magenta]",
"encode": "[green]⬆[/green]",
"decode": "[cyan]⬇[/cyan]",
"lock": "[yellow]🔒[/yellow]",
"unlock": "[green]🔓[/green]",
"key": "[yellow]🔑[/yellow]",
"file": "[blue]📄[/blue]",
"image": "[magenta]🖼[/magenta]",
"dino": "[green]🦕[/green]",
}
# Progress bar styles
PROGRESS_STYLE = {
"complete": "[green]█[/green]",
"incomplete": "[dim]░[/dim]",
"head": "[cyan]▓[/cyan]",
}
# Glitch text for effects
def glitch_text(text: str, intensity: int = 1) -> str:
"""Add glitch effects to text"""
glitch_chars = "!@#$%^&*()_+-=[]{}|;':\",./<>?`~"
import random
result = []
for char in text:
if random.random() < 0.1 * intensity:
result.append(f"[red]{random.choice(glitch_chars)}[/red]")
else:
result.append(char)
return ''.join(result)
# Cyber-styled section headers
def section_header(title: str, width: int = 60) -> str:
"""Create a cyber-styled section header"""
padding = (width - len(title) - 4) // 2
return f"[cyan]{'' * padding}[/cyan][green]《 {title} 》[/green][cyan]{'' * padding}[/cyan]"
def box_text(text: str, style: str = "green", width: int = 60) -> str:
"""Wrap text in a styled box"""
lines = text.split('\n')
max_len = max(len(line) for line in lines)
padded_width = max(max_len + 4, width)
result = [f"[{style}]╔{'' * (padded_width - 2)}╗[/{style}]"]
for line in lines:
padding = padded_width - len(line) - 4
result.append(f"[{style}]║[/{style}] {line}{' ' * padding} [{style}]║[/{style}]")
result.append(f"[{style}]╚{'' * (padded_width - 2)}╝[/{style}]")
return '\n'.join(result)
# Channel visualization
CHANNEL_DISPLAY = {
"R": "[red]█R█[/red]",
"G": "[green]█G█[/green]",
"B": "[blue]█B█[/blue]",
"A": "[white]█A█[/white]",
}
def channel_bar(channels: str) -> str:
"""Create a visual channel indicator"""
return " ".join(CHANNEL_DISPLAY.get(c, f"[dim]█{c}█[/dim]") for c in channels)
# Taglines / quotes
TAGLINES = [
"S̷̛̤̼̥̹͚͈̓̽̂E̴̳̘͕͍̯̮͖̖͚͋̋͠Ȩ̶͕̪͈̋ͅḌ̴̮͙̯̅̿̈́͐̏ ̷̳̗̟͕͐͂͒̉̑̕T̶̡͖͕̬̺̪̼̂̋̎̾̓͠ͅḪ̷̼͈̝̯̉͆̓̔̒̿̀̈́E̷̝̰͔̺͛̋͌̂̚ ̴̡̡̳̭̹͐̉̈̑F̵̫̜͆́̄͆͑̍́͆͠U̶̪̖̖̻̫͙̓̆̓͜T̵̛͔̭͈̙̙̠̜̤̠̓́́̈̕̕Ȕ̵̜͎̘̞̯͍̦̫͖̆Ŗ̶͍͓̤̪͍̦͔͙̿Ȩ̵͈̹̬͓̝̮̟̎̓͒̀̈́ 🔮",
".-.-.-.-<={LOVE PLINY}=>-.-.-.-.",
">> Hide in plain sight <<",
">> The pixels have secrets <<",
">> What you see is not what you get <<",
">> 65 million years of evolution <<",
">> Least Significant. Most Powerful. <<",
]
FOOTER = "[dim].-.-.-.-<={LOVE PLINY}=>-.-.-.-.[/dim]"