Skip to content

feat(types,enrichers): add Technology type and tech_detect transformer - #183

Merged
dextmorgn merged 1 commit into
reconurge:mainfrom
rachit367:feat/technology-type-and-tech-detect
Jun 20, 2026
Merged

feat(types,enrichers): add Technology type and tech_detect transformer#183
dextmorgn merged 1 commit into
reconurge:mainfrom
rachit367:feat/technology-type-and-tech-detect

Conversation

@rachit367

Copy link
Copy Markdown
Contributor

What

Adds application-level technology fingerprinting as requested in #59:

  • a new Technology type, and
  • a new tech_detect transformer (WebsiteTechnology) built on the existing httpx tool.

Closes #59

Why

Flowsint already models infrastructure (ip, port, website, ssl_certificate). This extends coverage into the application layer — what software/frameworks a site runs — which complements port/website data and lays groundwork for stack mapping and vuln correlation (the benefits called out in the issue).

Changes

flowsint-types/technology.py (new) — Technology(name, version, category, source), modeled on the existing WebTracker type. Registered via @flowsint_type, exported from flowsint_types/__init__.py, and added to TYPE_TO_MODEL. from_string accepts both bare names (nginx) and wappalyzer-style name:version pairs (PHP:8.1).

flowsint-enrichers/website/to_technologies.py (new) — TechDetectEnricher (name = "tech_detect"), auto-registered. Input Website, output Technology. Runs the existing HttpxTool with -td (httpx's wappalyzer-based tech detection), reads the tech field from the JSON output, de-dupes per probe, and links each technology to the source website with a USES_TECHNOLOGY relationship. Follows the established tool-backed enricher pattern (e.g. website_to_webtrackers, ip_to_ports).

The tech JSON field and the -td flag are per httpx's runner.Result struct (Technologies []string +"json:\"tech\""+`).

Testing

uv run --package flowsint-enrichers pytest flowsint-enrichers/tests/enrichers/ -q
13 passed

Tests cover the Technology type (label, from_string, registry membership), the tech-entry parser, enricher registration/metadata, and scan() with the httpx Docker tool mocked — so the suite needs no Docker daemon.

Scope note: the issue mentions an optional port input and optional Wappalyzer integration. I kept this PR to the WebsiteTechnology path using httpx's built-in wappalyzer dataset (-td), which is the smallest complete slice. Happy to follow up with a port-input variant if maintainers want it.

Adds application-level technology fingerprinting, extending coverage
beyond ip/port/website/ssl_certificate as requested in reconurge#59.

- New `Technology` type (name, version, category, source) registered in
  the type registry, the package exports, and TYPE_TO_MODEL. Its
  from_string accepts both bare names ("nginx") and wappalyzer-style
  "name:version" pairs ("PHP:8.1").
- New `tech_detect` enricher: Website -> Technology, using the existing
  httpx tool with -td (wappalyzer dataset). Each detected technology
  becomes a Technology node linked to the website with a
  USES_TECHNOLOGY relationship; results are de-duplicated per probe.

Tests cover the Technology type (label, from_string, registry), the
tech entry parser, enricher registration/metadata, and scan() with the
httpx Docker tool mocked, so no Docker daemon is required.

Closes reconurge#59
@dextmorgn
dextmorgn merged commit 7ea36bb into reconurge:main Jun 20, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add [Technology] type and transformer for service fingerprinting (using httpx)

2 participants