Repository navigation
Expand file tree
/
Copy pathbanner.py
More file actions
130 lines (89 loc) · 13.2 KB
/
Copy pathbanner.py
File metadata and controls
130 lines (89 loc) · 13.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
#!/usr/bin/env python3
import time
import sys
import random
from datetime import datetime
from static.version import __version__, check_for_update
BANNER_TEXT = """\033[0m \033[m
\033[0m \033[38;5;78;48;5;78m▄\033[38;5;35;48;5;36m▄\033[0m\033[38;5;23;48;5;235m▄\033[38;5;29;48;5;235m▄\033[38;5;35;48;5;235m▄\033[38;5;235;48;5;235m▄\033[0m \033[m
\033[0m \033[38;5;78;48;5;235m▄\033[48;5;78m \033[38;5;78;48;5;23m▄\033[0m\033[38;5;23;48;5;235m▄\033[38;5;29;48;5;235m▄\033[38;5;235;48;5;238m▄\033[0m\033[38;5;235;48;5;237m▄\033[0m \033[m
\033[0m \033[38;5;29;48;5;235m▄\033[38;5;236;48;5;235m▄\033[38;5;23;48;5;235m▄\033[38;5;29;48;5;235m▄\033[38;5;236;48;5;235m▄\033[38;5;29;48;5;235m▄\033[0m \033[38;5;29;48;5;235m▄\033[0m\033[38;5;29;48;5;235m▄\033[0m\033[38;5;29;48;5;235m▄\033[0m\033[38;5;29;48;5;235m▄\033[0m \033[38;5;29;48;5;235m▄\033[0m\033[38;5;29;48;5;235m▄\033[0m\033[38;5;29;48;5;235m▄\033[0m\033[38;5;29;48;5;235m▄▄▄▄▄▄▄▄▄▄\033[0m \033[38;5;42;48;5;235m▄\033[38;5;238;48;5;78m▄\033[38;5;235;48;5;78m▄▄\033[38;5;29;48;5;235m▄\033[0m\033[38;5;235;48;5;235m▄\033[38;5;78;48;5;235m▄▄\033[38;5;78;48;5;29m▄\033[38;5;35;48;5;29m▄\033[38;5;36;48;5;235m▄\033[38;5;29;48;5;235m▄\033[0m \033[38;5;36;48;5;235m▄▄\033[38;5;237;48;5;235m▄\033[0m\033[38;5;36;48;5;235m▄\033[0m\033[38;5;36;48;5;235m▄▄▄▄▄▄▄▄▄▄\033[0m\033[38;5;36;48;5;235m▄▄▄▄▄▄▄▄▄▄\033[0m\033[38;5;35;48;5;235m▄\033[38;5;36;48;5;235m▄▄▄▄▄▄▄▄\033[38;5;35;48;5;235m▄\033[38;5;23;48;5;235m▄\033[0m \033[m
\033[0m \033[48;5;78m \033[48;5;237m \033[48;5;35m \033[48;5;36m \033[48;5;237m \033[48;5;78m \033[0m \033[48;5;42m \033[0m\033[48;5;78m \033[0m\033[48;5;78m \033[0m\033[48;5;78m \033[0m \033[48;5;78m \033[0m\033[48;5;78m \033[0m\033[48;5;78m \033[0m\033[38;5;78;48;5;29m▄\033[38;5;78;48;5;235m▄▄▄▄▄▄▄▄▄\033[0m \033[38;5;29;48;5;235m▄\033[0m \033[38;5;78;48;5;29m▄\033[38;5;78;48;5;235m▄\033[0m \033[48;5;29m \033[0m\033[48;5;23m \033[48;5;78m \033[48;5;35m \033[0m \033[48;5;78m \033[48;5;237m \033[0m\033[48;5;78m \033[0m\033[38;5;78;48;5;235m▄▄▄▄▄▄▄▄▄▄\033[0m\033[38;5;78;48;5;235m▄▄▄▄▄▄▄▄▄▄\033[0m\033[48;5;36m \033[38;5;235;48;5;235m▄\033[38;5;78;48;5;235m▄▄▄▄▄▄▄▄▄\033[38;5;235;48;5;78m▄\033[38;5;78;48;5;236m▄\033[38;5;235;48;5;235m▄\033[0m \033[m
\033[0m \033[48;5;78m \033[48;5;237m \033[48;5;35m \033[48;5;36m \033[48;5;237m \033[48;5;78m \033[0m \033[48;5;42m \033[0m\033[48;5;78m \033[0m\033[48;5;78m \033[0m\033[48;5;78m \033[0m \033[48;5;78m \033[0m\033[48;5;78m \033[0m\033[48;5;78m \033[0m\033[38;5;29;48;5;29m▄\033[38;5;237;48;5;238m▄▄▄▄▄▄▄▄▄\033[0m \033[38;5;78;48;5;235m▄▄▄▄▄\033[38;5;29;48;5;238m▄\033[0m\033[48;5;78m \033[38;5;78;48;5;78m\033[48;5;78m \033[0m\033[38;5;35;48;5;78m▄\033[38;5;29;48;5;78m▄\033[48;5;23m \033[48;5;78m \033[48;5;35m \033[0m \033[48;5;78m \033[48;5;237m \033[0m\033[48;5;78m \033[0m\033[38;5;235;48;5;29m▄▄▄▄\033[38;5;36;48;5;29m▄\033[38;5;78;48;5;29m▄\033[38;5;238;48;5;29m▄\033[38;5;235;48;5;29m▄▄▄\033[0m\033[38;5;235;48;5;29m▄▄▄\033[38;5;237;48;5;29m▄\033[38;5;78;48;5;29m▄▄\033[38;5;235;48;5;29m▄▄▄▄\033[0m\033[48;5;36m \033[0m\033[48;5;236m \033[38;5;78;48;5;29m▄\033[38;5;235;48;5;29m▄▄▄▄▄\033[38;5;235;48;5;23m▄\033[38;5;78;48;5;235m▄\033[38;5;235;48;5;78m▄\033[38;5;78;48;5;235m▄\033[38;5;235;48;5;78m▄\033[38;5;238;48;5;235m▄\033[0m \033[m
\033[0m \033[48;5;78m \033[48;5;237m \033[48;5;35m \033[48;5;36m \033[48;5;237m \033[48;5;78m \033[0m \033[48;5;42m \033[0m\033[48;5;78m \033[0m\033[48;5;78m \033[0m\033[48;5;78m \033[0m \033[48;5;78m \033[0m\033[48;5;78m \033[0m\033[48;5;78m \033[0m\033[48;5;29m \033[0m \033[38;5;35;48;5;235m▄\033[48;5;78m \033[38;5;235;48;5;78m▄▄\033[48;5;78m \033[38;5;78;48;5;78m▄\033[38;5;235;48;5;78m▄▄\033[38;5;78;48;5;29m▄\033[0m\033[38;5;235;48;5;78m▄▄\033[0m \033[48;5;29m \033[0m\033[48;5;23m \033[48;5;78m \033[48;5;35m \033[0m \033[48;5;78m \033[48;5;237m \033[0m\033[48;5;78m \033[0m \033[48;5;36m \033[48;5;78m \033[48;5;238m \033[0m \033[48;5;237m \033[48;5;78m \033[0m \033[48;5;36m \033[0m\033[48;5;236m \033[48;5;78m \033[38;5;235;48;5;78m▄▄▄▄▄\033[38;5;78;48;5;236m▄\033[38;5;23;48;5;78m▄\033[38;5;235;48;5;236m▄\033[38;5;23;48;5;235m▄\033[48;5;78m \033[0m \033[m
\033[0m \033[48;5;78m \033[48;5;237m \033[48;5;35m \033[48;5;36m \033[48;5;237m \033[48;5;78m \033[38;5;235;48;5;36m▄▄▄▄▄▄▄\033[38;5;42;48;5;78m▄\033[0m\033[48;5;78m \033[0m\033[48;5;78m \033[0m\033[48;5;78m \033[0m \033[48;5;78m \033[0m\033[48;5;78m \033[0m\033[48;5;78m \033[0m\033[38;5;29;48;5;78m▄\033[38;5;235;48;5;36m▄▄▄▄\033[38;5;235;48;5;23m▄\033[0m \033[48;5;78m \033[38;5;78;48;5;235m▄\033[38;5;78;48;5;23m▄\033[38;5;235;48;5;36m▄\033[38;5;29;48;5;78m▄\033[38;5;78;48;5;235m▄\033[38;5;78;48;5;42m▄\033[48;5;78m \033[0m \033[48;5;29m \033[0m\033[48;5;23m \033[48;5;78m \033[48;5;35m \033[38;5;235;48;5;36m▄▄▄▄▄\033[48;5;78m \033[48;5;237m \033[0m\033[48;5;78m \033[0m \033[48;5;36m \033[48;5;78m \033[48;5;238m \033[0m \033[48;5;237m \033[48;5;78m \033[0m \033[48;5;36m \033[0m\033[48;5;236m \033[48;5;78m \033[38;5;29;48;5;235m▄\033[38;5;78;48;5;235m▄▄▄▄\033[38;5;23;48;5;78m▄\033[38;5;78;48;5;23m▄\033[38;5;236;48;5;235m▄\033[38;5;236;48;5;23m▄\033[48;5;78m \033[0m \033[m
\033[0m \033[48;5;78m \033[48;5;237m \033[48;5;35m \033[48;5;36m \033[48;5;237m \033[48;5;78m \033[38;5;23;48;5;78m▄▄▄▄▄▄▄\033[38;5;78;48;5;78m▄\033[0m\033[48;5;78m \033[0m\033[48;5;78m \033[0m\033[48;5;78m \033[0m \033[48;5;78m \033[0m\033[48;5;78m \033[0m\033[48;5;78m \033[0m\033[38;5;35;48;5;78m▄\033[38;5;23;48;5;78m▄▄▄▄\033[38;5;237;48;5;23m▄\033[0m \033[38;5;78;48;5;235m▄\033[38;5;36;48;5;235m▄\033[38;5;235;48;5;36m▄\033[48;5;78m \033[38;5;29;48;5;78m▄\033[38;5;235;48;5;23m▄\033[38;5;78;48;5;235m▄\033[38;5;235;48;5;235m▄\033[0m \033[48;5;29m \033[0m\033[48;5;23m \033[48;5;78m \033[48;5;35m \033[38;5;29;48;5;78m▄▄▄▄▄\033[48;5;78m \033[48;5;237m \033[0m\033[48;5;78m \033[0m \033[48;5;36m \033[48;5;78m \033[48;5;238m \033[0m \033[48;5;237m \033[48;5;78m \033[0m \033[48;5;36m \033[0m\033[48;5;236m \033[48;5;78m \033[38;5;29;48;5;235m▄\033[38;5;36;48;5;235m▄▄▄▄\033[38;5;235;48;5;35m▄\033[38;5;35;48;5;23m▄\033[38;5;236;48;5;78m▄\033[38;5;78;48;5;235m▄\033[38;5;235;48;5;23m▄\033[0m \033[m
\033[0m \033[48;5;78m \033[48;5;237m \033[48;5;35m \033[48;5;36m \033[48;5;237m \033[48;5;78m \033[38;5;235;48;5;235m▄▄▄▄▄▄▄\033[38;5;42;48;5;42m▄\033[0m\033[48;5;78m \033[0m\033[48;5;78m \033[0m\033[48;5;78m \033[0m \033[48;5;78m \033[0m\033[48;5;78m \033[0m\033[48;5;78m \033[0m\033[38;5;29;48;5;29m▄\033[38;5;235;48;5;235m▄▄▄▄▄\033[0m \033[38;5;78;48;5;235m▄\033[48;5;78m \033[38;5;78;48;5;235m▄\033[38;5;23;48;5;78m▄\033[38;5;235;48;5;78m▄▄▄▄\033[38;5;42;48;5;235m▄\033[38;5;78;48;5;236m▄\033[48;5;78m \033[38;5;78;48;5;36m▄\033[38;5;235;48;5;235m▄\033[0m\033[48;5;29m \033[0m\033[48;5;23m \033[48;5;78m \033[48;5;35m \033[0m \033[48;5;78m \033[48;5;237m \033[0m\033[48;5;78m \033[0m \033[48;5;36m \033[48;5;78m \033[48;5;238m \033[0m \033[48;5;237m \033[48;5;78m \033[0m \033[48;5;36m \033[0m\033[48;5;236m \033[48;5;78m \033[38;5;235;48;5;29m▄\033[38;5;235;48;5;78m▄▄▄▄▄\033[38;5;78;48;5;237m▄\033[38;5;29;48;5;29m▄\033[38;5;235;48;5;23m▄\033[0m \033[m
\033[0m \033[48;5;78m \033[48;5;237m \033[48;5;35m \033[48;5;36m \033[48;5;237m \033[48;5;78m \033[0m \033[48;5;42m \033[0m\033[48;5;78m \033[0m\033[48;5;78m \033[0m\033[48;5;78m \033[0m \033[48;5;78m \033[0m\033[48;5;78m \033[0m\033[48;5;78m \033[0m\033[38;5;42;48;5;29m▄\033[38;5;36;48;5;235m▄▄▄▄▄▄▄▄▄\033[0m \033[38;5;235;48;5;35m▄\033[38;5;235;48;5;78m▄\033[0m\033[38;5;235;48;5;36m▄\033[38;5;23;48;5;78m▄\033[48;5;78m \033[38;5;78;48;5;35m▄\033[48;5;78m \033[38;5;235;48;5;78m▄\033[38;5;235;48;5;237m▄\033[38;5;235;48;5;23m▄\033[38;5;235;48;5;78m▄\033[0m \033[48;5;29m \033[0m\033[48;5;23m \033[48;5;78m \033[48;5;35m \033[0m \033[48;5;78m \033[48;5;237m \033[0m\033[48;5;78m \033[0m \033[48;5;36m \033[48;5;78m \033[48;5;238m \033[0m \033[48;5;237m \033[48;5;78m \033[0m \033[48;5;36m \033[0m\033[48;5;236m \033[48;5;78m \033[38;5;235;48;5;29m▄\033[38;5;235;48;5;78m▄▄▄▄\033[38;5;235;48;5;29m▄\033[0m \033[m
\033[0m \033[48;5;78m \033[48;5;237m \033[48;5;35m \033[48;5;36m \033[48;5;237m \033[48;5;78m \033[0m \033[48;5;42m \033[0m\033[48;5;78m \033[0m\033[48;5;78m \033[0m\033[48;5;78m \033[0m \033[48;5;78m \033[0m\033[48;5;78m \033[0m\033[48;5;78m \033[0m\033[38;5;78;48;5;29m▄\033[38;5;78;48;5;235m▄▄▄▄▄▄▄▄▄\033[0m \033[38;5;23;48;5;78m▄\033[48;5;78m \033[38;5;78;48;5;78m▄\033[38;5;237;48;5;78m▄\033[38;5;235;48;5;78m▄\033[38;5;235;48;5;35m▄\033[0m \033[38;5;235;48;5;78m▄▄\033[38;5;78;48;5;78m▄\033[48;5;78m \033[38;5;235;48;5;235m▄\033[0m \033[48;5;29m \033[0m\033[48;5;23m \033[48;5;78m \033[48;5;35m \033[0m \033[48;5;78m \033[48;5;237m \033[0m\033[48;5;78m \033[0m \033[48;5;36m \033[48;5;78m \033[48;5;238m \033[0m \033[48;5;237m \033[48;5;78m \033[0m \033[48;5;36m \033[0m\033[48;5;236m \033[48;5;78m \033[0m \033[m
\033[0m \033[38;5;235;48;5;78m▄\033[38;5;235;48;5;237m▄\033[38;5;235;48;5;35m▄\033[38;5;235;48;5;36m▄\033[38;5;235;48;5;237m▄\033[38;5;235;48;5;78m▄\033[0m \033[38;5;235;48;5;42m▄\033[0m\033[38;5;235;48;5;78m▄\033[0m\033[38;5;235;48;5;78m▄\033[0m\033[38;5;235;48;5;78m▄\033[0m \033[38;5;235;48;5;78m▄\033[0m\033[38;5;235;48;5;78m▄\033[0m\033[38;5;235;48;5;78m▄\033[0m\033[38;5;235;48;5;35m▄\033[38;5;235;48;5;29m▄▄▄▄▄▄▄▄▄\033[0m \033[38;5;235;48;5;78m▄▄\033[0m \033[38;5;235;48;5;237m▄\033[38;5;235;48;5;78m▄\033[38;5;235;48;5;42m▄\033[0m \033[38;5;235;48;5;29m▄\033[0m\033[38;5;235;48;5;23m▄\033[38;5;235;48;5;78m▄\033[38;5;235;48;5;35m▄\033[0m \033[38;5;235;48;5;78m▄▄\033[38;5;235;48;5;237m▄\033[0m\033[38;5;235;48;5;78m▄\033[0m \033[38;5;235;48;5;36m▄\033[38;5;235;48;5;78m▄\033[38;5;235;48;5;238m▄\033[0m \033[38;5;235;48;5;237m▄\033[38;5;235;48;5;78m▄▄\033[0m \033[38;5;235;48;5;36m▄\033[38;5;235;48;5;235m▄\033[38;5;235;48;5;78m▄▄\033[0m \033[m
\033[0m"""
SUBTITLE_TEMPLATE = "HExHTTP({}) is a tool designed to perform tests on HTTP headers."
def clear_full():
sys.stdout.write("\033[2J\033[H")
sys.stdout.flush()
def move_cursor(y, x=1):
sys.stdout.write(f"\033[{y};{x}H")
sys.stdout.flush()
def hide_cursor():
sys.stdout.write("\033[?25l")
sys.stdout.flush()
def show_cursor():
sys.stdout.write("\033[?25h")
sys.stdout.flush()
def erase_cell(y, x):
move_cursor(y, x)
sys.stdout.write(" ")
sys.stdout.flush()
def is_christmas_period():
now = datetime.now()
return now.month == 12 or (now.month == 1 and now.day == 1)
FALLING_OBJECTS = ["❄", "⭐", "🎄", "🎁", "✨", "🔵", "🟣", "🟢", "🔴", "🎅", "⛄", "🦌"]
def falling_animation(start_y, height, width, density=0.15, duration=0.7):
hide_cursor()
start_time = time.time()
active = []
while time.time() - start_time < duration:
if random.random() < density:
active.append([start_y, random.randint(1, width), random.choice(FALLING_OBJECTS)])
new_active = []
for (y, x, symbol) in active:
erase_cell(y, x)
new_y = y + 1
if new_y < start_y + height:
move_cursor(new_y, x)
sys.stdout.write(symbol)
sys.stdout.flush()
new_active.append([new_y, x, symbol])
else:
erase_cell(y, x)
active = new_active
time.sleep(0.03)
for (y, x, _) in active:
erase_cell(y, x)
show_cursor()
def print_final_banner():
#clear_full()
print(BANNER_TEXT)
subtitle = SUBTITLE_TEMPLATE.format(__version__)
print()
print(subtitle)
print("\n")
check_for_update(__version__)
def run_banner():
if is_christmas_period():
clear_full()
print(BANNER_TEXT)
banner_lines = BANNER_TEXT.count("\n")
width = 120
top_y = 1
falling_animation(
start_y=top_y,
height=banner_lines,
width=width,
density=0.24,
duration=1.5
)
print_final_banner()
if __name__ == "__main__":
run_banner()