feat(web): attacker artifacts endpoint + UI drawer
Adds the server-side wiring and frontend UI to surface files captured
by the SSH honeypot for a given attacker.
- New repository method get_attacker_artifacts (abstract + SQLModel
impl) that joins the attacker's IP to `file_captured` log rows.
- New route GET /attackers/{uuid}/artifacts.
- New router /artifacts/{decky}/{service}/{stored_as} that streams a
quarantined file back to an authenticated viewer.
- AttackerDetail grows an ArtifactDrawer panel with per-file metadata
(sha256, size, orig_path) and a download action.
- ssh service fragment now sets NODE_NAME=decky_name so logs and the
host-side artifacts bind-mount share the same decky identifier.
This commit is contained in:
@@ -271,7 +271,8 @@ def test_ssh_default_env():
|
||||
env = _fragment("ssh").get("environment", {})
|
||||
assert env.get("SSH_ROOT_PASSWORD") == "admin"
|
||||
assert not any(k.startswith("COWRIE_") for k in env)
|
||||
assert "NODE_NAME" not in env
|
||||
# SSH propagates NODE_NAME for log attribution / artifact bind-mount paths.
|
||||
assert env.get("NODE_NAME") == "test-decky"
|
||||
|
||||
|
||||
def test_ssh_custom_password():
|
||||
|
||||
Reference in New Issue
Block a user