Expand description
Multi-protocol passive fingerprinting library: TCP/HTTP (p0f-style) + TLS (JA4) analysis.
§Cargo Features
All features are opt-in: the default build is an empty shell. Pick the
analyses you actually consume, or use the convenience
full alias to opt into everything this version
offers (including future axes added in later releases).
| Feature | Default | Description |
|---|---|---|
full | No | Convenience alias for “everything this version offers” (currently db + every tcp-* + every http-* + tls-stable-v1). Stable across version upgrades; additions land here automatically. |
db | No | Pulls in huginn_net_db and enables p0f signature matching for TCP and HTTP. Combine with any tcp-* / http-* for label-producing builds; omit for an observation-only build (e.g. JA4-only or downstream consumers that bring their own matcher implementation). |
tcp-syn | No | Pass-through for huginn-net-tcp/syn: TCP SYN fingerprinting (FingerprintResult::tcp_syn). |
tcp-syn-ack | No | Pass-through for huginn-net-tcp/syn-ack: TCP SYN+ACK fingerprinting (FingerprintResult::tcp_syn_ack). |
tcp-mtu | No | Pass-through for huginn-net-tcp/mtu: MTU detection (FingerprintResult::tcp_mtu). |
tcp-uptime | No | Pass-through for huginn-net-tcp/uptime: uptime estimation for both client and server (FingerprintResult::tcp_client_uptime / tcp_server_uptime). |
http-p0f-request | No | Pass-through for huginn-net-http/p0f-request: HTTP request fingerprinting (FingerprintResult::http_request, HttpRequestOutput, Browser, BrowserQualityMatched). |
http-p0f-response | No | Pass-through for huginn-net-http/p0f-response: HTTP response fingerprinting (FingerprintResult::http_response, HttpResponseOutput, WebServer, WebServerQualityMatched). |
tls-stable-v1 | No | Adds JA4_s1 / JA4_rs1 fingerprints via huginn_net_tls, ephemeral extensions excluded for stable fingerprints. |
json | No | Enables serde::Serialize on FingerprintResult and analysis output types (pass-through to huginn-net-tcp/json, huginn-net-http/json, huginn-net-tls/json). Not included in full. |
Each tcp-* / http-* feature gates the corresponding field on
FingerprintResult and the matching re-exports. Disabling a feature
removes its field at compile time and shrinks the result struct. The
underlying parser also early-exits when none of the consumers for a
packet’s side are enabled, so disabling features is a zero-cost
optimization, not just a build configuration.
Common opt-in examples:
# Everything this version offers (forward-compatible).
huginn-net = { version = "2.0.0", features = ["full"] }
# p0f-style TCP+HTTP fingerprinting with database matching.
huginn-net = { version = "2.0.0", features = ["db", "tcp-syn", "tcp-syn-ack", "http-p0f-request", "http-p0f-response"] }
# Observation-only TCP SYN (no database, no matching).
huginn-net = { version = "2.0.0", features = ["tcp-syn"] }Re-exports§
pub use analyzer::AnalysisConfig;pub use analyzer::HuginnNet;pub use error::HuginnNetError;pub use output::FingerprintResult;pub use huginn_net_tcp;pub use huginn_net_http;pub use huginn_net_tls;
Modules§
Macros§
- quality_
match - Macro for quality matching pattern. This macro provides a zero-cost abstraction for the common pattern of conditional quality matching based on matcher_enabled configuration.
- simple_
quality_ match - Simplified quality matching macro for cases where the matcher call is straightforward.
Structs§
- Browser
- Represents a browser identified from an HTTP request signature.
- Browser
Quality Matched http-p0f-request - Database
db - Composite p0f database holding both TCP and HTTP sub-databases.
- Filter
Config - Combined filter configuration
- Http
Filter Config - Combined filter configuration
- Http
IpFilter - IP address filter configuration
- Http
Port Filter - Port filter configuration
- Http
Request Output http-p0f-request - Holds information derived from analyzing HTTP request headers.
- Http
Response Output http-p0f-response - Holds information derived from analyzing HTTP response headers.
- Http
Subnet Filter - Subnet filter configuration (CIDR notation)
- IpFilter
- IP address filter configuration
- Label
db - Represents a label associated with a signature, which provides metadata about the signature, such as type, class, name, and optional flavor details.
- MTUOutput
tcp-mtu - Holds information about the estimated Maximum Transmission Unit (MTU) of a link.
- MTUQuality
Matched tcp-mtu - OSQuality
Matched tcp-syn-ackortcp-syn - The operative system with the highest quality that matches the packet.
- Observable
Http Request http-p0f-request - Public-facing HTTP request observation: includes the matching payload plus raw signal fields useful to consumers (lang, UA, headers, cookies, …).
- Observable
Http Response http-p0f-response - Observable
Tcp tcp-syn-ackortcp-syn - Observable
TlsClient - Observable TLS Client signals
- Operative
System - Represents an operative system.
- Port
Filter - Port filter configuration
- Subnet
Filter - Subnet filter configuration (CIDR notation)
- SynAckTCP
Output tcp-syn-ack - Holds information derived from analyzing a TCP SYN+ACK packet (server response).
- SynTCP
Output tcp-syn - Holds information derived from analyzing a TCP SYN packet (client initiation).
- TlsClient
Output - Holds information derived from analyzing TLS ClientHello packets.
- TlsFilter
Config - Combined filter configuration
- TlsIp
Filter - IP address filter configuration
- TlsPort
Filter - Port filter configuration
- TlsSubnet
Filter - Subnet filter configuration (CIDR notation)
- Uptime
Output tcp-uptime - Holds uptime information derived from TCP timestamp analysis.
- WebServer
- Represents a web server identified from an HTTP response signature.
- WebServer
Quality Matched http-p0f-response
Enums§
- Http
Match Quality - Quality classification for an HTTP match.
- Http
OsKind - Whether a matched browser/web server label was a specified (concrete) or generic (catch-all) entry in the underlying database.
- TcpMatch
Quality - Outcome of matching an observation against a fingerprint database.
- TcpOs
Kind - Marker telling whether a fingerprint is a “specific” definition or a
“generic” fall-back. Equivalent to p0f’s
s/glabel prefix but expressed as a TCP-local enum, so this crate stays decoupled from any particular database format. - Ttl
- Time To Live (TTL) representation used for OS fingerprinting and network-distance estimation.
- Uptime
Role tcp-uptime - Represents the role of the host in the connection for uptime tracking.