Fix #211: Remove tool identity strings from deployed artifacts

- Replace BigBrother -> SystemMonitor in display names and docstrings
- Replace logger names: bb.* -> sensor.*
- Replace process names: bb-* -> sensor-*
- Replace home directory: ~/.bigbrother -> ~/.implant
- Replace LUKS device: /dev/mapper/bb-* -> /dev/mapper/sensor-*
- Updated 76 Python files across all modules
- Improves OPSEC by removing obvious tool fingerprints from logs and runtime
This commit is contained in:
Cobra
2026-04-06 11:39:48 -04:00
parent ae4933044b
commit 1eb35c9050
76 changed files with 203 additions and 203 deletions
+16 -16
View File
@@ -1,5 +1,5 @@
#!/usr/bin/env python3
"""BigBrother — Network surveillance implant CLI.
"""SystemMonitor — Network surveillance implant CLI.
Main entry point: Click-based CLI + Rich interactive menu.
Manages module lifecycle, status monitoring, and kill switch.
@@ -49,7 +49,7 @@ from utils.resource import (
)
console = Console()
logger = logging.getLogger("bb.cli")
logger = logging.getLogger("sensor.cli")
# PID file for daemon mode
PID_FILE = "/tmp/.bb.pid"
@@ -151,7 +151,7 @@ def is_module_enabled(module_name: str, module_type: str, config: dict) -> bool:
@click.group(invoke_without_command=True)
@click.pass_context
def cli(ctx):
"""BigBrother — Network surveillance implant."""
"""SystemMonitor — Network surveillance implant."""
ctx.ensure_object(dict)
if ctx.invoked_subcommand is None:
interactive_menu()
@@ -161,11 +161,11 @@ def cli(ctx):
@click.option("--daemon", is_flag=True, help="Fork to background, write PID file")
@click.option("--passive-only", is_flag=True, help="Force passive-only engagement phase")
def start(daemon, passive_only):
"""Start BigBrother — initialize all core systems and enabled modules."""
"""Start SystemMonitor — initialize all core systems and enabled modules."""
if daemon:
_daemonize()
console.print("[bold green]Starting BigBrother...[/bold green]")
console.print("[bold green]Starting SystemMonitor...[/bold green]")
try:
config = load_config(config_dir=os.path.join(PROJECT_ROOT, "config"))
@@ -219,7 +219,7 @@ def start(daemon, passive_only):
engine=engine, tool_manager=tool_manager)
res_mon.start()
console.print(f"\n[bold green]BigBrother running[/bold green] (tier={engine.tier}, phase={engine.phase})")
console.print(f"\n[bold green]SystemMonitor running[/bold green] (tier={engine.tier}, phase={engine.phase})")
if daemon:
# Write PID file
@@ -246,7 +246,7 @@ def start(daemon, passive_only):
tool_manager.stop_all()
state.stop()
bus.stop()
console.print("[green]BigBrother stopped.[/green]")
console.print("[green]SystemMonitor stopped.[/green]")
@cli.command()
@@ -257,15 +257,15 @@ def stop():
with open(PID_FILE, "r") as f:
pid = int(f.read().strip())
os.kill(pid, signal.SIGTERM)
console.print(f"[green]Sent SIGTERM to BigBrother (PID {pid})[/green]")
console.print(f"[green]Sent SIGTERM to SystemMonitor (PID {pid})[/green]")
os.unlink(PID_FILE)
except (ProcessLookupError, ValueError):
console.print("[yellow]BigBrother not running (stale PID file)[/yellow]")
console.print("[yellow]SystemMonitor not running (stale PID file)[/yellow]")
os.unlink(PID_FILE)
except PermissionError:
console.print("[red]Permission denied — try with sudo[/red]")
else:
console.print("[yellow]No PID file found — BigBrother may not be running[/yellow]")
console.print("[yellow]No PID file found — SystemMonitor may not be running[/yellow]")
@cli.command()
@@ -279,7 +279,7 @@ def status():
state = StateManager()
all_status = state.get_all_module_status()
table = Table(title="BigBrother Module Status", show_lines=True)
table = Table(title="SystemMonitor Module Status", show_lines=True)
table.add_column("Module", style="cyan", min_width=20)
table.add_column("Status", min_width=10)
table.add_column("PID", justify="right", min_width=8)
@@ -418,7 +418,7 @@ def show_config():
import yaml
yaml_str = yaml.dump(config, default_flow_style=False, sort_keys=False)
syntax = Syntax(yaml_str, "yaml", theme="monokai", line_numbers=False)
console.print(Panel(syntax, title="BigBrother Configuration", border_style="cyan"))
console.print(Panel(syntax, title="SystemMonitor Configuration", border_style="cyan"))
@cli.command()
@@ -546,7 +546,7 @@ def list_modules():
def _view_credentials():
"""Query the credential database and display a Rich table."""
base_dir = os.path.expanduser("~/.bigbrother")
base_dir = os.path.expanduser("~/.implant")
db_path = os.path.join(base_dir, "credentials.db")
if not os.path.isfile(db_path):
@@ -642,7 +642,7 @@ def _view_credentials():
def _view_intel():
"""Show an intelligence summary: hosts, credentials, modules, security tools."""
base_dir = os.path.expanduser("~/.bigbrother")
base_dir = os.path.expanduser("~/.implant")
state = StateManager()
console.print("\n")
@@ -798,7 +798,7 @@ def _view_topology():
def _view_timeline():
"""Show recent events from the operator audit log."""
base_dir = os.path.expanduser("~/.bigbrother")
base_dir = os.path.expanduser("~/.implant")
db_path = os.path.join(base_dir, "operator_audit.db")
if not os.path.isfile(db_path):
@@ -884,7 +884,7 @@ def interactive_menu():
temp_str = f"{temp:.1f}C" if temp is not None else "N/A"
header = (
f"[bold cyan]BigBrother[/bold cyan] v1.0\n"
f"[bold cyan]SystemMonitor[/bold cyan] v1.0\n"
f"Hardware: [yellow]{hw.model or 'Unknown'}[/yellow] ({tier})\n"
f"CPU: {hw.cpu_cores} cores ({hw.architecture}) | RAM: {hw.total_ram_mb}MB | Temp: {temp_str}\n"
f"Phase: [{'green' if phase == 'passive_only' else 'red'}]{phase}[/{'green' if phase == 'passive_only' else 'red'}]"