Linux tsuru-no-tsurugi 5.15.0-186-generic #196-Ubuntu SMP Sat Jun 20 16:09:34 UTC 2026 x86_64
Apache/2.4.52 (Ubuntu)
Server IP : 192.168.0.18 & Your IP : 216.73.216.68
Domains :
Cant Read [ /etc/named.conf ]
User : www-data
Terminal
Auto Root
Create File
Create Folder
Localroot Suggester
Backdoor Destroyer
Readme
/
usr /
lib /
python3 /
dist-packages /
pip /
_vendor /
rich /
Delete
Unzip
Name
Size
Permission
Date
Action
__pycache__
[ DIR ]
drwxr-xr-x
2025-12-31 20:40
__init__.py
5.67
KB
-rw-r--r--
2025-09-23 04:44
__main__.py
8.6
KB
-rw-r--r--
2025-09-23 04:44
_cell_widths.py
9.86
KB
-rw-r--r--
2025-09-23 04:44
_emoji_codes.py
136.95
KB
-rw-r--r--
2025-09-23 04:44
_emoji_replace.py
1.04
KB
-rw-r--r--
2025-09-23 04:44
_extension.py
265
B
-rw-r--r--
2025-09-23 04:44
_inspect.py
7.27
KB
-rw-r--r--
2025-09-23 04:44
_log_render.py
3.15
KB
-rw-r--r--
2025-09-23 04:44
_loop.py
1.21
KB
-rw-r--r--
2025-09-23 04:44
_lru_cache.py
1.22
KB
-rw-r--r--
2025-09-23 04:44
_palettes.py
6.9
KB
-rw-r--r--
2025-09-23 04:44
_pick.py
423
B
-rw-r--r--
2025-09-23 04:44
_ratio.py
5.34
KB
-rw-r--r--
2025-09-23 04:44
_spinners.py
25.9
KB
-rw-r--r--
2025-09-23 04:44
_stack.py
351
B
-rw-r--r--
2025-09-23 04:44
_timer.py
417
B
-rw-r--r--
2025-09-23 04:44
_windows.py
2.02
KB
-rw-r--r--
2025-09-23 04:44
_wrap.py
1.76
KB
-rw-r--r--
2025-09-23 04:44
abc.py
890
B
-rw-r--r--
2025-09-23 04:44
align.py
10.18
KB
-rw-r--r--
2025-09-23 04:44
ansi.py
6.52
KB
-rw-r--r--
2025-09-23 04:44
bar.py
3.19
KB
-rw-r--r--
2025-09-23 04:44
box.py
8.86
KB
-rw-r--r--
2025-09-23 04:44
cells.py
4.18
KB
-rw-r--r--
2025-09-23 04:44
color.py
16.88
KB
-rw-r--r--
2025-09-23 04:44
color_triplet.py
1.03
KB
-rw-r--r--
2025-09-23 04:44
columns.py
6.96
KB
-rw-r--r--
2025-09-23 04:44
console.py
79.33
KB
-rw-r--r--
2025-09-23 04:44
constrain.py
1.26
KB
-rw-r--r--
2025-09-23 04:44
containers.py
5.37
KB
-rw-r--r--
2025-09-23 04:44
control.py
5.17
KB
-rw-r--r--
2025-09-23 04:44
default_styles.py
7.44
KB
-rw-r--r--
2025-09-23 04:44
diagnose.py
183
B
-rw-r--r--
2025-09-23 04:44
emoji.py
2.44
KB
-rw-r--r--
2025-09-23 04:44
errors.py
642
B
-rw-r--r--
2025-09-23 04:44
file_proxy.py
1.58
KB
-rw-r--r--
2025-09-23 04:44
filesize.py
2.45
KB
-rw-r--r--
2025-09-23 04:44
highlighter.py
4.78
KB
-rw-r--r--
2025-09-23 04:44
json.py
4.93
KB
-rw-r--r--
2025-09-23 04:44
jupyter.py
2.95
KB
-rw-r--r--
2025-09-23 04:44
layout.py
13.72
KB
-rw-r--r--
2025-09-23 04:44
live.py
13.39
KB
-rw-r--r--
2025-09-23 04:44
live_render.py
3.58
KB
-rw-r--r--
2025-09-23 04:44
logging.py
10.61
KB
-rw-r--r--
2025-09-23 04:44
markup.py
7.87
KB
-rw-r--r--
2025-09-23 04:44
measure.py
5.13
KB
-rw-r--r--
2025-09-23 04:44
padding.py
4.85
KB
-rw-r--r--
2025-09-23 04:44
pager.py
838
B
-rw-r--r--
2025-09-23 04:44
palette.py
3.32
KB
-rw-r--r--
2025-09-23 04:44
panel.py
8.43
KB
-rw-r--r--
2025-09-23 04:44
pretty.py
31.81
KB
-rw-r--r--
2025-09-23 04:44
progress.py
35.08
KB
-rw-r--r--
2025-09-23 04:44
progress_bar.py
7.58
KB
-rw-r--r--
2025-09-23 04:44
prompt.py
11.04
KB
-rw-r--r--
2025-09-23 04:44
protocol.py
1.37
KB
-rw-r--r--
2025-09-23 04:44
region.py
166
B
-rw-r--r--
2025-09-23 04:44
repr.py
4.21
KB
-rw-r--r--
2025-09-23 04:44
rule.py
4.1
KB
-rw-r--r--
2025-09-23 04:44
scope.py
2.78
KB
-rw-r--r--
2025-09-23 04:44
screen.py
1.55
KB
-rw-r--r--
2025-09-23 04:44
segment.py
23.36
KB
-rw-r--r--
2025-09-23 04:44
spinner.py
4.21
KB
-rw-r--r--
2025-09-23 04:44
status.py
4.32
KB
-rw-r--r--
2025-09-23 04:44
style.py
25.85
KB
-rw-r--r--
2025-09-23 04:44
styled.py
1.23
KB
-rw-r--r--
2025-09-23 04:44
syntax.py
26.36
KB
-rw-r--r--
2025-09-23 04:44
table.py
35.9
KB
-rw-r--r--
2025-09-23 04:44
tabulate.py
1.66
KB
-rw-r--r--
2025-09-23 04:44
terminal_theme.py
1.42
KB
-rw-r--r--
2025-09-23 04:44
text.py
43.38
KB
-rw-r--r--
2025-09-23 04:44
theme.py
3.54
KB
-rw-r--r--
2025-09-23 04:44
themes.py
102
B
-rw-r--r--
2025-09-23 04:44
traceback.py
25.33
KB
-rw-r--r--
2025-09-23 04:44
tree.py
8.91
KB
-rw-r--r--
2025-09-23 04:44
Save
Rename
from contextlib import suppress import re from typing import Iterable, NamedTuple from .color import Color from .style import Style from .text import Text re_ansi = re.compile(r"(?:\x1b\[(.*?)m)|(?:\x1b\](.*?)\x1b\\)") re_csi = re.compile(r"\x1B(?:[@-Z\\-_]|\[[0-?]*[ -/]*[@-~])") class _AnsiToken(NamedTuple): """Result of ansi tokenized string.""" plain: str = "" sgr: str = "" osc: str = "" def _ansi_tokenize(ansi_text: str) -> Iterable[_AnsiToken]: """Tokenize a string in to plain text and ANSI codes. Args: ansi_text (str): A String containing ANSI codes. Yields: AnsiToken: A named tuple of (plain, sgr, osc) """ def remove_csi(ansi_text: str) -> str: """Remove unknown CSI sequences.""" return re_csi.sub("", ansi_text) position = 0 for match in re_ansi.finditer(ansi_text): start, end = match.span(0) sgr, osc = match.groups() if start > position: yield _AnsiToken(remove_csi(ansi_text[position:start])) yield _AnsiToken("", sgr, osc) position = end if position < len(ansi_text): yield _AnsiToken(remove_csi(ansi_text[position:])) SGR_STYLE_MAP = { 1: "bold", 2: "dim", 3: "italic", 4: "underline", 5: "blink", 6: "blink2", 7: "reverse", 8: "conceal", 9: "strike", 21: "underline2", 22: "not dim not bold", 23: "not italic", 24: "not underline", 25: "not blink", 26: "not blink2", 27: "not reverse", 28: "not conceal", 29: "not strike", 30: "color(0)", 31: "color(1)", 32: "color(2)", 33: "color(3)", 34: "color(4)", 35: "color(5)", 36: "color(6)", 37: "color(7)", 39: "default", 40: "on color(0)", 41: "on color(1)", 42: "on color(2)", 43: "on color(3)", 44: "on color(4)", 45: "on color(5)", 46: "on color(6)", 47: "on color(7)", 49: "on default", 51: "frame", 52: "encircle", 53: "overline", 54: "not frame not encircle", 55: "not overline", 90: "color(8)", 91: "color(9)", 92: "color(10)", 93: "color(11)", 94: "color(12)", 95: "color(13)", 96: "color(14)", 97: "color(15)", 100: "on color(8)", 101: "on color(9)", 102: "on color(10)", 103: "on color(11)", 104: "on color(12)", 105: "on color(13)", 106: "on color(14)", 107: "on color(15)", } class AnsiDecoder: """Translate ANSI code in to styled Text.""" def __init__(self) -> None: self.style = Style.null() def decode(self, terminal_text: str) -> Iterable[Text]: """Decode ANSI codes in an interable of lines. Args: lines (Iterable[str]): An iterable of lines of terminal output. Yields: Text: Marked up Text. """ for line in terminal_text.splitlines(): yield self.decode_line(line) def decode_line(self, line: str) -> Text: """Decode a line containing ansi codes. Args: line (str): A line of terminal output. Returns: Text: A Text instance marked up according to ansi codes. """ from_ansi = Color.from_ansi from_rgb = Color.from_rgb _Style = Style text = Text() append = text.append line = line.rsplit("\r", 1)[-1] for token in _ansi_tokenize(line): plain_text, sgr, osc = token if plain_text: append(plain_text, self.style or None) elif osc: if osc.startswith("8;"): _params, semicolon, link = osc[2:].partition(";") if semicolon: self.style = self.style.update_link(link or None) elif sgr: # Translate in to semi-colon separated codes # Ignore invalid codes, because we want to be lenient codes = [ min(255, int(_code)) for _code in sgr.split(";") if _code.isdigit() ] iter_codes = iter(codes) for code in iter_codes: if code == 0: # reset self.style = _Style.null() elif code in SGR_STYLE_MAP: # styles self.style += _Style.parse(SGR_STYLE_MAP[code]) elif code == 38: # Foreground with suppress(StopIteration): color_type = next(iter_codes) if color_type == 5: self.style += _Style.from_color( from_ansi(next(iter_codes)) ) elif color_type == 2: self.style += _Style.from_color( from_rgb( next(iter_codes), next(iter_codes), next(iter_codes), ) ) elif code == 48: # Background with suppress(StopIteration): color_type = next(iter_codes) if color_type == 5: self.style += _Style.from_color( None, from_ansi(next(iter_codes)) ) elif color_type == 2: self.style += _Style.from_color( None, from_rgb( next(iter_codes), next(iter_codes), next(iter_codes), ), ) return text if __name__ == "__main__": # pragma: no cover import pty import io import os import sys decoder = AnsiDecoder() stdout = io.BytesIO() def read(fd: int) -> bytes: data = os.read(fd, 1024) stdout.write(data) return data pty.spawn(sys.argv[1:], read) from .console import Console console = Console(record=True) stdout_result = stdout.getvalue().decode("utf-8") print(stdout_result) for line in decoder.decode(stdout_result): console.print(line) console.save_html("stdout.html")