chore: fix unused imports in tests and update development roadmap
Some checks failed
CI / Lint (ruff) (push) Successful in 16s
CI / Test (pytest) (3.11) (push) Failing after 34s
CI / Test (pytest) (3.12) (push) Failing after 36s
CI / SAST (bandit) (push) Successful in 12s
CI / Merge dev → testing (push) Has been cancelled
CI / Open PR to main (push) Has been cancelled
CI / Dependency audit (pip-audit) (push) Has been cancelled
Some checks failed
CI / Lint (ruff) (push) Successful in 16s
CI / Test (pytest) (3.11) (push) Failing after 34s
CI / Test (pytest) (3.12) (push) Failing after 36s
CI / SAST (bandit) (push) Successful in 12s
CI / Merge dev → testing (push) Has been cancelled
CI / Open PR to main (push) Has been cancelled
CI / Dependency audit (pip-audit) (push) Has been cancelled
This commit is contained in:
37
development/BUGS.md
Normal file
37
development/BUGS.md
Normal file
@@ -0,0 +1,37 @@
|
||||
# BUGS
|
||||
|
||||
Active bugs detected during development. Do not fix until noted otherwise.
|
||||
|
||||
---
|
||||
|
||||
## BUG-001 — Split-brain model imports across router files (Gemini SQLModel migration)
|
||||
|
||||
**Detected:** 2026-04-09
|
||||
**Status:** Open — do not fix, migration in progress
|
||||
|
||||
**Symptom:** `from decnet.web.api import app` fails with `ModuleNotFoundError: No module named 'decnet.web.models'`
|
||||
|
||||
**Root cause:** Gemini's SQLModel migration is partially complete. Models were moved to `decnet/web/db/models.py`, but three router files were not updated and still import from the old `decnet.web.models` path:
|
||||
|
||||
| File | Stale import |
|
||||
|------|--------------|
|
||||
| `decnet/web/router/auth/api_login.py:12` | `from decnet.web.models import LoginRequest, Token` |
|
||||
| `decnet/web/router/auth/api_change_pass.py:7` | `from decnet.web.models import ChangePasswordRequest` |
|
||||
| `decnet/web/router/stats/api_get_stats.py:6` | `from decnet.web.models import StatsResponse` |
|
||||
|
||||
**Fix:** Update those three files to import from `decnet.web.db.models` (consistent with the other router files already migrated).
|
||||
|
||||
**Impact:** All `tests/api/` tests fail to collect. Web server cannot start.
|
||||
|
||||
---
|
||||
|
||||
## BUG-002 — `decnet/web/db/sqlite/repository.py` depends on `sqlalchemy` directly
|
||||
|
||||
**Detected:** 2026-04-09
|
||||
**Status:** Resolved (dependency installed via `pip install -e ".[dev]"`)
|
||||
|
||||
**Symptom:** `ModuleNotFoundError: No module named 'sqlalchemy'` before `sqlmodel` was installed.
|
||||
|
||||
**Root cause:** `sqlmodel>=0.0.16` was added to `pyproject.toml` but `pip install -e .` had not been re-run in the dev environment.
|
||||
|
||||
**Fix:** Run `pip install -e ".[dev]"`. Already applied.
|
||||
181
development/DEBT.md
Normal file
181
development/DEBT.md
Normal file
@@ -0,0 +1,181 @@
|
||||
# DECNET — Technical Debt Register
|
||||
|
||||
> Last updated: 2026-04-09 — All addressable debt cleared.
|
||||
> Severity: 🔴 Critical · 🟠 High · 🟡 Medium · 🟢 Low
|
||||
|
||||
---
|
||||
|
||||
## 🔴 Critical
|
||||
|
||||
### ~~DEBT-001 — Hardcoded JWT fallback secret~~ ✅ RESOLVED
|
||||
~~**File:** `decnet/env.py:15`~~
|
||||
Fixed in commit `b6b046c`. `DECNET_JWT_SECRET` is now required; startup raises `ValueError` if unset or set to a known-bad value.
|
||||
|
||||
### ~~DEBT-002 — Default admin credentials in code~~ ✅ CLOSED (by design)
|
||||
`DECNET_ADMIN_PASSWORD` defaults to `"admin"` intentionally — the web dashboard enforces a password change on first login (`must_change_password=1`). Startup enforcement removed as it broke tooling without adding meaningful security.
|
||||
|
||||
### ~~DEBT-003 — Hardcoded LDAP password placeholder~~ ✅ CLOSED (false positive)
|
||||
`templates/ldap/server.py:73` — `"<sasl_or_unknown>"` is a log label for SASL auth attempts, not an operational credential. The LDAP template is a honeypot; it has no bind password of its own.
|
||||
|
||||
### ~~DEBT-004 — Wildcard CORS with no origin restriction~~ ✅ RESOLVED
|
||||
~~**File:** `decnet/web/api.py:48-54`~~
|
||||
Fixed in commit `b6b046c`. `allow_origins` now uses `DECNET_CORS_ORIGINS` (env var, defaults to `http://localhost:8080`). `allow_methods` and `allow_headers` tightened to explicit allowlists.
|
||||
|
||||
---
|
||||
|
||||
## 🟠 High
|
||||
|
||||
### ~~DEBT-005 — Auth module has zero test coverage~~ ✅ RESOLVED
|
||||
~~**File:** `decnet/web/auth.py`~~
|
||||
Comprehensive test suite added in `tests/api/` covering login, password change, token validation, and JWT edge cases.
|
||||
|
||||
### ~~DEBT-006 — Database layer has zero test coverage~~ ✅ RESOLVED
|
||||
~~**File:** `decnet/web/sqlite_repository.py`~~
|
||||
`tests/api/test_repository.py` added — covers log insertion, bounty CRUD, histogram queries, stats summary, and fuzz testing of all query paths. In-memory SQLite with `StaticPool` ensures full isolation.
|
||||
|
||||
### ~~DEBT-007 — Web API routes mostly untested~~ ✅ RESOLVED
|
||||
~~**Files:** `decnet/web/router/` (all sub-modules)~~
|
||||
Full coverage added across `tests/api/` — fleet, logs, bounty, stream, auth all have dedicated test modules with both functional and fuzz test cases.
|
||||
|
||||
### ~~DEBT-008 — Auth token accepted via query string~~ ✅ RESOLVED
|
||||
~~**File:** `decnet/web/dependencies.py:33-34`~~
|
||||
Query-string token fallback removed. `get_current_user` now accepts only `Authorization: Bearer <token>` header. Tokens no longer appear in access logs or browser history.
|
||||
|
||||
### ~~DEBT-009 — Inconsistent and unstructured logging across templates~~ ✅ CLOSED (false positive)
|
||||
All service templates already import from `decnet_logging` and use `syslog_line()` for structured output. The `print(line, flush=True)` present in some templates is the intentional Docker stdout channel for container log forwarding — not unstructured debug output.
|
||||
|
||||
### ~~DEBT-010 — `decnet_logging.py` duplicated across all 19 service templates~~ ✅ RESOLVED
|
||||
~~**Files:** `templates/*/decnet_logging.py`~~
|
||||
All 22 per-directory copies deleted. Canonical source lives at `templates/decnet_logging.py`. `deployer.py` now calls `_sync_logging_helper()` before `docker compose up` — it copies the canonical file into each active template build context automatically.
|
||||
|
||||
---
|
||||
|
||||
## 🟡 Medium
|
||||
|
||||
### DEBT-011 — No database migration system
|
||||
**File:** `decnet/web/db/sqlite/repository.py`
|
||||
Schema is created during startup via `SQLModel.metadata.create_all`. There is no Alembic or equivalent migration layer. Schema changes across deployments require manual intervention or silently break existing databases.
|
||||
**Status:** Architectural. Deferred — requires Alembic integration and migration history bootstrapping.
|
||||
|
||||
### ~~DEBT-012 — No environment variable validation schema~~ ✅ RESOLVED
|
||||
~~**File:** `decnet/env.py`~~
|
||||
`DECNET_API_PORT` and `DECNET_WEB_PORT` now validated via `_port()` — enforces integer type and 1–65535 range, raises `ValueError` with a clear message on bad input.
|
||||
|
||||
### ~~DEBT-013 — Unvalidated input on `decky_name` route parameter~~ ✅ RESOLVED
|
||||
~~**File:** `decnet/web/router/fleet/api_mutate_decky.py:10`~~
|
||||
`decky_name` now declared as `Path(..., pattern=r"^[a-z0-9\-]{1,64}$")` — FastAPI rejects non-matching values with 422 before any downstream processing.
|
||||
|
||||
### ~~DEBT-014 — Streaming endpoint has no error handling~~ ✅ RESOLVED
|
||||
~~**File:** `decnet/web/router/stream/api_stream_events.py`~~
|
||||
`event_generator()` now wrapped in `try/except`. `asyncio.CancelledError` is handled silently (clean disconnect). All other exceptions log server-side via `log.exception()` and yield an `event: error` SSE frame to the client.
|
||||
|
||||
### ~~DEBT-015 — Broad exception detail leaked to API clients~~ ✅ RESOLVED
|
||||
~~**File:** `decnet/web/router/fleet/api_deploy_deckies.py:78`~~
|
||||
Raw exception message no longer returned to client. Full exception now logged server-side via `log.exception()`. Client receives generic `"Deployment failed. Check server logs for details."`.
|
||||
|
||||
### ~~DEBT-016 — Unvalidated log query parameters~~ ✅ RESOLVED
|
||||
~~**File:** `decnet/web/router/logs/api_get_logs.py:12-19`~~
|
||||
`search` capped at `max_length=512`. `start_time` and `end_time` validated against `^\d{4}-\d{2}-\d{2}[ T]\d{2}:\d{2}:\d{2}$` regex pattern. FastAPI rejects invalid input with 422.
|
||||
|
||||
### ~~DEBT-017 — Silent DB lock retry during startup~~ ✅ RESOLVED
|
||||
~~**File:** `decnet/web/api.py:20-26`~~
|
||||
Each retry attempt now emits `log.warning("DB init attempt %d/5 failed: %s", attempt, exc)`. After all retries exhausted, `log.error()` is emitted so degraded startup is always visible in logs.
|
||||
|
||||
### ~~DEBT-018 — No Docker HEALTHCHECK in any template~~ ✅ RESOLVED
|
||||
~~**Files:** All 20 `templates/*/Dockerfile`~~
|
||||
All 24 Dockerfiles updated with:
|
||||
```dockerfile
|
||||
HEALTHCHECK --interval=30s --timeout=5s --start-period=10s --retries=3 \
|
||||
CMD kill -0 1 || exit 1
|
||||
```
|
||||
|
||||
### ~~DEBT-019 — Most template containers run as root~~ ✅ RESOLVED
|
||||
~~**Files:** All `templates/*/Dockerfile` except Cowrie~~
|
||||
All 24 Dockerfiles now create a `decnet` system user, use `setcap cap_net_bind_service+eip` on the Python binary (allows binding ports < 1024 without root), and drop to `USER decnet` before `ENTRYPOINT`.
|
||||
|
||||
### ~~DEBT-020 — Swagger/OpenAPI disabled in production~~ ✅ RESOLVED
|
||||
~~**File:** `decnet/web/api.py:43-45`~~
|
||||
All route decorators now declare `responses={401: {"description": "Not authenticated"}, 422: {"description": "Validation error"}}`. OpenAPI schema is complete for all endpoints.
|
||||
|
||||
### ~~DEBT-021 — `sqlite_repository.py` is a god module~~ ✅ RESOLVED
|
||||
~~**File:** `decnet/web/sqlite_repository.py` (~400 lines)~~
|
||||
Fully refactored to `decnet/web/db/` modular layout: `models.py` (SQLModel schema), `repository.py` (abstract base), `sqlite/repository.py` (SQLite implementation), `sqlite/database.py` (engine/session factory). Commit `de84cc6`.
|
||||
|
||||
### DEBT-026 — IMAP/POP3 bait emails not configurable via service config
|
||||
**Files:** `templates/imap/server.py`, `templates/pop3/server.py`, `decnet/services/imap.py`, `decnet/services/pop3.py`
|
||||
Bait emails are hardcoded. A stub env var `IMAP_EMAIL_SEED` is read but currently ignored. Full implementation requires:
|
||||
1. `IMAP_EMAIL_SEED` points to a JSON file with a list of `{from_, to, subject, date, body}` dicts.
|
||||
2. `templates/imap/server.py` loads and merges/replaces `_BAIT_EMAILS` from that file at startup.
|
||||
3. `decnet/services/imap.py` `compose_fragment()` reads `service_cfg["email_seed"]` and injects `IMAP_EMAIL_SEED` + a bind-mount for the seed file into the compose fragment.
|
||||
4. Same pattern for POP3 (`POP3_EMAIL_SEED`).
|
||||
**Status:** Stub in place — full wiring deferred to next session.
|
||||
|
||||
---
|
||||
|
||||
### DEBT-027 — Dynamic Bait Store
|
||||
**Files:** `templates/redis/server.py`, `templates/ftp/server.py`
|
||||
The bait store and honeypot files are hardcoded. A dynamic injection framework should be created to populate this payload across different honeypots.
|
||||
**Status:** Deferred — out of current scope.
|
||||
|
||||
### DEBT-028 — Test coverage for `api_deploy_deckies.py`
|
||||
**File:** `decnet/web/router/fleet/api_deploy_deckies.py` (24% coverage)
|
||||
The deploy endpoint exercises Docker Compose orchestration via `decnet.engine.deploy`, which creates MACVLAN/IPvlan networks and runs `docker compose up`. Meaningful tests require mocking the entire Docker SDK + subprocess layer, coupling tightly to implementation details.
|
||||
**Status:** Deferred — test after Docker-in-Docker CI is available.
|
||||
|
||||
---
|
||||
|
||||
## 🟢 Low
|
||||
|
||||
### ~~DEBT-022 — Debug `print()` in correlation engine~~ ✅ CLOSED (false positive)
|
||||
`decnet/correlation/engine.py:20` — The `print()` call is inside the module docstring as a usage example, not in executable code. No production code path affected.
|
||||
|
||||
### DEBT-023 — Unpinned base Docker images
|
||||
**Files:** All `templates/*/Dockerfile`
|
||||
`debian:bookworm-slim` and similar tags are used without digest pinning. Image contents can silently change on `docker pull`, breaking reproducibility and supply-chain integrity.
|
||||
**Status:** Deferred — requires `docker pull` access to resolve current digests for each base image.
|
||||
|
||||
### ~~DEBT-024 — Stale service version hardcoded in Redis template~~ ✅ RESOLVED
|
||||
~~**File:** `templates/redis/server.py:15`~~
|
||||
`REDIS_VERSION` updated from `"7.0.12"` to `"7.2.7"` (current stable).
|
||||
|
||||
### ~~DEBT-025 — No lock file for Python dependencies~~ ✅ RESOLVED
|
||||
~~**Files:** Project root~~
|
||||
`requirements.lock` generated via `pip freeze`. Reproducible installs now available via `pip install -r requirements.lock`.
|
||||
|
||||
---
|
||||
|
||||
## Summary
|
||||
|
||||
| ID | Severity | Area | Status |
|
||||
|----|----------|------|--------|
|
||||
| ~~DEBT-001~~ | ✅ | Security / Auth | resolved `b6b046c` |
|
||||
| ~~DEBT-002~~ | ✅ | Security / Auth | closed (by design) |
|
||||
| ~~DEBT-003~~ | ✅ | Security / Infra | closed (false positive) |
|
||||
| ~~DEBT-004~~ | ✅ | Security / API | resolved `b6b046c` |
|
||||
| ~~DEBT-005~~ | ✅ | Testing | resolved |
|
||||
| ~~DEBT-006~~ | ✅ | Testing | resolved |
|
||||
| ~~DEBT-007~~ | ✅ | Testing | resolved |
|
||||
| ~~DEBT-008~~ | ✅ | Security / Auth | resolved |
|
||||
| ~~DEBT-009~~ | ✅ | Observability | closed (false positive) |
|
||||
| ~~DEBT-010~~ | ✅ | Code Duplication | resolved |
|
||||
| DEBT-011 | 🟡 Medium | DB / Migrations | deferred (Alembic scope) |
|
||||
| ~~DEBT-012~~ | ✅ | Config | resolved |
|
||||
| ~~DEBT-013~~ | ✅ | Security / Input | resolved |
|
||||
| ~~DEBT-014~~ | ✅ | Reliability | resolved |
|
||||
| ~~DEBT-015~~ | ✅ | Security / API | resolved |
|
||||
| ~~DEBT-016~~ | ✅ | Security / API | resolved |
|
||||
| ~~DEBT-017~~ | ✅ | Reliability | resolved |
|
||||
| ~~DEBT-018~~ | ✅ | Infra | resolved |
|
||||
| ~~DEBT-019~~ | ✅ | Security / Infra | resolved |
|
||||
| ~~DEBT-020~~ | ✅ | Docs | resolved |
|
||||
| ~~DEBT-021~~ | ✅ | Architecture | resolved `de84cc6` |
|
||||
| ~~DEBT-022~~ | ✅ | Code Quality | closed (false positive) |
|
||||
| DEBT-023 | 🟢 Low | Infra | deferred (needs docker pull) |
|
||||
| ~~DEBT-024~~ | ✅ | Infra | resolved |
|
||||
| ~~DEBT-025~~ | ✅ | Build | resolved |
|
||||
| DEBT-026 | 🟡 Medium | Features | deferred (out of scope) |
|
||||
| DEBT-027 | 🟡 Medium | Features | deferred (out of scope) |
|
||||
| DEBT-028 | 🟡 Medium | Testing | deferred (needs DinD CI) |
|
||||
|
||||
**Remaining open:** DEBT-011 (Alembic), DEBT-023 (image pinning), DEBT-026 (modular mailboxes), DEBT-027 (Dynamic bait store), DEBT-028 (deploy endpoint tests)
|
||||
**Estimated remaining effort:** ~12 hours
|
||||
@@ -8,7 +8,7 @@
|
||||
- [ ] **Telnet (Cowrie)** — Realistic banner and command emulation.
|
||||
- [ ] **RDP** — Realistic NLA authentication and screen capture (where possible).
|
||||
- [ ] **VNC** — Realistic RFB protocol handshake and authentication.
|
||||
- [ ] **Real SSH** — Pass-through or high-interaction proxying.
|
||||
- [x] **Real SSH** — High-interaction sshd with shell logging.
|
||||
|
||||
### Databases
|
||||
- [ ] **MySQL** — Support for common SQL queries and realistic schema.
|
||||
@@ -22,6 +22,7 @@
|
||||
- [x] **HTTP** — Flexible templates (WordPress, phpMyAdmin, etc.) with logging.
|
||||
- [ ] **Docker API** — Realistic responses for `docker version` and `docker ps`.
|
||||
- [ ] **Kubernetes (K8s)** — Mocked kubectl responses and basic API exploration.
|
||||
- [x] **LLMNR** — Realistic local name resolution responses via responder-style emulation.
|
||||
|
||||
### File Transfer & Storage
|
||||
- [ ] **SMB** — Realistic share discovery and basic file browsing.
|
||||
@@ -38,7 +39,6 @@
|
||||
- [x] **MQTT** — Basic topic subscription and publishing support.
|
||||
- [x] **SNMP** — Realistic MIB responses for common OIDs.
|
||||
- [ ] **SIP** — Basic VoIP protocol handshake and registration.
|
||||
- [ ] **LLMNR** — Realistic local name resolution responses.
|
||||
- [x] **Conpot** — SCADA/ICS protocol emulation (Modbus, etc.).
|
||||
|
||||
---
|
||||
@@ -49,7 +49,7 @@
|
||||
- [ ] **Canary tokens** — Embed fake AWS keys and honeydocs into decky filesystems.
|
||||
- [ ] **Tarpit mode** — Slow down attackers by drip-feeding bytes or delaying responses.
|
||||
- [x] **Dynamic decky mutation** — Rotate exposed services or OS fingerprints over time.
|
||||
- [ ] **Credential harvesting DB** — Centralized database for all username/password attempts.
|
||||
- [x] **Credential harvesting DB** — Centralized database for all username/password attempts.
|
||||
- [ ] **Session recording** — Full capture for SSH/Telnet sessions.
|
||||
- [ ] **Payload capture** — Store and hash files uploaded by attackers.
|
||||
|
||||
@@ -67,7 +67,7 @@
|
||||
- [x] **Decky Inventory** — Dedicated "Decoy Fleet" page showing all deployed assets.
|
||||
- [ ] **Pre-built Kibana/Grafana dashboards** — Ship JSON exports for ELK/Grafana.
|
||||
- [ ] **CLI live feed** — `decnet watch` command for a unified, colored terminal stream.
|
||||
- [ ] **Traversal graph export** — Export attacker movement as DOT or JSON.
|
||||
- [x] **Traversal graph export** — Export attacker movement as JSON (via CLI).
|
||||
|
||||
## Deployment & Infrastructure
|
||||
|
||||
|
||||
549
development/postpostfixnmap.txt
Normal file
549
development/postpostfixnmap.txt
Normal file
@@ -0,0 +1,549 @@
|
||||
# Nmap 7.92 scan initiated Sat Apr 11 04:21:11 2026 as: nmap -A -O -p- -sV -sC --version-intensity 9 -oN postpostfixnmap.txt 192.168.1.200,201
|
||||
Nmap scan report for 192.168.1.200
|
||||
Host is up (0.000031s latency).
|
||||
Not shown: 65510 closed tcp ports (reset)
|
||||
PORT STATE SERVICE VERSION
|
||||
21/tcp open ftp vsftpd (before 2.0.8) or WU-FTPD
|
||||
23/tcp open telnet?
|
||||
| fingerprint-strings:
|
||||
| DNSStatusRequestTCP, DNSVersionBindReqTCP, DistCCD, JavaRMI, LANDesk-RC, LDAPBindReq, NULL, NotesRPC, RPCCheck, Radmin, TLSSessionReq, TerminalServer, WMSRequest, X11Probe, mydoom, tn3270:
|
||||
| login:
|
||||
| FourOhFourRequest, GenericLines, GetRequest, HTTPOptions, LDAPSearchReq, RTSPRequest:
|
||||
| login:
|
||||
| Password:
|
||||
| Login incorrect
|
||||
| login:
|
||||
| Hello, Help, Kerberos, LPDString, NessusTPv10, NessusTPv11, NessusTPv12, SSLSessionReq, SSLv23SessionReq, TerminalServerCookie, Verifier, VerifierAdvanced, WWWOFFLEctrlstat:
|
||||
| login:
|
||||
| Password:
|
||||
| SIPOptions:
|
||||
| login:
|
||||
| Password:
|
||||
| Login incorrect
|
||||
| login: Password:
|
||||
| Login incorrect
|
||||
| login: Password:
|
||||
| Login incorrect
|
||||
| login: Password:
|
||||
| Login incorrect
|
||||
| login: Password:
|
||||
| Login incorrect
|
||||
|_ login: Password:
|
||||
25/tcp open smtp Postfix smtpd
|
||||
|_smtp-commands: omega-decky, PIPELINING, SIZE 10240000, VRFY, ETRN, AUTH PLAIN LOGIN, ENHANCEDSTATUSCODES, 8BITMIME, DSN
|
||||
80/tcp open http Apache httpd 2.4.54
|
||||
|_http-server-header: Werkzeug/3.1.8 Python/3.11.2
|
||||
|_http-title: 403 Forbidden
|
||||
110/tcp open pop3
|
||||
|_pop3-capabilities: TOP AUTH-RESP-CODE SASL RESP-CODES UIDL USER
|
||||
| fingerprint-strings:
|
||||
| DNSStatusRequestTCP, DNSVersionBindReqTCP, GenericLines, NULL, RPCCheck, SMBProgNeg, X11Probe:
|
||||
| +OK omega-decky Dovecot POP3 ready.
|
||||
| FourOhFourRequest, GetRequest, HTTPOptions, Hello, Help, Kerberos, LPDString, RTSPRequest, SSLSessionReq, SSLv23SessionReq, TLSSessionReq, TerminalServerCookie:
|
||||
| +OK omega-decky Dovecot POP3 ready.
|
||||
| -ERR Command not recognized
|
||||
| LDAPSearchReq:
|
||||
| +OK omega-decky Dovecot POP3 ready.
|
||||
| -ERR Command not recognized
|
||||
|_ -ERR Command not recognized
|
||||
143/tcp open imap Dovecot imapd
|
||||
|_imap-capabilities: ENABLE LOGIN-REFERRALS ID completed SASL-IR CAPABILITY AUTH=PLAIN AUTH=LOGINA0001 IDLE OK LITERAL+ IMAP4rev1
|
||||
389/tcp open ldap Cisco LDAP server
|
||||
445/tcp open microsoft-ds
|
||||
| fingerprint-strings:
|
||||
| SMBProgNeg:
|
||||
| SMBr
|
||||
|_ "3DUfw
|
||||
502/tcp open mbap?
|
||||
1433/tcp open ms-sql-s?
|
||||
1883/tcp open mqtt
|
||||
| mqtt-subscribe:
|
||||
| Topics and their most recent payloads:
|
||||
| plant/alarm/pump_fault: 0
|
||||
| plant/water/tank1/pressure: 2.65
|
||||
| plant/alarm/high_pressure: 0
|
||||
| plant/$SYS/broker/version: Mosquitto 2.0.15
|
||||
| plant/alarm/low_chlorine: 0
|
||||
| plant/water/valve/inlet/state: OPEN
|
||||
| plant/water/chlorine/residual: 0.7
|
||||
| plant/water/pump1/status: RUNNING
|
||||
| plant/water/pump2/status: STANDBY
|
||||
| plant/water/valve/drain/state: CLOSED
|
||||
| plant/water/pump1/rpm: 1432
|
||||
| plant/water/tank1/level: 77.9
|
||||
| plant/water/chlorine/dosing: 1.2
|
||||
|_ plant/$SYS/broker/uptime: 2847392
|
||||
2121/tcp open ccproxy-ftp?
|
||||
| fingerprint-strings:
|
||||
| GenericLines:
|
||||
| 200 FTP server ready.
|
||||
| Command '
|
||||
| understood
|
||||
| NULL:
|
||||
|_ 200 FTP server ready.
|
||||
2375/tcp open docker Docker 24.0.5
|
||||
| fingerprint-strings:
|
||||
| GetRequest:
|
||||
| HTTP/1.1 404 NOT FOUND
|
||||
| Server: Werkzeug/3.1.8 Python/3.11.2
|
||||
| Date: Sat, 11 Apr 2026 08:21:18 GMT
|
||||
| Content-Type: application/json
|
||||
| Content-Length: 46
|
||||
| Connection: close
|
||||
| {"message": "page not found", "response": 404}
|
||||
| HTTPOptions:
|
||||
| HTTP/1.1 200 OK
|
||||
| Server: Werkzeug/3.1.8 Python/3.11.2
|
||||
| Date: Sat, 11 Apr 2026 08:21:18 GMT
|
||||
| Content-Type: text/html; charset=utf-8
|
||||
| Allow: HEAD, GET, OPTIONS
|
||||
| Content-Length: 0
|
||||
| Connection: close
|
||||
| Hello:
|
||||
| <!DOCTYPE HTML>
|
||||
| <html lang="en">
|
||||
| <head>
|
||||
| <meta charset="utf-8">
|
||||
| <title>Error response</title>
|
||||
| </head>
|
||||
| <body>
|
||||
| <h1>Error response</h1>
|
||||
| <p>Error code: 400</p>
|
||||
| <p>Message: Bad request syntax ('EHLO').</p>
|
||||
| <p>Error code explanation: 400 - Bad request syntax or unsupported method.</p>
|
||||
| </body>
|
||||
| </html>
|
||||
| RTSPRequest:
|
||||
| <!DOCTYPE HTML>
|
||||
| <html lang="en">
|
||||
| <head>
|
||||
| <meta charset="utf-8">
|
||||
| <title>Error response</title>
|
||||
| </head>
|
||||
| <body>
|
||||
| <h1>Error response</h1>
|
||||
| <p>Error code: 400</p>
|
||||
| <p>Message: Bad request version ('RTSP/1.0').</p>
|
||||
| <p>Error code explanation: 400 - Bad request syntax or unsupported method.</p>
|
||||
| </body>
|
||||
| </html>
|
||||
| docker:
|
||||
| HTTP/1.1 200 OK
|
||||
| Server: Werkzeug/3.1.8 Python/3.11.2
|
||||
| Date: Sat, 11 Apr 2026 08:21:18 GMT
|
||||
| Content-Type: application/json
|
||||
| Content-Length: 187
|
||||
| Connection: close
|
||||
|_ {"Version": "24.0.5", "ApiVersion": "1.43", "MinAPIVersion": "1.12", "GitCommit": "ced0996", "GoVersion": "go1.20.6", "Os": "linux", "Arch": "amd64", "KernelVersion": "5.15.0-76-generic"}
|
||||
| docker-version:
|
||||
| GitCommit: ced0996
|
||||
| GoVersion: go1.20.6
|
||||
| KernelVersion: 5.15.0-76-generic
|
||||
| Version: 24.0.5
|
||||
| Arch: amd64
|
||||
| MinAPIVersion: 1.12
|
||||
| ApiVersion: 1.43
|
||||
|_ Os: linux
|
||||
3306/tcp open mysql MySQL 5.7.38-log
|
||||
| mysql-info:
|
||||
| Protocol: 10
|
||||
| Version: 5.7.38-log
|
||||
| Thread ID: 1
|
||||
| Capabilities flags: 63487
|
||||
| Some Capabilities: LongPassword, LongColumnFlag, IgnoreSpaceBeforeParenthesis, SupportsLoadDataLocal, InteractiveClient, Speaks41ProtocolOld, SupportsCompression, Speaks41ProtocolNew, IgnoreSigpipes, DontAllowDatabaseTableColumn, SupportsTransactions, Support41Auth, ODBCClient, ConnectWithDatabase, FoundRows, SupportsAuthPlugins, SupportsMultipleStatments, SupportsMultipleResults
|
||||
| Status: Autocommit
|
||||
| Salt: pv!magic!O}%>UM|gu^1
|
||||
|_ Auth Plugin Name: mysql_native_password
|
||||
3389/tcp open ms-wbt-server xrdp
|
||||
5060/tcp open sip (SIP end point; Status: 401 Unauthorized)
|
||||
| fingerprint-strings:
|
||||
| HTTPOptions:
|
||||
| SIP/2.0 401 Unauthorized
|
||||
| Via:
|
||||
| From:
|
||||
| Call-ID:
|
||||
| CSeq:
|
||||
| WWW-Authenticate: Digest realm="omega-decky", nonce="39b4807e4f2565a7", algorithm=MD5
|
||||
| Content-Length: 0
|
||||
| RTSPRequest:
|
||||
| SIP/2.0 401 Unauthorized
|
||||
| Via:
|
||||
| From:
|
||||
| Call-ID:
|
||||
| CSeq:
|
||||
| WWW-Authenticate: Digest realm="omega-decky", nonce="73b517049d1e9586", algorithm=MD5
|
||||
| Content-Length: 0
|
||||
| SIPOptions:
|
||||
| SIP/2.0 401 Unauthorized
|
||||
| Via: SIP/2.0/TCP nm;branch=foo
|
||||
| From: <sip:nm@nm>;tag=root
|
||||
| <sip:nm2@nm2>
|
||||
| Call-ID: 50000
|
||||
| CSeq: 42 OPTIONS
|
||||
| WWW-Authenticate: Digest realm="omega-decky", nonce="4895a904f454dcfb", algorithm=MD5
|
||||
|_ Content-Length: 0
|
||||
5432/tcp open postgresql?
|
||||
5900/tcp open vnc VNC (protocol 3.8)
|
||||
| vnc-info:
|
||||
| Protocol version: 3.8
|
||||
| Security types:
|
||||
|_ VNC Authentication (2)
|
||||
6379/tcp open redis?
|
||||
| fingerprint-strings:
|
||||
| HELP4STOMP, HTTPOptions, Hello, Help, Kerberos, LPDString, Memcache, NessusTPv10, NessusTPv11, NessusTPv12, RTSPRequest, SSLSessionReq, SSLv23SessionReq, Socks5, SqueezeCenter_CLI, TLSSessionReq, TerminalServerCookie, Verifier, VerifierAdvanced, WWWOFFLEctrlstat, ajp, dominoconsole, firebird:
|
||||
| -ERR unknown command
|
||||
| LDAPSearchReq, hp-pjl, pervasive-btrieve:
|
||||
| -ERR unknown command
|
||||
| -ERR unknown command
|
||||
| SIPOptions:
|
||||
| -ERR unknown command
|
||||
| -ERR unknown command
|
||||
| -ERR unknown command
|
||||
| -ERR unknown command
|
||||
| -ERR unknown command
|
||||
| -ERR unknown command
|
||||
| -ERR unknown command
|
||||
| -ERR unknown command
|
||||
| -ERR unknown command
|
||||
| -ERR unknown command
|
||||
| redis-server:
|
||||
| $150
|
||||
| Server
|
||||
| redis_version:7.2.7
|
||||
| redis_mode:standalone
|
||||
| os:Linux 5.15.0
|
||||
| arch_bits:64
|
||||
| tcp_port:6379
|
||||
| uptime_in_seconds:864000
|
||||
| connected_clients:1
|
||||
|_ Keyspace
|
||||
6443/tcp open sun-sr-https?
|
||||
| fingerprint-strings:
|
||||
| GetRequest:
|
||||
| HTTP/1.1 404 NOT FOUND
|
||||
| Server: Werkzeug/3.1.8 Python/3.11.2
|
||||
| Date: Sat, 11 Apr 2026 08:21:18 GMT
|
||||
| Content-Type: application/json
|
||||
| Content-Length: 52
|
||||
| Connection: close
|
||||
| {"kind": "Status", "status": "Failure", "code": 404}
|
||||
| HTTPOptions:
|
||||
| HTTP/1.1 200 OK
|
||||
| Server: Werkzeug/3.1.8 Python/3.11.2
|
||||
| Date: Sat, 11 Apr 2026 08:21:18 GMT
|
||||
| Content-Type: text/html; charset=utf-8
|
||||
| Allow: HEAD, GET, OPTIONS
|
||||
| Content-Length: 0
|
||||
| Connection: close
|
||||
| RTSPRequest:
|
||||
| <!DOCTYPE HTML>
|
||||
| <html lang="en">
|
||||
| <head>
|
||||
| <meta charset="utf-8">
|
||||
| <title>Error response</title>
|
||||
| </head>
|
||||
| <body>
|
||||
| <h1>Error response</h1>
|
||||
| <p>Error code: 400</p>
|
||||
| <p>Message: Bad request version ('RTSP/1.0').</p>
|
||||
| <p>Error code explanation: 400 - Bad request syntax or unsupported method.</p>
|
||||
| </body>
|
||||
| </html>
|
||||
| SSLSessionReq:
|
||||
| <!DOCTYPE HTML>
|
||||
| <html lang="en">
|
||||
| <head>
|
||||
| <meta charset="utf-8">
|
||||
| <title>Error response</title>
|
||||
| </head>
|
||||
| <body>
|
||||
| <h1>Error response</h1>
|
||||
| <p>Error code: 400</p>
|
||||
| <p>Message: Bad request syntax ('
|
||||
| <=
|
||||
| ').</p>
|
||||
| <p>Error code explanation: 400 - Bad request syntax or unsupported method.</p>
|
||||
| </body>
|
||||
|_ </html>
|
||||
8800/tcp open sunwebadmin?
|
||||
| fingerprint-strings:
|
||||
| GetRequest:
|
||||
| HTTP/1.1 302 Found
|
||||
| Date: Sat, 11 Apr 2026 08:17:44 GMT
|
||||
| Content-Type: text/html
|
||||
| Location: /index.html
|
||||
| Content-Length: 0
|
||||
| HTTPOptions:
|
||||
| HTTP/1.1 200 OK
|
||||
| Date: Sat, 11 Apr 2026 08:17:44 GMT
|
||||
| Allow: GET,HEAD,POST,OPTIONS,TRACE
|
||||
| Content-Length: 0
|
||||
| Connection: close
|
||||
|_ Content-Type: text/html
|
||||
9200/tcp open wap-wsp?
|
||||
| fingerprint-strings:
|
||||
| GetRequest:
|
||||
| HTTP/1.0 200 OK
|
||||
| Server: elasticsearch
|
||||
| Date: Sat, 11 Apr 2026 08:21:18 GMT
|
||||
| Content-Type: application/json; charset=UTF-8
|
||||
| Content-Length: 477
|
||||
| X-elastic-product: Elasticsearch
|
||||
| {"name": "omega-decky", "cluster_name": "elasticsearch", "cluster_uuid": "xC3Pr9abTq2mNkOeLvXwYA", "version": {"number": "7.17.9", "build_flavor": "default", "build_type": "docker", "build_hash": "ef48222227ee6b9e70e502f0f0daa52435ee634d", "build_date": "2023-01-31T05:34:43.305517834Z", "build_snapshot": false, "lucene_version": "8.11.1", "minimum_wire_compatibility_version": "6.8.0", "minimum_index_compatibility_version": "6.0.0-beta1"}, "tagline": "You Know, for Search"}
|
||||
| HTTPOptions:
|
||||
| HTTP/1.0 501 Unsupported method ('OPTIONS')
|
||||
| Server: elasticsearch
|
||||
| Date: Sat, 11 Apr 2026 08:21:18 GMT
|
||||
| Connection: close
|
||||
| Content-Type: text/html;charset=utf-8
|
||||
| Content-Length: 360
|
||||
| <!DOCTYPE HTML>
|
||||
| <html lang="en">
|
||||
| <head>
|
||||
| <meta charset="utf-8">
|
||||
| <title>Error response</title>
|
||||
| </head>
|
||||
| <body>
|
||||
| <h1>Error response</h1>
|
||||
| <p>Error code: 501</p>
|
||||
| <p>Message: Unsupported method ('OPTIONS').</p>
|
||||
| <p>Error code explanation: 501 - Server does not support this operation.</p>
|
||||
| </body>
|
||||
| </html>
|
||||
| RTSPRequest:
|
||||
| <!DOCTYPE HTML>
|
||||
| <html lang="en">
|
||||
| <head>
|
||||
| <meta charset="utf-8">
|
||||
| <title>Error response</title>
|
||||
| </head>
|
||||
| <body>
|
||||
| <h1>Error response</h1>
|
||||
| <p>Error code: 400</p>
|
||||
| <p>Message: Bad request version ('RTSP/1.0').</p>
|
||||
| <p>Error code explanation: 400 - Bad request syntax or unsupported method.</p>
|
||||
| </body>
|
||||
|_ </html>
|
||||
10201/tcp open rsms?
|
||||
27017/tcp open mongod?
|
||||
|_mongodb-info: ERROR: Script execution failed (use -d to debug)
|
||||
|_mongodb-databases: ERROR: Script execution failed (use -d to debug)
|
||||
44818/tcp open EtherNetIP-2?
|
||||
9 services unrecognized despite returning data. If you know the service/version, please submit the following fingerprints at https://nmap.org/cgi-bin/submit.cgi?new-service :
|
||||
==============NEXT SERVICE FINGERPRINT (SUBMIT INDIVIDUALLY)==============
|
||||
SF-Port23-TCP:V=7.92%I=9%D=4/11%Time=69DA047E%P=x86_64-redhat-linux-gnu%r(
|
||||
SF:NULL,7,"login:\x20")%r(GenericLines,2C,"login:\x20\xff\xfb\x01Password:
|
||||
SF:\x20\nLogin\x20incorrect\nlogin:\x20")%r(tn3270,16,"login:\x20\xff\xfe\
|
||||
SF:x18\xff\xfe\x19\xff\xfc\x19\xff\xfe\0\xff\xfc\0")%r(GetRequest,2C,"logi
|
||||
SF:n:\x20\xff\xfb\x01Password:\x20\nLogin\x20incorrect\nlogin:\x20")%r(HTT
|
||||
SF:POptions,2C,"login:\x20\xff\xfb\x01Password:\x20\nLogin\x20incorrect\nl
|
||||
SF:ogin:\x20")%r(RTSPRequest,2C,"login:\x20\xff\xfb\x01Password:\x20\nLogi
|
||||
SF:n\x20incorrect\nlogin:\x20")%r(RPCCheck,7,"login:\x20")%r(DNSVersionBin
|
||||
SF:dReqTCP,7,"login:\x20")%r(DNSStatusRequestTCP,7,"login:\x20")%r(Hello,1
|
||||
SF:4,"login:\x20\xff\xfb\x01Password:\x20")%r(Help,14,"login:\x20\xff\xfb\
|
||||
SF:x01Password:\x20")%r(SSLSessionReq,14,"login:\x20\xff\xfb\x01Password:\
|
||||
SF:x20")%r(TerminalServerCookie,14,"login:\x20\xff\xfb\x01Password:\x20")%
|
||||
SF:r(TLSSessionReq,7,"login:\x20")%r(SSLv23SessionReq,14,"login:\x20\xff\x
|
||||
SF:fb\x01Password:\x20")%r(Kerberos,14,"login:\x20\xff\xfb\x01Password:\x2
|
||||
SF:0")%r(X11Probe,7,"login:\x20")%r(FourOhFourRequest,2C,"login:\x20\xff\x
|
||||
SF:fb\x01Password:\x20\nLogin\x20incorrect\nlogin:\x20")%r(LPDString,14,"l
|
||||
SF:ogin:\x20\xff\xfb\x01Password:\x20")%r(LDAPSearchReq,2C,"login:\x20\xff
|
||||
SF:\xfb\x01Password:\x20\nLogin\x20incorrect\nlogin:\x20")%r(LDAPBindReq,7
|
||||
SF:,"login:\x20")%r(SIPOptions,BE,"login:\x20\xff\xfb\x01Password:\x20\nLo
|
||||
SF:gin\x20incorrect\nlogin:\x20Password:\x20\nLogin\x20incorrect\nlogin:\x
|
||||
SF:20Password:\x20\nLogin\x20incorrect\nlogin:\x20Password:\x20\nLogin\x20
|
||||
SF:incorrect\nlogin:\x20Password:\x20\nLogin\x20incorrect\nlogin:\x20Passw
|
||||
SF:ord:\x20")%r(LANDesk-RC,7,"login:\x20")%r(TerminalServer,7,"login:\x20"
|
||||
SF:)%r(NotesRPC,7,"login:\x20")%r(DistCCD,7,"login:\x20")%r(JavaRMI,7,"log
|
||||
SF:in:\x20")%r(Radmin,7,"login:\x20")%r(NessusTPv12,14,"login:\x20\xff\xfb
|
||||
SF:\x01Password:\x20")%r(NessusTPv11,14,"login:\x20\xff\xfb\x01Password:\x
|
||||
SF:20")%r(NessusTPv10,14,"login:\x20\xff\xfb\x01Password:\x20")%r(WMSReque
|
||||
SF:st,7,"login:\x20")%r(mydoom,7,"login:\x20")%r(WWWOFFLEctrlstat,14,"logi
|
||||
SF:n:\x20\xff\xfb\x01Password:\x20")%r(Verifier,14,"login:\x20\xff\xfb\x01
|
||||
SF:Password:\x20")%r(VerifierAdvanced,14,"login:\x20\xff\xfb\x01Password:\
|
||||
SF:x20");
|
||||
==============NEXT SERVICE FINGERPRINT (SUBMIT INDIVIDUALLY)==============
|
||||
SF-Port110-TCP:V=7.92%I=9%D=4/11%Time=69DA047E%P=x86_64-redhat-linux-gnu%r
|
||||
SF:(NULL,25,"\+OK\x20omega-decky\x20Dovecot\x20POP3\x20ready\.\r\n")%r(Gen
|
||||
SF:ericLines,25,"\+OK\x20omega-decky\x20Dovecot\x20POP3\x20ready\.\r\n")%r
|
||||
SF:(GetRequest,42,"\+OK\x20omega-decky\x20Dovecot\x20POP3\x20ready\.\r\n-E
|
||||
SF:RR\x20Command\x20not\x20recognized\r\n")%r(HTTPOptions,42,"\+OK\x20omeg
|
||||
SF:a-decky\x20Dovecot\x20POP3\x20ready\.\r\n-ERR\x20Command\x20not\x20reco
|
||||
SF:gnized\r\n")%r(RTSPRequest,42,"\+OK\x20omega-decky\x20Dovecot\x20POP3\x
|
||||
SF:20ready\.\r\n-ERR\x20Command\x20not\x20recognized\r\n")%r(RPCCheck,25,"
|
||||
SF:\+OK\x20omega-decky\x20Dovecot\x20POP3\x20ready\.\r\n")%r(DNSVersionBin
|
||||
SF:dReqTCP,25,"\+OK\x20omega-decky\x20Dovecot\x20POP3\x20ready\.\r\n")%r(D
|
||||
SF:NSStatusRequestTCP,25,"\+OK\x20omega-decky\x20Dovecot\x20POP3\x20ready\
|
||||
SF:.\r\n")%r(Hello,42,"\+OK\x20omega-decky\x20Dovecot\x20POP3\x20ready\.\r
|
||||
SF:\n-ERR\x20Command\x20not\x20recognized\r\n")%r(Help,42,"\+OK\x20omega-d
|
||||
SF:ecky\x20Dovecot\x20POP3\x20ready\.\r\n-ERR\x20Command\x20not\x20recogni
|
||||
SF:zed\r\n")%r(SSLSessionReq,42,"\+OK\x20omega-decky\x20Dovecot\x20POP3\x2
|
||||
SF:0ready\.\r\n-ERR\x20Command\x20not\x20recognized\r\n")%r(TerminalServer
|
||||
SF:Cookie,42,"\+OK\x20omega-decky\x20Dovecot\x20POP3\x20ready\.\r\n-ERR\x2
|
||||
SF:0Command\x20not\x20recognized\r\n")%r(TLSSessionReq,42,"\+OK\x20omega-d
|
||||
SF:ecky\x20Dovecot\x20POP3\x20ready\.\r\n-ERR\x20Command\x20not\x20recogni
|
||||
SF:zed\r\n")%r(SSLv23SessionReq,42,"\+OK\x20omega-decky\x20Dovecot\x20POP3
|
||||
SF:\x20ready\.\r\n-ERR\x20Command\x20not\x20recognized\r\n")%r(Kerberos,42
|
||||
SF:,"\+OK\x20omega-decky\x20Dovecot\x20POP3\x20ready\.\r\n-ERR\x20Command\
|
||||
SF:x20not\x20recognized\r\n")%r(SMBProgNeg,25,"\+OK\x20omega-decky\x20Dove
|
||||
SF:cot\x20POP3\x20ready\.\r\n")%r(X11Probe,25,"\+OK\x20omega-decky\x20Dove
|
||||
SF:cot\x20POP3\x20ready\.\r\n")%r(FourOhFourRequest,42,"\+OK\x20omega-deck
|
||||
SF:y\x20Dovecot\x20POP3\x20ready\.\r\n-ERR\x20Command\x20not\x20recognized
|
||||
SF:\r\n")%r(LPDString,42,"\+OK\x20omega-decky\x20Dovecot\x20POP3\x20ready\
|
||||
SF:.\r\n-ERR\x20Command\x20not\x20recognized\r\n")%r(LDAPSearchReq,5F,"\+O
|
||||
SF:K\x20omega-decky\x20Dovecot\x20POP3\x20ready\.\r\n-ERR\x20Command\x20no
|
||||
SF:t\x20recognized\r\n-ERR\x20Command\x20not\x20recognized\r\n");
|
||||
==============NEXT SERVICE FINGERPRINT (SUBMIT INDIVIDUALLY)==============
|
||||
SF-Port445-TCP:V=7.92%I=9%D=4/11%Time=69DA0483%P=x86_64-redhat-linux-gnu%r
|
||||
SF:(SMBProgNeg,51,"\0\0\0M\xffSMBr\0\0\0\0\x80\0\xc0\0\0\0\0\0\0\0\0\0\0\0
|
||||
SF:\0\0\0@\x06\0\0\x01\0\x11\x07\0\x03\x01\0\x01\0\0\xfa\0\0\0\0\x01\0\0\0
|
||||
SF:\0\0p\0\0\0\0\0\0\0\0\0\0\0\0\0\x08\x08\0\x11\"3DUfw\x88");
|
||||
==============NEXT SERVICE FINGERPRINT (SUBMIT INDIVIDUALLY)==============
|
||||
SF-Port1433-TCP:V=7.92%I=9%D=4/11%Time=69DA0483%P=x86_64-redhat-linux-gnu%
|
||||
SF:r(ms-sql-s,2F,"\x04\x01\0/\0\0\x01\0\0\0\x1a\0\x06\x01\0\x20\0\x01\x02\
|
||||
SF:0!\0\x01\x03\0\"\0\x04\x04\0&\0\x01\xff\x0e\0\x07\xd0\0\0\x02\0\0\0\0\0
|
||||
SF:\0");
|
||||
==============NEXT SERVICE FINGERPRINT (SUBMIT INDIVIDUALLY)==============
|
||||
SF-Port2121-TCP:V=7.92%I=9%D=4/11%Time=69DA047E%P=x86_64-redhat-linux-gnu%
|
||||
SF:r(NULL,17,"200\x20FTP\x20server\x20ready\.\r\n")%r(GenericLines,3A,"200
|
||||
SF:\x20FTP\x20server\x20ready\.\r\n500\x20Command\x20'\\r\\n'\x20not\x20un
|
||||
SF:derstood\r\n");
|
||||
==============NEXT SERVICE FINGERPRINT (SUBMIT INDIVIDUALLY)==============
|
||||
SF-Port5060-TCP:V=7.92%I=9%D=4/11%Time=69DA048A%P=x86_64-redhat-linux-gnu%
|
||||
SF:r(SIPOptions,F7,"SIP/2\.0\x20401\x20Unauthorized\r\nVia:\x20SIP/2\.0/TC
|
||||
SF:P\x20nm;branch=foo\r\nFrom:\x20<sip:nm@nm>;tag=root\r\nTo:\x20<sip:nm2@
|
||||
SF:nm2>\r\nCall-ID:\x2050000\r\nCSeq:\x2042\x20OPTIONS\r\nWWW-Authenticate
|
||||
SF::\x20Digest\x20realm=\"omega-decky\",\x20nonce=\"4895a904f454dcfb\",\x2
|
||||
SF:0algorithm=MD5\r\nContent-Length:\x200\r\n\r\n")%r(HTTPOptions,AE,"SIP/
|
||||
SF:2\.0\x20401\x20Unauthorized\r\nVia:\x20\r\nFrom:\x20\r\nTo:\x20\r\nCall
|
||||
SF:-ID:\x20\r\nCSeq:\x20\r\nWWW-Authenticate:\x20Digest\x20realm=\"omega-d
|
||||
SF:ecky\",\x20nonce=\"39b4807e4f2565a7\",\x20algorithm=MD5\r\nContent-Leng
|
||||
SF:th:\x200\r\n\r\n")%r(RTSPRequest,AE,"SIP/2\.0\x20401\x20Unauthorized\r\
|
||||
SF:nVia:\x20\r\nFrom:\x20\r\nTo:\x20\r\nCall-ID:\x20\r\nCSeq:\x20\r\nWWW-A
|
||||
SF:uthenticate:\x20Digest\x20realm=\"omega-decky\",\x20nonce=\"73b517049d1
|
||||
SF:e9586\",\x20algorithm=MD5\r\nContent-Length:\x200\r\n\r\n");
|
||||
==============NEXT SERVICE FINGERPRINT (SUBMIT INDIVIDUALLY)==============
|
||||
SF-Port5432-TCP:V=7.92%I=9%D=4/11%Time=69DA048D%P=x86_64-redhat-linux-gnu%
|
||||
SF:r(SMBProgNeg,D,"R\0\0\0\x0c\0\0\0\x059=\xdb\x16")%r(Kerberos,D,"R\0\0\0
|
||||
SF:\x0c\0\0\0\x05\xae>;\xd5")%r(ZendJavaBridge,D,"R\0\0\0\x0c\0\0\0\x05\x8
|
||||
SF:3l\x7f\x8c");
|
||||
==============NEXT SERVICE FINGERPRINT (SUBMIT INDIVIDUALLY)==============
|
||||
SF-Port6379-TCP:V=7.92%I=9%D=4/11%Time=69DA0483%P=x86_64-redhat-linux-gnu%
|
||||
SF:r(redis-server,9E,"\$150\r\n#\x20Server\nredis_version:7\.2\.7\nredis_m
|
||||
SF:ode:standalone\nos:Linux\x205\.15\.0\narch_bits:64\ntcp_port:6379\nupti
|
||||
SF:me_in_seconds:864000\nconnected_clients:1\n#\x20Keyspace\n\r\n")%r(GetR
|
||||
SF:equest,5,"\$-1\r\n")%r(HTTPOptions,16,"-ERR\x20unknown\x20command\r\n")
|
||||
SF:%r(RTSPRequest,16,"-ERR\x20unknown\x20command\r\n")%r(Hello,16,"-ERR\x2
|
||||
SF:0unknown\x20command\r\n")%r(Help,16,"-ERR\x20unknown\x20command\r\n")%r
|
||||
SF:(SSLSessionReq,16,"-ERR\x20unknown\x20command\r\n")%r(TerminalServerCoo
|
||||
SF:kie,16,"-ERR\x20unknown\x20command\r\n")%r(TLSSessionReq,16,"-ERR\x20un
|
||||
SF:known\x20command\r\n")%r(SSLv23SessionReq,16,"-ERR\x20unknown\x20comman
|
||||
SF:d\r\n")%r(Kerberos,16,"-ERR\x20unknown\x20command\r\n")%r(FourOhFourReq
|
||||
SF:uest,5,"\$-1\r\n")%r(LPDString,16,"-ERR\x20unknown\x20command\r\n")%r(L
|
||||
SF:DAPSearchReq,2C,"-ERR\x20unknown\x20command\r\n-ERR\x20unknown\x20comma
|
||||
SF:nd\r\n")%r(SIPOptions,DC,"-ERR\x20unknown\x20command\r\n-ERR\x20unknown
|
||||
SF:\x20command\r\n-ERR\x20unknown\x20command\r\n-ERR\x20unknown\x20command
|
||||
SF:\r\n-ERR\x20unknown\x20command\r\n-ERR\x20unknown\x20command\r\n-ERR\x2
|
||||
SF:0unknown\x20command\r\n-ERR\x20unknown\x20command\r\n-ERR\x20unknown\x2
|
||||
SF:0command\r\n-ERR\x20unknown\x20command\r\n")%r(NessusTPv12,16,"-ERR\x20
|
||||
SF:unknown\x20command\r\n")%r(NessusTPv11,16,"-ERR\x20unknown\x20command\r
|
||||
SF:\n")%r(NessusTPv10,16,"-ERR\x20unknown\x20command\r\n")%r(WWWOFFLEctrls
|
||||
SF:tat,16,"-ERR\x20unknown\x20command\r\n")%r(Verifier,16,"-ERR\x20unknown
|
||||
SF:\x20command\r\n")%r(VerifierAdvanced,16,"-ERR\x20unknown\x20command\r\n
|
||||
SF:")%r(Socks5,16,"-ERR\x20unknown\x20command\r\n")%r(OfficeScan,5,"\$-1\r
|
||||
SF:\n")%r(HELP4STOMP,16,"-ERR\x20unknown\x20command\r\n")%r(Memcache,16,"-
|
||||
SF:ERR\x20unknown\x20command\r\n")%r(firebird,16,"-ERR\x20unknown\x20comma
|
||||
SF:nd\r\n")%r(pervasive-btrieve,2C,"-ERR\x20unknown\x20command\r\n-ERR\x20
|
||||
SF:unknown\x20command\r\n")%r(ajp,16,"-ERR\x20unknown\x20command\r\n")%r(h
|
||||
SF:p-pjl,2C,"-ERR\x20unknown\x20command\r\n-ERR\x20unknown\x20command\r\n"
|
||||
SF:)%r(SqueezeCenter_CLI,16,"-ERR\x20unknown\x20command\r\n")%r(dominocons
|
||||
SF:ole,16,"-ERR\x20unknown\x20command\r\n");
|
||||
==============NEXT SERVICE FINGERPRINT (SUBMIT INDIVIDUALLY)==============
|
||||
SF-Port6443-TCP:V=7.92%I=9%D=4/11%Time=69DA047E%P=x86_64-redhat-linux-gnu%
|
||||
SF:r(SSLSessionReq,1E8,"<!DOCTYPE\x20HTML>\n<html\x20lang=\"en\">\n\x20\x2
|
||||
SF:0\x20\x20<head>\n\x20\x20\x20\x20\x20\x20\x20\x20<meta\x20charset=\"utf
|
||||
SF:-8\">\n\x20\x20\x20\x20\x20\x20\x20\x20<title>Error\x20response</title>
|
||||
SF:\n\x20\x20\x20\x20</head>\n\x20\x20\x20\x20<body>\n\x20\x20\x20\x20\x20
|
||||
SF:\x20\x20\x20<h1>Error\x20response</h1>\n\x20\x20\x20\x20\x20\x20\x20\x2
|
||||
SF:0<p>Error\x20code:\x20400</p>\n\x20\x20\x20\x20\x20\x20\x20\x20<p>Messa
|
||||
SF:ge:\x20Bad\x20request\x20syntax\x20\('\\x16\\x03\\x00\\x00S\\x01\\x00\\
|
||||
SF:x00O\\x03\\x00\?G\xc3\x97\xc3\xb7\xc2\xba,\xc3\xae\xc3\xaa\xc2\xb2`~\xc
|
||||
SF:3\xb3\\x00\xc3\xbd\\x82{\xc2\xb9\xc3\x95\\x96\xc3\x88w\\x9b\xc3\xa6\xc3
|
||||
SF:\x84\xc3\x9b<=\xc3\x9bo\xc3\xaf\\x10n\\x00\\x00\(\\x00\\x16\\x00\\x1
|
||||
SF:3\\x00'\)\.</p>\n\x20\x20\x20\x20\x20\x20\x20\x20<p>Error\x20code\x20ex
|
||||
SF:planation:\x20400\x20-\x20Bad\x20request\x20syntax\x20or\x20unsupported
|
||||
SF:\x20method\.</p>\n\x20\x20\x20\x20</body>\n</html>\n")%r(GetRequest,E0,
|
||||
SF:"HTTP/1\.1\x20404\x20NOT\x20FOUND\r\nServer:\x20Werkzeug/3\.1\.8\x20Pyt
|
||||
SF:hon/3\.11\.2\r\nDate:\x20Sat,\x2011\x20Apr\x202026\x2008:21:18\x20GMT\r
|
||||
SF:\nContent-Type:\x20application/json\r\nContent-Length:\x2052\r\nConnect
|
||||
SF:ion:\x20close\r\n\r\n{\"kind\":\x20\"Status\",\x20\"status\":\x20\"Fail
|
||||
SF:ure\",\x20\"code\":\x20404}")%r(HTTPOptions,C7,"HTTP/1\.1\x20200\x20OK\
|
||||
SF:r\nServer:\x20Werkzeug/3\.1\.8\x20Python/3\.11\.2\r\nDate:\x20Sat,\x201
|
||||
SF:1\x20Apr\x202026\x2008:21:18\x20GMT\r\nContent-Type:\x20text/html;\x20c
|
||||
SF:harset=utf-8\r\nAllow:\x20HEAD,\x20GET,\x20OPTIONS\r\nContent-Length:\x
|
||||
SF:200\r\nConnection:\x20close\r\n\r\n")%r(RTSPRequest,16C,"<!DOCTYPE\x20H
|
||||
SF:TML>\n<html\x20lang=\"en\">\n\x20\x20\x20\x20<head>\n\x20\x20\x20\x20\x
|
||||
SF:20\x20\x20\x20<meta\x20charset=\"utf-8\">\n\x20\x20\x20\x20\x20\x20\x20
|
||||
SF:\x20<title>Error\x20response</title>\n\x20\x20\x20\x20</head>\n\x20\x20
|
||||
SF:\x20\x20<body>\n\x20\x20\x20\x20\x20\x20\x20\x20<h1>Error\x20response</
|
||||
SF:h1>\n\x20\x20\x20\x20\x20\x20\x20\x20<p>Error\x20code:\x20400</p>\n\x20
|
||||
SF:\x20\x20\x20\x20\x20\x20\x20<p>Message:\x20Bad\x20request\x20version\x2
|
||||
SF:0\('RTSP/1\.0'\)\.</p>\n\x20\x20\x20\x20\x20\x20\x20\x20<p>Error\x20cod
|
||||
SF:e\x20explanation:\x20400\x20-\x20Bad\x20request\x20syntax\x20or\x20unsu
|
||||
SF:pported\x20method\.</p>\n\x20\x20\x20\x20</body>\n</html>\n");
|
||||
MAC Address: 5A:84:B9:11:A3:E8 (Unknown)
|
||||
Device type: general purpose
|
||||
Running: Linux 5.X
|
||||
OS CPE: cpe:/o:linux:linux_kernel:5
|
||||
OS details: Linux 5.3 - 5.4
|
||||
Network Distance: 1 hop
|
||||
Service Info: Hosts: omega-decky, omega-decky
|
||||
|
||||
Host script results:
|
||||
| smb2-security-mode:
|
||||
| 2.0.2:
|
||||
|_ Message signing enabled but not required
|
||||
|_clock-skew: mean: -77664d04h15m02s, deviation: 109833d17h34m55s, median: -155328d08h30m05s
|
||||
| smb2-time:
|
||||
| date: 2026-04-11T08:30:06
|
||||
|_ start_date: 2026-04-11T08:30:06
|
||||
| smb-security-mode:
|
||||
| account_used: guest
|
||||
| authentication_level: user
|
||||
| challenge_response: supported
|
||||
|_ message_signing: disabled (dangerous, but default)
|
||||
|_ms-sql-info: ERROR: Script execution failed (use -d to debug)
|
||||
|
||||
TRACEROUTE
|
||||
HOP RTT ADDRESS
|
||||
1 0.03 ms 192.168.1.200
|
||||
|
||||
Nmap scan report for 192.168.1.201
|
||||
Host is up (0.000037s latency).
|
||||
Not shown: 65534 closed tcp ports (reset)
|
||||
PORT STATE SERVICE VERSION
|
||||
25/tcp open smtp Postfix smtpd
|
||||
|_smtp-commands: relay-decky, PIPELINING, SIZE 10240000, VRFY, ETRN, AUTH PLAIN LOGIN, ENHANCEDSTATUSCODES, 8BITMIME, DSN
|
||||
MAC Address: 0E:84:8E:09:6A:47 (Unknown)
|
||||
No exact OS matches for host (If you know what OS is running on it, see https://nmap.org/submit/ ).
|
||||
TCP/IP fingerprint:
|
||||
OS:SCAN(V=7.92%E=4%D=4/11%OT=25%CT=1%CU=38325%PV=Y%DS=1%DC=D%G=Y%M=0E848E%T
|
||||
OS:M=69DA07BC%P=x86_64-redhat-linux-gnu)SEQ(SP=101%GCD=1%ISR=10F%TI=Z%CI=Z%
|
||||
OS:TS=A)SEQ(SP=101%GCD=1%ISR=10F%TI=Z%CI=Z%II=I%TS=A)OPS(O1=M5B4ST11NWA%O2=
|
||||
OS:M5B4ST11NWA%O3=M5B4NNT11NWA%O4=M5B4ST11NWA%O5=M5B4ST11NWA%O6=M5B4ST11)WI
|
||||
OS:N(W1=FE88%W2=FE88%W3=FE88%W4=FE88%W5=FE88%W6=FE88)ECN(R=Y%DF=Y%T=40%W=FA
|
||||
OS:F0%O=M5B4NNSNWA%CC=Y%Q=)T1(R=Y%DF=Y%T=40%S=O%A=S+%F=AS%RD=0%Q=)T2(R=N)T3
|
||||
OS:(R=N)T4(R=Y%DF=Y%T=40%W=0%S=A%A=Z%F=R%O=%RD=0%Q=)T5(R=Y%DF=Y%T=40%W=0%S=
|
||||
OS:Z%A=S+%F=AR%O=%RD=0%Q=)T6(R=Y%DF=Y%T=40%W=0%S=A%A=Z%F=R%O=%RD=0%Q=)T7(R=
|
||||
OS:Y%DF=Y%T=40%W=0%S=Z%A=S+%F=AR%O=%RD=0%Q=)U1(R=Y%DF=N%T=40%IPL=164%UN=0%R
|
||||
OS:IPL=G%RID=G%RIPCK=G%RUCK=G%RUD=G)IE(R=Y%DFI=N%T=40%CD=S)
|
||||
|
||||
Network Distance: 1 hop
|
||||
Service Info: Host: relay-decky
|
||||
|
||||
TRACEROUTE
|
||||
HOP RTT ADDRESS
|
||||
1 0.04 ms 192.168.1.201
|
||||
|
||||
OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
|
||||
# Nmap done at Sat Apr 11 04:35:08 2026 -- 2 IP addresses (2 hosts up) scanned in 836.75 seconds
|
||||
Reference in New Issue
Block a user