cleaning things up by refactoring and combining files
This commit is contained in:
55
src/ctf/cli_analyse.py
Normal file
55
src/ctf/cli_analyse.py
Normal file
@@ -0,0 +1,55 @@
|
||||
# src/ctf/cli_analyse.py
|
||||
# {{{ imports
|
||||
import click
|
||||
from pathlib import Path
|
||||
from rich.console import Console
|
||||
from rich.panel import Panel
|
||||
from ctf.analysis import run_analysis
|
||||
# }}}
|
||||
|
||||
# {{{ analyse_cmd
|
||||
@click.command(name="analyse")
|
||||
@click.option('-f', '--file', type=click.Path(exists=True), help="Path to the challenge file to analyze.")
|
||||
def analyse_cmd(file):
|
||||
"""Dynamically analyze and try to solve the active challenge using static routes."""
|
||||
console = Console()
|
||||
console.print("[bold blue][*] Starting dynamic challenge analysis...[/bold blue]\n")
|
||||
|
||||
file_path = Path(file) if file else None
|
||||
result = run_analysis(file_path)
|
||||
|
||||
for route in result.routes:
|
||||
title = f"Route: {route.route_name}"
|
||||
if not route.executed:
|
||||
console.print(Panel(
|
||||
f"[yellow]{route.message}[/yellow]",
|
||||
title=title,
|
||||
border_style="yellow"
|
||||
))
|
||||
elif route.success:
|
||||
content = f"[green]{route.message}[/green]\n"
|
||||
if route.details:
|
||||
content += "\n[bold cyan]Details:[/bold cyan]\n"
|
||||
for k, v in route.details.items():
|
||||
content += f" • {k}: {v}\n"
|
||||
if route.extracted_flags:
|
||||
content += "\n[bold green]✓ Extracted Flags:[/bold green]\n"
|
||||
for flag in route.extracted_flags:
|
||||
content += f" [bold green]{flag}[/bold green]\n"
|
||||
console.print(Panel(
|
||||
content.strip(),
|
||||
title=title,
|
||||
border_style="green"
|
||||
))
|
||||
else:
|
||||
console.print(Panel(
|
||||
f"[red]✗ {route.message}[/red]",
|
||||
title=title,
|
||||
border_style="red"
|
||||
))
|
||||
|
||||
if result.success:
|
||||
console.print("\n[bold green]✓ Analysis complete. Challenge solved successfully![/bold green]")
|
||||
else:
|
||||
console.print("\n[bold yellow]! Analysis complete. No clear flag found yet.[/bold yellow]")
|
||||
# }}}
|
||||
Reference in New Issue
Block a user