plugins

package
v1.37.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 2, 2026 License: Apache-2.0 Imports: 13 Imported by: 0

Documentation ¶

Index ¶

Constants ¶

View Source
const (
	ProtoActiveMQOpenWire  = "activemq-openwire"
	ProtoAJP               = "ajp"
	ProtoATG               = "atg"
	ProtoAMQP              = "amqp"
	ProtoAnyDesk           = "anydesk"
	ProtoBACnet            = "bacnet"
	ProtoBGP               = "bgp"
	ProtoCassandra         = "cassandra"
	ProtoChromaDB          = "chromadb"
	ProtoCitrixICA         = "citrix-ica"
	ProtoCoAP              = "coap"
	ProtoCODESYS           = "codesys"
	ProtoCrimsonV3         = "crimsonv3"
	ProtoCUPS              = "cups"
	ProtoCouchDB           = "couchdb"
	ProtoDB2               = "db2"
	ProtoDHCP              = "dhcp"
	ProtoDiameter          = "diameter"
	ProtoDNP3              = "dnp3"
	ProtoDNS               = "dns"
	ProtoDocker            = "docker"
	ProtoEcho              = "echo"
	ProtoEtherCAT          = "ethercat"
	ProtoElasticsearch     = "elasticsearch"
	ProtoEtcd              = "etcd"
	ProtoEthernetIP        = "ethernetip"
	ProtoFirebird          = "firebird"
	ProtoFox               = "fox"
	ProtoFTP               = "ftp"
	ProtoGESRTP            = "gesrtp"
	ProtoGit               = "git"
	ProtoGTPC              = "gtpc"
	ProtoGTPPrime          = "gtpprime"
	ProtoGRPC              = "grpc"
	ProtoGTPU              = "gtpu"
	ProtoH323              = "h323"
	ProtoHARTIP            = "hartip"
	ProtoIAX2              = "iax2"
	ProtoHTTP              = "http"
	ProtoHTTP2             = "http2"
	ProtoHTTPS             = "https"
	ProtoIEC104            = "iec104"
	ProtoIKEv2             = "ikev2"
	ProtoIMAP              = "imap"
	ProtoIMAPS             = "imaps"
	ProtoIRC               = "irc"
	ProtoIRCS              = "ircs"
	ProtoInfluxDB          = "influxdb"
	ProtoIPMI              = "ipmi"
	ProtoIPP               = "ipp"
	ProtoIPSEC             = "ipsec"
	ProtoIUA               = "iua"
	ProtoJetDirect         = "jetdirect"
	ProtoJDWP              = "jdwp"
	ProtoKafka             = "kafka"
	ProtoKerberos          = "kerberos"
	ProtoKNXIP             = "knxip"
	ProtoKubernetes        = "kubernetes"
	ProtoL2TP              = "l2tp"
	ProtoLDAP              = "ldap"
	ProtoLDAPS             = "ldaps"
	ProtoLibreChat         = "librechat"
	ProtoLwM2M             = "lwm2m"
	ProtoM2UA              = "m2ua"
	ProtoM3UA              = "m3ua"
	ProtoMegaco            = "megaco"
	ProtoMGCP              = "mgcp"
	ProtoMemcached         = "memcached"
	ProtoMelsecQ           = "melsec-q"
	ProtoMikroTikWinbox    = "mikrotik-winbox"
	ProtoMilvus            = "milvus"
	ProtoMilvusMetrics     = "milvus-metrics"
	ProtoModbus            = "modbus"
	ProtoMongoDB           = "mongodb"
	ProtoMQTT              = "mqtt"
	ProtoMSRPC             = "msrpc"
	ProtoMSSQL             = "mssql"
	ProtoMySQL             = "mysql"
	ProtoMySQLX            = "mysqlx"
	ProtoNATS              = "nats"
	ProtoNeo4j             = "neo4j"
	ProtoNRPE              = "nrpe"
	ProtoNetbios           = "netbios"
	ProtoNFS               = "nfs"
	ProtoNTP               = "ntp"
	ProtoOMRONFINS         = "omron-fins"
	ProtoOPCUA             = "opcua"
	ProtoOpenVPN           = "openvpn"
	ProtoOpenVPNManagement = "openvpn-management"
	ProtoOracle            = "oracle"
	ProtoPCOM              = "pcom"
	ProtoPFCP              = "pfcp"
	ProtoPinecone          = "pinecone"
	ProtoPCWorx            = "pcworx"
	ProtoPOP3              = "pop3"
	ProtoPOP3S             = "pop3s"
	ProtoPPTP              = "pptp"
	ProtoPostgreSQL        = "postgresql"
	ProtoProConOS          = "proconos"
	ProtoPROFINET          = "profinet"
	ProtoPulsar            = "pulsar"
	ProtoPulsarAdmin       = "pulsar-admin"
	ProtoQdrant            = "qdrant"
	ProtoQUIC              = "quic"
	ProtoRDP               = "rdp"
	ProtoRDPEUDP           = "rdpeudp"
	ProtoRedis             = "redis"
	ProtoRedisTLS          = "redis"
	ProtoRMI               = "java-rmi"
	ProtoRPC               = "rpc"
	ProtoRsync             = "rsync"
	ProtoRTMP              = "rtmp"
	ProtoRtsp              = "rtsp"
	ProtoS7comm            = "s7comm"
	ProtoSmartInstall      = "smart-install"
	ProtoSAPNetWeaver      = "sap-netweaver"
	ProtoSCCP              = "sccp"
	ProtoSGsAP             = "sgsap"
	ProtoSIP               = "sip"
	ProtoSIPS              = "sips"
	ProtoSOCKS4            = "socks4"
	ProtoSOCKS5            = "socks5"
	ProtoSMB               = "smb"
	ProtoSMBUDP            = "smbudp"
	ProtoSMPP              = "smpp"
	ProtoSMTP              = "smtp"
	ProtoSMTPS             = "smtps"
	ProtoSNMP              = "snmp"
	ProtoSNPP              = "snpp"
	ProtoSonarQube         = "sonarqube"
	ProtoSSH               = "ssh"
	ProtoSSTP              = "sstp"
	ProtoStun              = "stun"
	ProtoSUA               = "sua"
	ProtoSVN               = "svn"
	ProtoSybase            = "sybase"
	ProtoTeamViewer        = "teamviewer"
	ProtoTelnet            = "telnet"
	ProtoTFTP              = "tftp"
	ProtoTURN              = "turn"
	ProtoVNC               = "vnc"
	ProtoVMwareESXi        = "vmware-esxi"
	ProtoVMwareVCenter     = "vmware-vcenter"
	ProtoVMwareVSphere     = "vmware-vsphere"
	ProtoWireGuard         = "wireguard"
	ProtoXMPP              = "xmpp"
	ProtoX11               = "x11"
	ProtoX2AP              = "x2ap"
	ProtoZabbixAgent       = "zabbix-agent"
	ProtoZooKeeper         = "zookeeper"
	ProtoUnknown           = "unknown"
)
View Source
const TypeService string = "service"

Variables ¶

View Source
var Plugins = make(map[Protocol][]Plugin)

Functions ¶

func RegisterPlugin ¶

func RegisterPlugin(p Plugin)

This function must not be run concurrently. This function should only be run once per plugin.

func TLSVersionName ¶ added in v1.13.0

func TLSVersionName(version uint16) string

TLSVersionName returns a human-readable label for a TLS version constant. Exported because HTTP's http.go uses it too.

Types ¶

type Metadata ¶

type Metadata interface {
	Type() string
}

type NetbiosEntry ¶ added in v1.25.2

type NetbiosEntry struct {
	Name   string `json:"name"`
	Suffix byte   `json:"suffix"`
	Flags  string `json:"flags"` // "unique" or "group"
}

type Plugin ¶

type Plugin interface {
	Run(net.Conn, time.Duration, Target) (*Service, error)
	PortPriority(uint16) bool
	Name() string
	Type() Protocol
	Priority() int
}

type PluginID ¶

type PluginID struct {
	// contains filtered or unexported fields
}

Used as a key for maps to plugins. i.e.: map[Service] Plugin

func CreatePluginID ¶

func CreatePluginID(p Plugin) PluginID

func (PluginID) String ¶

func (p PluginID) String() string

type Protocol ¶

type Protocol uint64

type SupportedIPVersion uint64

const (
	IP Protocol = iota + 1
	UDP
	TCP
	TCPTLS
	SCTP
)

func (Protocol) String ¶

func (p Protocol) String() (s string)

type RPCB ¶

type RPCB struct {
	Program  int    `json:"program"`
	Version  int    `json:"version"`
	Protocol string `json:"protocol"`
	Address  string `json:"address"`
	Owner    string `json:"owner"`
}

type SecurityFinding ¶ added in v1.2.0

type SecurityFinding struct {
	ID          string   `json:"id"`
	Severity    Severity `json:"severity"`
	Description string   `json:"description"`
	Evidence    string   `json:"evidence,omitempty"`
}

SecurityFinding represents a security misconfiguration detected during fingerprinting. Evidence should contain observable protocol-level data (e.g., banner text, response codes, negotiated parameters). Do not include credentials, tokens, or other secrets.

func CheckTLS ¶ added in v1.13.0

func CheckTLS(conn net.Conn) []SecurityFinding

CheckTLS inspects the TLS connection state and returns security findings for weak versions, expired certificates, self-signed certificates, and weak keys. Returns nil if conn is not a *tls.Conn or no issues are found.

type Service ¶

type Service struct {
	Host      string          `json:"host,omitempty"`
	IP        string          `json:"ip"`
	Port      int             `json:"port"`
	Protocol  string          `json:"protocol"`
	TLS       bool            `json:"tls"`
	Transport string          `json:"transport"`
	Version   string          `json:"version,omitempty"`
	Raw       json.RawMessage `json:"metadata"`
	// AnonymousAccess is the canonical top-level field for anonymous access detection.
	// Per-service metadata types (e.g., ServiceSOCKS5) may also have their own AnonymousAccess
	// field for protocol-specific context; the Service-level field is authoritative for reporting.
	AnonymousAccess  bool              `json:"anonymous_access,omitempty"`
	SecurityFindings []SecurityFinding `json:"security_findings,omitempty"`
}

func CreateServiceFrom ¶

func CreateServiceFrom(target Target, m Metadata, tls bool, version string, transport Protocol) *Service

func (Service) Metadata ¶

func (e Service) Metadata() Metadata

func (Service) Type ¶

func (e Service) Type() string

type ServiceAJP ¶ added in v1.4.0

type ServiceAJP struct {
	ProtocolVersion string   `json:"protocol_version,omitempty"` // AJP wire protocol, e.g. "1.3" (AJPv13)
	CPingEnabled    bool     `json:"cping_enabled,omitempty"`    // true when CPong was received
	CPEs            []string `json:"cpes,omitempty"`
}

func (ServiceAJP) Type ¶ added in v1.4.0

func (e ServiceAJP) Type() string

type ServiceAMQP ¶

type ServiceAMQP struct {
	Product  string   `json:"product,omitempty"`  // e.g., "RabbitMQ"
	Version  string   `json:"version,omitempty"`  // e.g., "3.12.0"
	Platform string   `json:"platform,omitempty"` // e.g., "Erlang/OTP 26.0"
	CPEs     []string `json:"cpes,omitempty"`
}

func (ServiceAMQP) Type ¶

func (e ServiceAMQP) Type() string

type ServiceATG ¶

type ServiceATG struct {
	StationName string   `json:"station_name,omitempty"`
	TankCount   int      `json:"tank_count,omitempty"`
	Products    []string `json:"products,omitempty"`
	CPEs        []string `json:"cpes,omitempty"`
}

func (ServiceATG) Type ¶

func (e ServiceATG) Type() string

type ServiceActiveMQOpenWire ¶

type ServiceActiveMQOpenWire struct {
	Version int      `json:"version,omitempty"` // OpenWire protocol version (1-12)
	CPEs    []string `json:"cpes,omitempty"`
}

func (ServiceActiveMQOpenWire) Type ¶

type ServiceAnyDesk ¶ added in v1.2.0

type ServiceAnyDesk struct {
	CertSubject string   `json:"certSubject,omitempty"`
	SelfSigned  bool     `json:"selfSigned"`
	CPEs        []string `json:"cpes,omitempty"`
}

func (ServiceAnyDesk) Type ¶ added in v1.2.0

func (e ServiceAnyDesk) Type() string

type ServiceBACnet ¶

type ServiceBACnet struct {
	DeviceInstance uint32   `json:"device_instance"`
	VendorID       uint16   `json:"vendor_id"`
	VendorName     string   `json:"vendor_name"`
	MaxAPDU        uint16   `json:"max_apdu,omitempty"`
	Segmentation   string   `json:"segmentation,omitempty"`
	ModelName      string   `json:"model_name,omitempty"`
	FirmwareRev    string   `json:"firmware_revision,omitempty"`
	CPEs           []string `json:"cpes,omitempty"`
}

func (ServiceBACnet) Type ¶

func (e ServiceBACnet) Type() string

type ServiceBGP ¶

type ServiceBGP struct {
	Version  uint8 `json:"version"`
	Detected bool  `json:"detected"`
}

func (ServiceBGP) Type ¶

func (e ServiceBGP) Type() string

type ServiceCODESYS ¶

type ServiceCODESYS struct {
	Version     string   `json:"version,omitempty"`
	DeviceName  string   `json:"device_name,omitempty"`
	VendorName  string   `json:"vendor_name,omitempty"`
	OSType      string   `json:"os_type,omitempty"`
	OSName      string   `json:"os_name,omitempty"`
	AuthEnabled bool     `json:"auth_enabled,omitempty"`
	CPEs        []string `json:"cpes,omitempty"`
}

func (ServiceCODESYS) Type ¶

func (e ServiceCODESYS) Type() string

type ServiceCUPS ¶

type ServiceCUPS struct {
	ServerHeader string   `json:"server_header,omitempty"`
	CPEs         []string `json:"cpes,omitempty"`
}

func (ServiceCUPS) Type ¶

func (e ServiceCUPS) Type() string

type ServiceCassandra ¶

type ServiceCassandra struct {
	Product          string   `json:"product,omitempty"`           // "Apache Cassandra", "ScyllaDB", "DataStax Enterprise"
	CQLVersion       string   `json:"cql_version,omitempty"`       // CQL version from SUPPORTED response (e.g., "3.4.5")
	ProtocolVersions []string `json:"protocol_versions,omitempty"` // Native protocol versions (e.g., ["3/v3", "4/v4", "5/v5"])
	Compression      []string `json:"compression,omitempty"`       // Compression algorithms (e.g., ["lz4", "snappy", "zstd"])
	Confidence       string   `json:"confidence,omitempty"`        // Version detection confidence ("high", "medium", "low")
	CPEs             []string `json:"cpes,omitempty"`
}

func (ServiceCassandra) Type ¶

func (e ServiceCassandra) Type() string

type ServiceChromaDB ¶

type ServiceChromaDB struct {
	CPEs []string `json:"cpes,omitempty"`
}

func (ServiceChromaDB) Type ¶

func (e ServiceChromaDB) Type() string

type ServiceCitrixICA ¶ added in v1.2.0

type ServiceCitrixICA struct {
	BannerMatch bool     `json:"banner_match"` // true if double ICA signature matched (high confidence)
	CPEs        []string `json:"cpes,omitempty"`
}

func (ServiceCitrixICA) Type ¶ added in v1.2.0

func (e ServiceCitrixICA) Type() string

type ServiceCoAP ¶ added in v1.2.0

type ServiceCoAP struct {
	Resources string `json:"resources,omitempty"`
}

func (ServiceCoAP) Type ¶ added in v1.2.0

func (e ServiceCoAP) Type() string

type ServiceCouchDB ¶

type ServiceCouchDB struct {
	CPEs []string `json:"cpes,omitempty"`
}

func (ServiceCouchDB) Type ¶

func (e ServiceCouchDB) Type() string

type ServiceCrimsonV3 ¶

type ServiceCrimsonV3 struct {
	Manufacturer string   `json:"manufacturer,omitempty"`
	Model        string   `json:"model,omitempty"`
	CPEs         []string `json:"cpes,omitempty"`
}

func (ServiceCrimsonV3) Type ¶

func (e ServiceCrimsonV3) Type() string

type ServiceDB2 ¶

type ServiceDB2 struct {
	ServerName string   `json:"server_name,omitempty"` // DB2 instance name
	CPEs       []string `json:"cpes,omitempty"`
}

func (ServiceDB2) Type ¶

func (e ServiceDB2) Type() string

type ServiceDHCP ¶

type ServiceDHCP struct {
	Option string `json:"option"`
}

func (ServiceDHCP) Type ¶

func (e ServiceDHCP) Type() string

type ServiceDNP3 ¶

type ServiceDNP3 struct {
	SourceAddress      uint16   `json:"source_address,omitempty"`      // DNP3 source address
	DestinationAddress uint16   `json:"destination_address,omitempty"` // DNP3 destination address
	DeviceRole         string   `json:"device_role,omitempty"`         // "master" or "outstation"
	FunctionCode       uint8    `json:"function_code,omitempty"`       // Function code used in detection
	CPEs               []string `json:"cpes,omitempty"`                // Common Platform Enumeration identifiers
}

func (ServiceDNP3) Type ¶

func (e ServiceDNP3) Type() string

type ServiceDNS ¶

type ServiceDNS struct{}

func (ServiceDNS) Type ¶

func (e ServiceDNS) Type() string

type ServiceDiameter ¶

type ServiceDiameter struct {
	CPEs    []string `json:"cpes,omitempty"`
	Version string   `json:"version,omitempty"`
	Vendor  string   `json:"vendor,omitempty"`
	Product string   `json:"product,omitempty"`
}

func (ServiceDiameter) Type ¶

func (e ServiceDiameter) Type() string

type ServiceDocker ¶

type ServiceDocker struct {
	ApiVersion string   `json:"api_version,omitempty"` // Docker API version (e.g., "1.43")
	Os         string   `json:"os,omitempty"`          // Operating system (e.g., "linux")
	Arch       string   `json:"arch,omitempty"`        // Architecture (e.g., "amd64")
	CPEs       []string `json:"cpes,omitempty"`        // Common Platform Enumeration identifiers
}

func (ServiceDocker) Type ¶

func (e ServiceDocker) Type() string

type ServiceEcho ¶

type ServiceEcho struct{}

func (ServiceEcho) Type ¶

func (e ServiceEcho) Type() string

type ServiceElasticsearch ¶

type ServiceElasticsearch struct {
	CPEs []string `json:"cpes,omitempty"` // Common Platform Enumeration identifiers for vulnerability tracking
}

func (ServiceElasticsearch) Type ¶

func (e ServiceElasticsearch) Type() string

type ServiceEtcd ¶

type ServiceEtcd struct {
	CPEs           []string `json:"cpes,omitempty"`
	ClusterVersion string   `json:"cluster_version,omitempty"`
	PortType       string   `json:"port_type,omitempty"` // "client" or "peer"
}

func (ServiceEtcd) Type ¶

func (e ServiceEtcd) Type() string

type ServiceEtherCAT ¶

type ServiceEtherCAT struct {
	WorkingCounter uint16 `json:"working_counter"` // Number of slaves that processed the request
	DatagramCount  int    `json:"datagram_count"`  // Number of datagrams in response
}

func (ServiceEtherCAT) Type ¶

func (e ServiceEtherCAT) Type() string

type ServiceEthernetIP ¶

type ServiceEthernetIP struct {
	VendorID    uint16   `json:"vendor_id,omitempty"`
	VendorName  string   `json:"vendor_name,omitempty"`
	DeviceType  uint16   `json:"device_type,omitempty"`
	ProductCode uint16   `json:"product_code,omitempty"`
	Revision    string   `json:"revision,omitempty"`
	Serial      string   `json:"serial,omitempty"`
	ProductName string   `json:"product_name,omitempty"`
	CPEs        []string `json:"cpes,omitempty"`
}

func (ServiceEthernetIP) Type ¶

func (e ServiceEthernetIP) Type() string

type ServiceFTP ¶

type ServiceFTP struct {
	Banner     string   `json:"banner"`
	Confidence string   `json:"confidence,omitempty"` // Detection confidence: "high", "medium", or "low"
	CPEs       []string `json:"cpes,omitempty"`
}

func (ServiceFTP) Type ¶

func (e ServiceFTP) Type() string

type ServiceFirebird ¶

type ServiceFirebird struct {
	ProtocolVersion int32    `json:"protocol_version,omitempty"`
	CPEs            []string `json:"cpes,omitempty"`
}

func (ServiceFirebird) Type ¶

func (e ServiceFirebird) Type() string

type ServiceFox ¶

type ServiceFox struct {
	Version     string   `json:"version,omitempty"`      // Fox protocol version
	HostName    string   `json:"host_name,omitempty"`    // Device hostname
	HostAddress string   `json:"host_address,omitempty"` // Device IP address
	AppName     string   `json:"app_name,omitempty"`     // Application name
	AppVersion  string   `json:"app_version,omitempty"`  // Application version
	VMName      string   `json:"vm_name,omitempty"`      // Virtual machine name
	VMVersion   string   `json:"vm_version,omitempty"`   // VM version
	OSName      string   `json:"os_name,omitempty"`      // Operating system name
	StationName string   `json:"station_name,omitempty"` // Station name
	BrandId     string   `json:"brand_id,omitempty"`     // Brand identifier
	CPEs        []string `json:"cpes,omitempty"`         // Common Platform Enumeration identifiers for vulnerability tracking
}

func (ServiceFox) Type ¶

func (e ServiceFox) Type() string

type ServiceGESRTP ¶

type ServiceGESRTP struct {
	PLCName         string   `json:"plc_name,omitempty"`
	DeviceIndicator uint8    `json:"device_indicator,omitempty"`
	CPEs            []string `json:"cpes,omitempty"`
}

func (ServiceGESRTP) Type ¶

func (e ServiceGESRTP) Type() string

type ServiceGRPC ¶ added in v1.4.1

type ServiceGRPC struct {
	ReflectionEnabled bool     `json:"reflection_enabled"`
	Services          []string `json:"services,omitempty"`
	HealthStatus      string   `json:"health_status,omitempty"`
}

func (ServiceGRPC) Type ¶ added in v1.4.1

func (e ServiceGRPC) Type() string

type ServiceGTPC ¶

type ServiceGTPC struct {
	Version string `json:"version"` // "GTPv1" or "GTPv2"
}

func (ServiceGTPC) Type ¶

func (e ServiceGTPC) Type() string

type ServiceGTPPrime ¶

type ServiceGTPPrime struct{}

func (ServiceGTPPrime) Type ¶

func (e ServiceGTPPrime) Type() string

type ServiceGTPU ¶

type ServiceGTPU struct{}

func (ServiceGTPU) Type ¶

func (e ServiceGTPU) Type() string

type ServiceGit ¶ added in v1.1.0

type ServiceGit struct {
	ProtocolVersion int      `json:"protocol_version,omitempty"` // 0=implicit, 1=explicit v1, 2=v2
	HeadRef         string   `json:"head_ref,omitempty"`         // SHA-1 hash of HEAD
	Branches        []string `json:"branches,omitempty"`         // Branch names (without refs/heads/ prefix)
	Tags            []string `json:"tags,omitempty"`             // Tag names (without refs/tags/ prefix)
	Capabilities    []string `json:"capabilities,omitempty"`     // Server capabilities from ref advertisement
}

ServiceGit contains metadata extracted from a Git daemon ref advertisement.

func (ServiceGit) Type ¶ added in v1.1.0

func (e ServiceGit) Type() string

type ServiceH323 ¶

type ServiceH323 struct {
	VendorID     string   `json:"vendor_id,omitempty"`
	ProductName  string   `json:"product_name,omitempty"`
	Version      string   `json:"version,omitempty"`
	TerminalType string   `json:"terminal_type,omitempty"`
	CPEs         []string `json:"cpes,omitempty"`
}

func (ServiceH323) Type ¶

func (e ServiceH323) Type() string

type ServiceHARTIP ¶

type ServiceHARTIP struct {
	Version       uint8  `json:"version"`        // HART-IP protocol version (0x01)
	MessageType   uint8  `json:"message_type"`   // Message type (0x01=Response, 0x03=Error, 0x0F=NAK)
	Status        uint8  `json:"status"`         // Status code
	StatusDesc    string `json:"status_desc"`    // Status description (Success/Error/NAK)
	TransactionID uint16 `json:"transaction_id"` // Transaction ID echoed from request
}

func (ServiceHARTIP) Type ¶

func (e ServiceHARTIP) Type() string

type ServiceHTTP ¶

type ServiceHTTP struct {
	Status              string                    `json:"status"`      // e.g. "200 OK"
	StatusCode          int                       `json:"status_code"` // e.g. 200
	Title               string                    `json:"title,omitempty"`
	ResponseHeaders     http.Header               `json:"response_headers"`
	Technologies        []string                  `json:"technologies,omitempty"`
	CPEs                []string                  `json:"cpes,omitempty"`
	FingerprintMetadata map[string]map[string]any `json:"fingerprint_metadata,omitempty"`
}

func (ServiceHTTP) Type ¶

func (e ServiceHTTP) Type() string

type ServiceHTTPS ¶

type ServiceHTTPS struct {
	Status              string                    `json:"status"`      // e.g. "200 OK"
	StatusCode          int                       `json:"status_code"` // e.g. 200
	Title               string                    `json:"title,omitempty"`
	ResponseHeaders     http.Header               `json:"response_headers"`
	Technologies        []string                  `json:"technologies,omitempty"`
	CPEs                []string                  `json:"cpes,omitempty"`
	FingerprintMetadata map[string]map[string]any `json:"fingerprint_metadata,omitempty"`
}

func (ServiceHTTPS) Type ¶

func (e ServiceHTTPS) Type() string

type ServiceIAX2 ¶

type ServiceIAX2 struct {
	Detected bool `json:"detected"`
}

func (ServiceIAX2) Type ¶

func (e ServiceIAX2) Type() string

type ServiceIEC104 ¶

type ServiceIEC104 struct{}

func (ServiceIEC104) Type ¶

func (e ServiceIEC104) Type() string

type ServiceIKEv2 ¶

type ServiceIKEv2 struct {
	ResponderSPI string `json:"responder_spi"`
	MessageID    string `json:"message_id"`
	Vendor       string `json:"vendor,omitempty"`
}

func (ServiceIKEv2) Type ¶

func (e ServiceIKEv2) Type() string

type ServiceIMAP ¶

type ServiceIMAP struct {
	Banner string `json:"banner"`
}

func (ServiceIMAP) Type ¶

func (e ServiceIMAP) Type() string

type ServiceIMAPS ¶

type ServiceIMAPS struct {
	Banner string `json:"banner"`
}

func (ServiceIMAPS) Type ¶

func (e ServiceIMAPS) Type() string

type ServiceIPMI ¶

type ServiceIPMI struct {
	AuthTypes      []string `json:"auth_types,omitempty"`
	AnonymousLogin bool     `json:"anonymous_login,omitempty"`
	IPMIv2         bool     `json:"ipmi_v2,omitempty"`
	CipherZero     bool     `json:"cipher_zero,omitempty"`
}

func (ServiceIPMI) Type ¶

func (e ServiceIPMI) Type() string

type ServiceIPP ¶

type ServiceIPP struct {
	PrinterMakeAndModel string   `json:"printer_make_and_model,omitempty"`
	FirmwareVersion     string   `json:"firmware_version,omitempty"`
	PrinterState        string   `json:"printer_state,omitempty"`
	IPPVersions         []string `json:"ipp_versions,omitempty"`
	PrinterName         string   `json:"printer_name,omitempty"`
	PrinterURI          string   `json:"printer_uri,omitempty"`
	CPEs                []string `json:"cpes,omitempty"`
}

func (ServiceIPP) Type ¶

func (e ServiceIPP) Type() string

type ServiceIPSEC ¶

type ServiceIPSEC struct {
	ResponderISP string `json:"responder_isp"`
	MessageID    string `json:"message_id"`
}

func (ServiceIPSEC) Type ¶

func (e ServiceIPSEC) Type() string

type ServiceIRC ¶ added in v1.1.0

type ServiceIRC struct {
	ServerName     string   `json:"server_name,omitempty"`
	NetworkName    string   `json:"network_name,omitempty"`
	Version        string   `json:"version,omitempty"`
	ServerSoftware string   `json:"server_software,omitempty"`
	CreatedDate    string   `json:"created_date,omitempty"`
	UserModes      string   `json:"user_modes,omitempty"`
	ChannelModes   string   `json:"channel_modes,omitempty"`
	UserCount      int      `json:"user_count,omitempty"`
	ChannelCount   int      `json:"channel_count,omitempty"`
	CPEs           []string `json:"cpes,omitempty"`
}

func (ServiceIRC) Type ¶ added in v1.1.0

func (e ServiceIRC) Type() string

type ServiceIRCS ¶ added in v1.1.0

type ServiceIRCS struct {
	ServerName     string   `json:"server_name,omitempty"`
	NetworkName    string   `json:"network_name,omitempty"`
	Version        string   `json:"version,omitempty"`
	ServerSoftware string   `json:"server_software,omitempty"`
	CreatedDate    string   `json:"created_date,omitempty"`
	UserModes      string   `json:"user_modes,omitempty"`
	ChannelModes   string   `json:"channel_modes,omitempty"`
	UserCount      int      `json:"user_count,omitempty"`
	ChannelCount   int      `json:"channel_count,omitempty"`
	CPEs           []string `json:"cpes,omitempty"`
}

func (ServiceIRCS) Type ¶ added in v1.1.0

func (e ServiceIRCS) Type() string

type ServiceIUA ¶

type ServiceIUA struct {
	InfoString   string `json:"info_string,omitempty"`
	ErrorCode    uint32 `json:"error_code,omitempty"`
	MessageClass uint8  `json:"message_class,omitempty"`
	MessageType  uint8  `json:"message_type,omitempty"`
}

func (ServiceIUA) Type ¶

func (e ServiceIUA) Type() string

type ServiceInfluxDB ¶

type ServiceInfluxDB struct {
	CPEs []string `json:"cpes,omitempty"` // Common Platform Enumeration identifiers for vulnerability tracking
}

func (ServiceInfluxDB) Type ¶

func (e ServiceInfluxDB) Type() string

type ServiceJDWP ¶

type ServiceJDWP struct {
	Description string `json:"description"`
	JdwpMajor   int32  `json:"jdwp_major"`
	JdwpMinor   int32  `json:"jdwp_minor"`
	VMVersion   string `json:"vm_version"`
	VMName      string `json:"vm_name"`
}

func (ServiceJDWP) Type ¶

func (e ServiceJDWP) Type() string

type ServiceJetDirect ¶

type ServiceJetDirect struct {
	Manufacturer     string   `json:"manufacturer,omitempty"`
	Model            string   `json:"model,omitempty"`
	Firmware         string   `json:"firmware,omitempty"`
	RawID            string   `json:"raw_id"`
	Status           string   `json:"status,omitempty"`
	FilesystemAccess bool     `json:"filesystem_access,omitempty"`
	CPEs             []string `json:"cpes,omitempty"`
}

func (ServiceJetDirect) Type ¶

func (e ServiceJetDirect) Type() string

type ServiceKNXIP ¶

type ServiceKNXIP struct {
	DeviceName      string   `json:"device_name"`                // Friendly name (30 chars max)
	KNXAddress      string   `json:"knx_address"`                // Individual address "area.line.device"
	SerialNumber    string   `json:"serial_number"`              // 6-byte hex string
	MACAddress      string   `json:"mac_address"`                // XX:XX:XX:XX:XX:XX
	KNXMedium       string   `json:"knx_medium,omitempty"`       // "TP1", "PL110", "RF", "IP"
	ServiceFamilies []string `json:"service_families,omitempty"` // ["Core", "Tunnelling", "Routing"]
}

func (ServiceKNXIP) Type ¶

func (e ServiceKNXIP) Type() string

type ServiceKafka ¶

type ServiceKafka struct{}

func (ServiceKafka) Type ¶

func (e ServiceKafka) Type() string

type ServiceKerberos ¶

type ServiceKerberos struct {
	Realm     string `json:"realm,omitempty"`
	ErrorCode int    `json:"error_code,omitempty"`
	ErrorText string `json:"error_text,omitempty"`
}

func (ServiceKerberos) Type ¶

func (e ServiceKerberos) Type() string

type ServiceKubernetes ¶

type ServiceKubernetes struct {
	CPEs         []string `json:"cpes,omitempty"`
	GitVersion   string   `json:"git_version,omitempty"`
	GitCommit    string   `json:"git_commit,omitempty"`
	BuildDate    string   `json:"build_date,omitempty"`
	GoVersion    string   `json:"go_version,omitempty"`
	Platform     string   `json:"platform,omitempty"`
	Distribution string   `json:"distribution,omitempty"` // k3s, gke, eks, aks, openshift, minikube, vanilla
	Vendor       string   `json:"vendor,omitempty"`       // kubernetes, rancher, google, aws, azure, redhat
}

func (ServiceKubernetes) Type ¶

func (e ServiceKubernetes) Type() string

type ServiceL2TP ¶

type ServiceL2TP struct {
	ProtocolVersion  string `json:"protocol_version,omitempty"`
	HostName         string `json:"host_name,omitempty"`
	VendorName       string `json:"vendor_name,omitempty"`
	FirmwareRevision uint16 `json:"firmware_revision,omitempty"`
	AssignedTunnelID uint16 `json:"assigned_tunnel_id,omitempty"`
	FramingCaps      uint32 `json:"framing_caps,omitempty"`
	BearerCaps       uint32 `json:"bearer_caps,omitempty"`
}

func (ServiceL2TP) Type ¶

func (e ServiceL2TP) Type() string

type ServiceLDAP ¶

type ServiceLDAP struct{}

func (ServiceLDAP) Type ¶

func (e ServiceLDAP) Type() string

type ServiceLDAPS ¶

type ServiceLDAPS struct{}

func (ServiceLDAPS) Type ¶

func (e ServiceLDAPS) Type() string

type ServiceLibreChat ¶ added in v1.1.0

type ServiceLibreChat struct {
	ConfigVersion string   `json:"config_version,omitempty"`
	HasHealth     bool     `json:"has_health,omitempty"`
	CPEs          []string `json:"cpes,omitempty"`
}

func (ServiceLibreChat) Type ¶ added in v1.1.0

func (e ServiceLibreChat) Type() string

type ServiceLwM2M ¶ added in v1.3.0

type ServiceLwM2M struct {
	HasRegistration bool   `json:"has_registration"`
	HasBootstrap    bool   `json:"has_bootstrap"`
	ServerImpl      string `json:"server_impl,omitempty"`
	Resources       string `json:"resources,omitempty"`
}

func (ServiceLwM2M) Type ¶ added in v1.3.0

func (e ServiceLwM2M) Type() string

type ServiceM2UA ¶ added in v1.1.0

type ServiceM2UA struct {
	InfoString   string `json:"info_string,omitempty"`
	ErrorCode    uint32 `json:"error_code,omitempty"`
	MessageClass uint8  `json:"message_class,omitempty"`
	MessageType  uint8  `json:"message_type,omitempty"`
}

func (ServiceM2UA) Type ¶ added in v1.1.0

func (e ServiceM2UA) Type() string

type ServiceM3UA ¶

type ServiceM3UA struct {
	InfoString   string `json:"info_string,omitempty"`
	ErrorCode    uint32 `json:"error_code,omitempty"`
	MessageClass uint8  `json:"message_class,omitempty"`
	MessageType  uint8  `json:"message_type,omitempty"`
}

func (ServiceM3UA) Type ¶

func (e ServiceM3UA) Type() string

type ServiceMGCP ¶

type ServiceMGCP struct {
	ResponseCode int      `json:"response_code,omitempty"`
	Endpoints    []string `json:"endpoints,omitempty"`
	Packages     []string `json:"packages,omitempty"`
}

func (ServiceMGCP) Type ¶

func (e ServiceMGCP) Type() string

type ServiceMQTT ¶

type ServiceMQTT struct{}

func (ServiceMQTT) Type ¶

func (e ServiceMQTT) Type() string

type ServiceMSRPC ¶ added in v1.3.0

type ServiceMSRPC struct{}

func (ServiceMSRPC) Type ¶ added in v1.3.0

func (e ServiceMSRPC) Type() string

type ServiceMSSQL ¶

type ServiceMSSQL struct {
	CPEs []string `json:"cpes,omitempty"` // Common Platform Enumeration identifiers for vulnerability tracking
}

func (ServiceMSSQL) Type ¶

func (e ServiceMSSQL) Type() string

type ServiceMegaco ¶

type ServiceMegaco struct {
	Version   string `json:"version,omitempty"`
	MID       string `json:"mid,omitempty"`
	Profile   string `json:"profile,omitempty"`
	ErrorCode int    `json:"error_code,omitempty"`
}

func (ServiceMegaco) Type ¶

func (e ServiceMegaco) Type() string

type ServiceMelsecQ ¶

type ServiceMelsecQ struct {
	CPUModel string   `json:"cpu_model,omitempty"`
	CPEs     []string `json:"cpes,omitempty"`
}

func (ServiceMelsecQ) Type ¶

func (e ServiceMelsecQ) Type() string

type ServiceMemcached ¶

type ServiceMemcached struct {
	Version string   `json:"version,omitempty"`
	CPEs    []string `json:"cpes,omitempty"`
}

func (ServiceMemcached) Type ¶

func (e ServiceMemcached) Type() string

type ServiceMikroTikWinbox ¶ added in v1.3.0

type ServiceMikroTikWinbox struct {
	SubProtocol string   `json:"sub_protocol"`
	CPEs        []string `json:"cpes,omitempty"`
}

func (ServiceMikroTikWinbox) Type ¶ added in v1.3.0

func (e ServiceMikroTikWinbox) Type() string

type ServiceMilvus ¶

type ServiceMilvus struct {
	CPEs []string `json:"cpes,omitempty"`
}

func (ServiceMilvus) Type ¶

func (e ServiceMilvus) Type() string

type ServiceMilvusMetrics ¶

type ServiceMilvusMetrics struct {
	CPEs []string `json:"cpes,omitempty"`
}

func (ServiceMilvusMetrics) Type ¶

func (e ServiceMilvusMetrics) Type() string

type ServiceModbus ¶

type ServiceModbus struct {
	VendorName  string   `json:"vendor_name,omitempty"`  // Object ID 0x00: Vendor name
	ProductCode string   `json:"product_code,omitempty"` // Object ID 0x01: Product code
	Revision    string   `json:"revision,omitempty"`     // Object ID 0x02: Major.Minor revision
	VendorURL   string   `json:"vendor_url,omitempty"`   // Object ID 0x03: Vendor URL
	ProductName string   `json:"product_name,omitempty"` // Object ID 0x04: Product name
	ModelName   string   `json:"model_name,omitempty"`   // Object ID 0x05: Model name
	CPEs        []string `json:"cpes,omitempty"`         // Common Platform Enumeration identifiers
}

func (ServiceModbus) Type ¶

func (e ServiceModbus) Type() string

type ServiceMongoDB ¶

type ServiceMongoDB struct {
	MaxWireVersion int      `json:"max_wire_version,omitempty"` // Wire protocol version (indicates capabilities, NOT precise version; e.g., wire 21 = MongoDB 7.0.x)
	MinWireVersion int      `json:"min_wire_version,omitempty"` // Minimum wire protocol version supported
	ServerType     string   `json:"server_type,omitempty"`      // "mongod" or "mongos"
	CPEs           []string `json:"cpes,omitempty"`
}

func (ServiceMongoDB) Type ¶

func (e ServiceMongoDB) Type() string

type ServiceMySQL ¶

type ServiceMySQL struct {
	PacketType   string   `json:"packet_type"`    // the type of packet returned by the server (i.e. handshake or error)
	ErrorMessage string   `json:"error_msg"`      // error message if the server returns an error packet
	ErrorCode    int      `json:"error_code"`     // error code returned if the server returns an error packet
	CPEs         []string `json:"cpes,omitempty"` // Common Platform Enumeration identifiers for vulnerability tracking
}

func (ServiceMySQL) Type ¶

func (e ServiceMySQL) Type() string

type ServiceMySQLX ¶ added in v1.3.0

type ServiceMySQLX struct {
	CPEs []string `json:"cpes,omitempty"`
}

func (ServiceMySQLX) Type ¶ added in v1.3.0

func (e ServiceMySQLX) Type() string

type ServiceNATS ¶

type ServiceNATS struct {
	ServerID     string   `json:"server_id,omitempty"`
	ServerName   string   `json:"server_name,omitempty"`
	AuthRequired bool     `json:"auth_required"`
	TLSRequired  bool     `json:"tls_required"`
	TLSAvailable bool     `json:"tls_available,omitempty"`
	JetStream    bool     `json:"jet_stream,omitempty"`
	Headers      bool     `json:"headers,omitempty"`
	Proto        int      `json:"proto,omitempty"`
	MaxPayload   int64    `json:"max_payload,omitempty"`
	GoVersion    string   `json:"go_version,omitempty"`
	GitCommit    string   `json:"git_commit,omitempty"`
	Cluster      string   `json:"cluster,omitempty"`
	Domain       string   `json:"domain,omitempty"`
	ConnectURLs  []string `json:"connect_urls,omitempty"`
	ClientIP     string   `json:"client_ip,omitempty"`
	LDM          bool     `json:"ldm,omitempty"`
	CPEs         []string `json:"cpes,omitempty"`
}

func (ServiceNATS) Type ¶

func (e ServiceNATS) Type() string

type ServiceNFS ¶

type ServiceNFS struct {
	Version          int   `json:"version"`           // Highest detected NFS version (4, 3, or 2)
	DetectedVersions []int `json:"detected_versions"` // All versions that responded successfully
}

func (ServiceNFS) Type ¶

func (e ServiceNFS) Type() string

type ServiceNRPE ¶

type ServiceNRPE struct {
	CommandArgsEnabled *bool    `json:"command_args_enabled,omitempty"`
	CPEs               []string `json:"cpes,omitempty"`
}

func (ServiceNRPE) Type ¶

func (e ServiceNRPE) Type() string

type ServiceNTP ¶

type ServiceNTP struct{}

func (ServiceNTP) Type ¶

func (e ServiceNTP) Type() string

type ServiceNeo4j ¶

type ServiceNeo4j struct {
	CPEs []string `json:"cpes,omitempty"`
}

func (ServiceNeo4j) Type ¶

func (e ServiceNeo4j) Type() string

type ServiceNetbios ¶

type ServiceNetbios struct {
	NetBIOSName string         `json:"netbios_name"`
	GroupName   string         `json:"group_name,omitempty"`
	MACAddress  string         `json:"mac_address,omitempty"`
	Names       []NetbiosEntry `json:"names,omitempty"`
}

func (ServiceNetbios) Type ¶

func (e ServiceNetbios) Type() string

type ServiceOMRONFINS ¶

type ServiceOMRONFINS struct {
	ControllerModel   string   `json:"controller_model,omitempty"`
	ControllerVersion string   `json:"controller_version,omitempty"`
	CPEs              []string `json:"cpes,omitempty"`
}

func (ServiceOMRONFINS) Type ¶

func (e ServiceOMRONFINS) Type() string

type ServiceOPCUA ¶

type ServiceOPCUA struct {
	ApplicationName string   `json:"application_name,omitempty"` // Server application name
	ProductURI      string   `json:"product_uri,omitempty"`      // Product URI from server
	SecurityModes   []string `json:"security_modes,omitempty"`   // None, Sign, SignAndEncrypt
	CPEs            []string `json:"cpes,omitempty"`
}

func (ServiceOPCUA) Type ¶

func (e ServiceOPCUA) Type() string

type ServiceOpenVPN ¶

type ServiceOpenVPN struct{}

func (ServiceOpenVPN) Type ¶

func (e ServiceOpenVPN) Type() string

type ServiceOpenVPNManagement ¶ added in v1.11.0

type ServiceOpenVPNManagement struct {
	Version string   `json:"version,omitempty"`
	Banner  string   `json:"banner,omitempty"`
	CPEs    []string `json:"cpes,omitempty"`
}

func (ServiceOpenVPNManagement) Type ¶ added in v1.11.0

type ServiceOracle ¶

type ServiceOracle struct {
	Info string `json:"info"`
}

func (ServiceOracle) Type ¶

func (e ServiceOracle) Type() string

type ServicePCOM ¶

type ServicePCOM struct {
	Model     string   `json:"model,omitempty"`
	HWVersion string   `json:"hw_version,omitempty"`
	OSVersion string   `json:"os_version,omitempty"`
	UnitID    string   `json:"unit_id,omitempty"`
	CPEs      []string `json:"cpes,omitempty"`
}

func (ServicePCOM) Type ¶

func (e ServicePCOM) Type() string

type ServicePCWorx ¶

type ServicePCWorx struct {
	PLCType         string   `json:"plc_type,omitempty"`
	FirmwareVersion string   `json:"firmware_version,omitempty"`
	FirmwareDate    string   `json:"firmware_date,omitempty"`
	FirmwareTime    string   `json:"firmware_time,omitempty"`
	ModelNumber     string   `json:"model_number,omitempty"`
	CPEs            []string `json:"cpes,omitempty"`
}

func (ServicePCWorx) Type ¶

func (e ServicePCWorx) Type() string

type ServicePFCP ¶

type ServicePFCP struct {
	RecoveryTimestamp uint32 `json:"recovery_timestamp,omitempty"`
	NodeID            string `json:"node_id,omitempty"`
}

func (ServicePFCP) Type ¶

func (e ServicePFCP) Type() string

type ServicePOP3 ¶

type ServicePOP3 struct {
	Banner string `json:"banner"`
}

func (ServicePOP3) Type ¶

func (e ServicePOP3) Type() string

type ServicePOP3S ¶

type ServicePOP3S struct {
	Banner string `json:"banner"`
}

func (ServicePOP3S) Type ¶

func (e ServicePOP3S) Type() string

type ServicePPTP ¶ added in v1.1.0

type ServicePPTP struct {
	Hostname            string `json:"hostname,omitempty"`
	VendorString        string `json:"vendor_string,omitempty"`
	FirmwareRevision    uint16 `json:"firmware_revision"`
	ProtocolVersion     string `json:"protocol_version,omitempty"`
	FramingCapabilities uint32 `json:"framing_capabilities"`
	BearerCapabilities  uint32 `json:"bearer_capabilities"`
	MaxChannels         uint16 `json:"max_channels"`
	ResultCode          uint8  `json:"result_code"`
}

func (ServicePPTP) Type ¶ added in v1.1.0

func (e ServicePPTP) Type() string

type ServicePROFINET ¶

type ServicePROFINET struct {
	DeviceName string   `json:"device_name,omitempty"`
	DeviceType string   `json:"device_type,omitempty"`
	Vendor     string   `json:"vendor,omitempty"`
	CPEs       []string `json:"cpes,omitempty"`
}

func (ServicePROFINET) Type ¶

func (e ServicePROFINET) Type() string

type ServicePinecone ¶

type ServicePinecone struct {
	CPEs       []string `json:"cpes,omitempty"`        // Common Platform Enumeration with wildcard version
	APIVersion string   `json:"api_version,omitempty"` // Pinecone API version from x-pinecone-api-version header
}

func (ServicePinecone) Type ¶

func (e ServicePinecone) Type() string

type ServicePostgreSQL ¶

type ServicePostgreSQL struct {
	AuthRequired bool     `json:"auth_required"`
	CPEs         []string `json:"cpes,omitempty"`
}

func (ServicePostgreSQL) Type ¶

func (e ServicePostgreSQL) Type() string

type ServiceProConOS ¶

type ServiceProConOS struct {
	LadderLogicRuntime string   `json:"ladder_logic_runtime,omitempty"` // Version from offset 13
	PLCType            string   `json:"plc_type,omitempty"`             // PLC type from offset 45
	ProjectName        string   `json:"project_name,omitempty"`         // Project name from offset 78
	BootProject        string   `json:"boot_project,omitempty"`         // Boot project (variable offset)
	ProjectSourceCode  string   `json:"project_source_code,omitempty"`  // Source code file (variable offset)
	CPEs               []string `json:"cpes,omitempty"`
}

func (ServiceProConOS) Type ¶

func (e ServiceProConOS) Type() string

type ServicePulsar ¶

type ServicePulsar struct {
	ProtocolVersion int      `json:"protocol_version,omitempty"`
	CPEs            []string `json:"cpes,omitempty"`
}

func (ServicePulsar) Type ¶

func (e ServicePulsar) Type() string

type ServicePulsarAdmin ¶

type ServicePulsarAdmin struct {
	Clusters []string `json:"clusters,omitempty"`
}

func (ServicePulsarAdmin) Type ¶

func (e ServicePulsarAdmin) Type() string

type ServiceQUIC ¶ added in v1.25.2

type ServiceQUIC struct {
	SupportedVersions []string `json:"supported_versions,omitempty"`
}

func (ServiceQUIC) Type ¶ added in v1.25.2

func (e ServiceQUIC) Type() string

type ServiceQdrant ¶ added in v1.1.0

type ServiceQdrant struct {
	CPEs []string `json:"cpes,omitempty"`
}

func (ServiceQdrant) Type ¶ added in v1.1.0

func (e ServiceQdrant) Type() string

type ServiceRDP ¶

type ServiceRDP struct {
	OSFingerprint       string `json:"fingerprint,omitempty"` // e.g. Windows Server 2016 or 2019
	OSVersion           string `json:"os_version,omitempty"`
	TargetName          string `json:"target_name,omitempty"`
	NetBIOSComputerName string `json:"netbios_computer_name,omitempty"`
	NetBIOSDomainName   string `json:"netbios_domain_name,omitempty"`
	DNSComputerName     string `json:"dns_computer_name,omitempty"`
	DNSDomainName       string `json:"dns_domain_name,omitempty"`
	ForestName          string `json:"forest_name,omitempty"`
}

func (ServiceRDP) Type ¶

func (e ServiceRDP) Type() string

type ServiceRDPEUDP ¶ added in v1.25.2

type ServiceRDPEUDP struct {
	ProtocolVersion uint16 `json:"protocol_version,omitempty"`
	UpStreamMtu     uint16 `json:"upstream_mtu,omitempty"`
	DownStreamMtu   uint16 `json:"downstream_mtu,omitempty"`
}

func (ServiceRDPEUDP) Type ¶ added in v1.25.2

func (e ServiceRDPEUDP) Type() string

type ServiceRMI ¶

type ServiceRMI struct {
	Endpoint string   `json:"endpoint,omitempty"`
	CPEs     []string `json:"cpes,omitempty"`
}

func (ServiceRMI) Type ¶

func (e ServiceRMI) Type() string

type ServiceRPC ¶

type ServiceRPC struct {
	Entries []RPCB `json:"entries"`
}

func (ServiceRPC) Type ¶

func (e ServiceRPC) Type() string

type ServiceRTMP ¶ added in v1.3.0

type ServiceRTMP struct{}

func (ServiceRTMP) Type ¶ added in v1.3.0

func (e ServiceRTMP) Type() string

type ServiceRedis ¶

type ServiceRedis struct {
	AuthRequired bool     `json:"auth_required"`
	CPEs         []string `json:"cpes,omitempty"`
}

func (ServiceRedis) Type ¶

func (e ServiceRedis) Type() string

type ServiceRsync ¶

type ServiceRsync struct{}

func (ServiceRsync) Type ¶

func (e ServiceRsync) Type() string

type ServiceRtsp ¶

type ServiceRtsp struct {
	ServerInfo string `json:"server_info"`
}

func (ServiceRtsp) Type ¶

func (e ServiceRtsp) Type() string

type ServiceS7comm ¶

type ServiceS7comm struct {
	PLCType         string   `json:"plc_type,omitempty"`         // "S7-300", "S7-400", "S7-1200", "S7-1500"
	ModuleType      string   `json:"module_type,omitempty"`      // Module type identifier from SZL
	OrderCode       string   `json:"order_code,omitempty"`       // 6ES7 XXX-XXXXX-XXXX
	SerialNumber    string   `json:"serial_number,omitempty"`    // Hardware serial number
	FirmwareVersion string   `json:"firmware_version,omitempty"` // V1.2.3 format
	ProtectionLevel uint8    `json:"protection_level,omitempty"` // 1=none, 2=read, 3=full
	ModuleName      string   `json:"module_name,omitempty"`      // PLC module name
	PlantID         string   `json:"plant_id,omitempty"`         // Plant/system identifier
	CPEs            []string `json:"cpes,omitempty"`             // CPE identifiers
}

func (ServiceS7comm) Type ¶

func (e ServiceS7comm) Type() string

type ServiceSCCP ¶

type ServiceSCCP struct {
	DeviceType      string `json:"device_type,omitempty"`
	ProtocolVersion string `json:"protocol_version,omitempty"`
	MaxStreams      int    `json:"max_streams,omitempty"`
	DeviceName      string `json:"device_name,omitempty"`
}

func (ServiceSCCP) Type ¶

func (e ServiceSCCP) Type() string

type ServiceSGsAP ¶

type ServiceSGsAP struct {
	MessageType uint8 `json:"message_type,omitempty"`
	SGsCause    uint8 `json:"sgs_cause,omitempty"`
}

func (ServiceSGsAP) Type ¶

func (e ServiceSGsAP) Type() string

type ServiceSIP ¶

type ServiceSIP struct {
	Banner         string   `json:"banner,omitempty"`
	Server         string   `json:"server,omitempty"`
	AllowedMethods []string `json:"allowed_methods,omitempty"`
	CPEs           []string `json:"cpes,omitempty"`
}

func (ServiceSIP) Type ¶

func (e ServiceSIP) Type() string

type ServiceSIPS ¶

type ServiceSIPS struct {
	Banner         string   `json:"banner,omitempty"`
	Server         string   `json:"server,omitempty"`
	AllowedMethods []string `json:"allowed_methods,omitempty"`
	CPEs           []string `json:"cpes,omitempty"`
}

func (ServiceSIPS) Type ¶

func (e ServiceSIPS) Type() string

type ServiceSMB ¶

type ServiceSMB struct {
	SigningEnabled      bool   `json:"signing_enabled"`  // e.g. Is SMB Signing Enabled?
	SigningRequired     bool   `json:"signing_required"` // e.g. Is SMB Signing Required?
	OSVersion           string `json:"os_version"`
	NetBIOSComputerName string `json:"netbios_computer_name,omitempty"`
	NetBIOSDomainName   string `json:"netbios_domain_name,omitempty"`
	DNSComputerName     string `json:"dns_computer_name,omitempty"`
	DNSDomainName       string `json:"dns_domain_name,omitempty"`
	ForestName          string `json:"forest_name,omitempty"`
}

func (ServiceSMB) Type ¶

func (e ServiceSMB) Type() string

type ServiceSMBUDP ¶ added in v1.25.2

type ServiceSMBUDP struct {
	QUICVersions []string `json:"quic_versions,omitempty"`
	CertSubject  string   `json:"cert_subject,omitempty"`
	CertIssuer   string   `json:"cert_issuer,omitempty"`
}

func (ServiceSMBUDP) Type ¶ added in v1.25.2

func (e ServiceSMBUDP) Type() string

type ServiceSMPP ¶

type ServiceSMPP struct {
	CPEs            []string `json:"cpes,omitempty"`             // Common Platform Enumeration identifiers for vulnerability tracking
	ProtocolVersion string   `json:"protocol_version,omitempty"` // SMPP protocol version (e.g., "3.4", "5.0")
	SystemID        string   `json:"system_id,omitempty"`        // System ID from bind_transceiver_resp
	Vendor          string   `json:"vendor,omitempty"`           // Vendor identified from system_id
	Product         string   `json:"product,omitempty"`          // Product identified from system_id
}

func (ServiceSMPP) Type ¶

func (e ServiceSMPP) Type() string

type ServiceSMTP ¶

type ServiceSMTP struct {
	Banner      string   `json:"banner"`
	AuthMethods []string `json:"auth_methods"`
}

func (ServiceSMTP) Type ¶

func (e ServiceSMTP) Type() string

type ServiceSMTPS ¶

type ServiceSMTPS struct {
	Banner      string   `json:"banner"`
	AuthMethods []string `json:"auth_methods"`
}

func (ServiceSMTPS) Type ¶

func (e ServiceSMTPS) Type() string

type ServiceSNMP ¶

type ServiceSNMP struct{}

func (ServiceSNMP) Type ¶

func (e ServiceSNMP) Type() string

type ServiceSNPP ¶

type ServiceSNPP struct {
	Banner string `json:"banner"`
}

func (ServiceSNPP) Type ¶

func (e ServiceSNPP) Type() string

type ServiceSOCKS4 ¶

type ServiceSOCKS4 struct {
	Status          string   `json:"status"`
	SOCKS4a         bool     `json:"socks4a"`
	AnonymousAccess bool     `json:"anonymous_access"`
	CPEs            []string `json:"cpes,omitempty"`
}

func (ServiceSOCKS4) Type ¶

func (e ServiceSOCKS4) Type() string

type ServiceSOCKS5 ¶

type ServiceSOCKS5 struct {
	SelectedMethod  string   `json:"selected_method"`
	OfferedMethods  []string `json:"offered_methods,omitempty"`
	AnonymousAccess bool     `json:"anonymous_access"`
	CPEs            []string `json:"cpes,omitempty"`
}

func (ServiceSOCKS5) Type ¶

func (e ServiceSOCKS5) Type() string

type ServiceSSH ¶

type ServiceSSH struct {
	Banner              string                    `json:"banner"`
	PasswordAuthEnabled bool                      `json:"password_auth_enabled"`
	Algo                string                    `json:"algo"`
	HostKey             string                    `json:"host_key,omitempty"`
	HostKeyType         string                    `json:"host_key_type,omitempty"`
	HostKeyFingerprint  string                    `json:"host_key_fingerprint,omitempty"`
	Technologies        []string                  `json:"technologies,omitempty"`
	CPEs                []string                  `json:"cpes,omitempty"`
	FingerprintMetadata map[string]map[string]any `json:"fingerprint_metadata,omitempty"`
}

func (ServiceSSH) Type ¶

func (e ServiceSSH) Type() string

type ServiceSSTP ¶

type ServiceSSTP struct {
	Server string   `json:"server,omitempty"` // Server header value (e.g., "Microsoft-HTTPAPI/2.0", "MikroTik-SSTP")
	Vendor string   `json:"vendor,omitempty"` // Identified vendor: "Microsoft", "MikroTik", or "Unknown"
	CPEs   []string `json:"cpes,omitempty"`   // Common Platform Enumeration identifiers
}

func (ServiceSSTP) Type ¶

func (e ServiceSSTP) Type() string

type ServiceSUA ¶ added in v1.1.0

type ServiceSUA struct {
	InfoString   string `json:"info_string,omitempty"`
	ErrorCode    uint32 `json:"error_code,omitempty"`
	MessageClass uint8  `json:"message_class,omitempty"`
	MessageType  uint8  `json:"message_type,omitempty"`
}

func (ServiceSUA) Type ¶ added in v1.1.0

func (e ServiceSUA) Type() string

type ServiceSVN ¶

type ServiceSVN struct {
	MinVersion   int      `json:"min_version"`
	MaxVersion   int      `json:"max_version"`
	AuthMechs    []string `json:"auth_mechs"`
	Capabilities []string `json:"capabilities"`
}

func (ServiceSVN) Type ¶

func (e ServiceSVN) Type() string

type ServiceSmartInstall ¶ added in v1.3.0

type ServiceSmartInstall struct {
	CPEs []string `json:"cpes,omitempty"`
}

func (ServiceSmartInstall) Type ¶ added in v1.3.0

func (e ServiceSmartInstall) Type() string

type ServiceSonarQube ¶

type ServiceSonarQube struct {
	Status          string   `json:"status,omitempty"`
	AnonymousAccess bool     `json:"anonymous_access,omitempty"`
	CPEs            []string `json:"cpes,omitempty"`
}

func (ServiceSonarQube) Type ¶

func (e ServiceSonarQube) Type() string

type ServiceStun ¶

type ServiceStun struct {
	Info string `json:"info"`
}

func (ServiceStun) Type ¶

func (e ServiceStun) Type() string

type ServiceSybase ¶

type ServiceSybase struct {
	CPEs    []string `json:"cpes,omitempty"`
	Version string   `json:"version,omitempty"`
}

func (ServiceSybase) Type ¶

func (e ServiceSybase) Type() string

type ServiceTFTP ¶

type ServiceTFTP struct {
	ErrorMessage string `json:"error_message,omitempty"`
}

func (ServiceTFTP) Type ¶

func (e ServiceTFTP) Type() string

type ServiceTURN ¶

type ServiceTURN struct {
	Software string `json:"software,omitempty"`
	Realm    string `json:"realm,omitempty"`
	Nonce    string `json:"nonce,omitempty"`
}

func (ServiceTURN) Type ¶

func (e ServiceTURN) Type() string

type ServiceTeamViewer ¶ added in v1.1.0

type ServiceTeamViewer struct {
	CPEs []string `json:"cpes,omitempty"`
}

func (ServiceTeamViewer) Type ¶ added in v1.1.0

func (e ServiceTeamViewer) Type() string

type ServiceTelnet ¶

type ServiceTelnet struct {
	ServerData string `json:"server_data"`
}

func (ServiceTelnet) Type ¶

func (e ServiceTelnet) Type() string

type ServiceUnknown ¶

type ServiceUnknown map[string]any

func (ServiceUnknown) Map ¶

func (e ServiceUnknown) Map() map[string]any

func (ServiceUnknown) Type ¶

func (e ServiceUnknown) Type() string

type ServiceVMware ¶ added in v1.1.0

type ServiceVMware struct {
	ProductType   string   `json:"product_type"` // "esxi", "vcenter", or "vsphere"
	FullName      string   `json:"full_name,omitempty"`
	Build         string   `json:"build,omitempty"`
	ApiType       string   `json:"api_type,omitempty"`
	ApiVersion    string   `json:"api_version,omitempty"`
	OsType        string   `json:"os_type,omitempty"`
	ProductLineId string   `json:"product_line_id,omitempty"`
	CPEs          []string `json:"cpes,omitempty"`
}

func (ServiceVMware) Type ¶ added in v1.1.0

func (e ServiceVMware) Type() string

type ServiceVNC ¶

type ServiceVNC struct{}

func (ServiceVNC) Type ¶

func (e ServiceVNC) Type() string

type ServiceWireGuard ¶

type ServiceWireGuard struct {
	DetectionMethod string `json:"detection_method"` // "response", "differential", "heuristic"
	Confidence      string `json:"confidence"`       // "high", "medium", "low"
}

func (ServiceWireGuard) Type ¶

func (e ServiceWireGuard) Type() string

type ServiceX2AP ¶

type ServiceX2AP struct {
	ProcedureCode uint8 `json:"procedure_code,omitempty"`
	Criticality   uint8 `json:"criticality,omitempty"`
	MessageType   uint8 `json:"message_type,omitempty"` // 0=Initiating, 1=Successful, 2=Unsuccessful
}

func (ServiceX2AP) Type ¶

func (e ServiceX2AP) Type() string

type ServiceX11 ¶

type ServiceX11 struct {
	MajorVersion  uint16 `json:"major_version"`
	MinorVersion  uint16 `json:"minor_version"`
	Vendor        string `json:"vendor,omitempty"`
	AccessGranted bool   `json:"access_granted"`
	DisplayNumber int    `json:"display_number,omitempty"`
}

func (ServiceX11) Type ¶

func (e ServiceX11) Type() string

type ServiceXMPP ¶ added in v1.1.0

type ServiceXMPP struct {
	StreamID       string   `json:"stream_id,omitempty"`
	ServerFrom     string   `json:"server_from,omitempty"`
	AuthMechanisms []string `json:"auth_mechanisms,omitempty"`
	TLSSupport     string   `json:"tls_support,omitempty"`
	Compression    []string `json:"compression,omitempty"`
	CapsNode       string   `json:"caps_node,omitempty"`
	CapsVer        string   `json:"caps_ver,omitempty"`
	ServerSoftware string   `json:"server_software,omitempty"`
	CPEs           []string `json:"cpes,omitempty"`
}

func (ServiceXMPP) Type ¶ added in v1.1.0

func (e ServiceXMPP) Type() string

type ServiceZabbixAgent ¶

type ServiceZabbixAgent struct {
	RemoteCommandsEnabled bool     `json:"remote_commands_enabled"`
	CPEs                  []string `json:"cpes,omitempty"`
}

func (ServiceZabbixAgent) Type ¶

func (e ServiceZabbixAgent) Type() string

type ServiceZooKeeper ¶

type ServiceZooKeeper struct {
	CPEs        []string `json:"cpes,omitempty"`        // Common Platform Enumeration identifiers for vulnerability tracking
	Mode        string   `json:"mode,omitempty"`        // ZooKeeper mode: standalone, leader, follower, observer
	Connections int      `json:"connections,omitempty"` // Number of active connections
	NodeCount   int      `json:"node_count,omitempty"`  // Number of ZNodes in the namespace
	Restricted  bool     `json:"restricted,omitempty"`  // Whether commands are restricted by whitelist
}

func (ServiceZooKeeper) Type ¶

func (e ServiceZooKeeper) Type() string

type Severity ¶ added in v1.2.0

type Severity string

Severity represents the severity level of a security finding.

const (
	SeverityCritical Severity = "critical"
	SeverityHigh     Severity = "high"
	SeverityMedium   Severity = "medium"
	SeverityLow      Severity = "low"
	SeverityInfo     Severity = "info"
)

func (Severity) Valid ¶ added in v1.2.0

func (s Severity) Valid() bool

Valid returns true if the severity is a recognized value.

type Target ¶

type Target struct {
	Address    netip.AddrPort
	Host       string
	Misconfigs bool // when true, plugins should populate SecurityFindings
}

Directories ¶

Path Synopsis
Package fingerprinters provides HTTP fingerprinting for Adobe Experience Manager (AEM).
Package fingerprinters provides HTTP fingerprinting for Adobe Experience Manager (AEM).
services
activemq
Package activemq implements service detection for Apache ActiveMQ using the OpenWire protocol.
Package activemq implements service detection for Apache ActiveMQ using the OpenWire protocol.
ajp
Package ajp implements service detection for Apache JServ Protocol (AJPv13).
Package ajp implements service detection for Apache JServ Protocol (AJPv13).
anydesk
Package anydesk implements service detection for AnyDesk remote desktop via TLS certificate inspection.
Package anydesk implements service detection for AnyDesk remote desktop via TLS certificate inspection.
atg
bgp
citrixica
Package citrixica implements service detection for Citrix ICA (Independent Computing Architecture).
Package citrixica implements service detection for Citrix ICA (Independent Computing Architecture).
db2
dns
ethernetip
Package ethernetip implements fingerprinting for EtherNet/IP (Common Industrial Protocol).
Package ethernetip implements fingerprinting for EtherNet/IP (Common Industrial Protocol).
firebird
Package firebird implements Firebird SQL database server fingerprinting.
Package firebird implements Firebird SQL database server fingerprinting.
fox
ftp
git
Package git provides fingerprinting for the Git daemon service.
Package git provides fingerprinting for the Git daemon service.
ikev2
Package ikev2 implements IKEv2 (RFC 7296) fingerprinting for network services.
Package ikev2 implements IKEv2 (RFC 7296) fingerprinting for network services.
ipp
irc
Package irc implements IRC (Internet Relay Chat) service fingerprinting.
Package irc implements IRC (Internet Relay Chat) service fingerprinting.
iua
javarmi
Package javarmi provides fingerprinting for Java RMI (Remote Method Invocation) services using the JRMP (Java Remote Method Protocol) wire protocol.
Package javarmi provides fingerprinting for Java RMI (Remote Method Invocation) services using the JRMP (Java Remote Method Protocol) wire protocol.
jetdirect
Package jetdirect implements JetDirect/PJL printer detection.
Package jetdirect implements JetDirect/PJL printer detection.
kerberos
Package kerberos implements a Kerberos v5 service detection plugin for Nerva.
Package kerberos implements a Kerberos v5 service detection plugin for Nerva.
memcached
Package memcached implements fingerprinting for Memcached distributed memory cache servers.
Package memcached implements fingerprinting for Memcached distributed memory cache servers.
mikrotikwinbox
Package mikrotikwinbox detects MikroTik RouterOS Winbox and API services.
Package mikrotikwinbox detects MikroTik RouterOS Winbox and API services.
msrpc
Package msrpc detects Microsoft DCE/RPC services (port 135 endpoint mapper and dynamic RPC ports).
Package msrpc detects Microsoft DCE/RPC services (port 135 endpoint mapper and dynamic RPC ports).
mysqlx
Package mysqlx detects MySQL X Protocol (port 33060) services.
Package mysqlx detects MySQL X Protocol (port 33060) services.
nfs
nrpe
Package nrpe implements service detection for Nagios Remote Plugin Executor (NRPE) using the v2 binary protocol.
Package nrpe implements service detection for Nagios Remote Plugin Executor (NRPE) using the v2 binary protocol.
ntp
omronfins
Package omronfins implements OMRON FINS service fingerprinting for both UDP and TCP.
Package omronfins implements OMRON FINS service fingerprinting for both UDP and TCP.
openvpn
OpenVPN Management Interface Detection
OpenVPN Management Interface Detection
pcworx
Package pcworx provides TCP fingerprinting for Phoenix Contact PLCs via the PC Worx protocol on port 1962.
Package pcworx provides TCP fingerprinting for Phoenix Contact PLCs via the PC Worx protocol on port 1962.
pfcp
Package pfcp implements PFCP (Packet Forwarding Control Protocol) detection.
Package pfcp implements PFCP (Packet Forwarding Control Protocol) detection.
pptp
Package pptp implements a PPTP (Point-to-Point Tunneling Protocol) service fingerprinting plugin.
Package pptp implements a PPTP (Point-to-Point Tunneling Protocol) service fingerprinting plugin.
rdp
rtmp
Package rtmp detects RTMP (Real-Time Messaging Protocol) streaming servers.
Package rtmp detects RTMP (Real-Time Messaging Protocol) streaming servers.
sip
smartinstall
Package smartinstall detects Cisco Smart Install protocol (port 4786).
Package smartinstall detects Cisco Smart Install protocol (port 4786).
smb
smpp
Package smpp implements fingerprinting for the SMPP (Short Message Peer-to-Peer) protocol.
Package smpp implements fingerprinting for the SMPP (Short Message Peer-to-Peer) protocol.
socks4
Package socks4 implements a SOCKS4 proxy detection plugin.
Package socks4 implements a SOCKS4 proxy detection plugin.
socks5
Package socks5 implements a SOCKS5 proxy detection plugin.
Package socks5 implements a SOCKS5 proxy detection plugin.
ssh
sua
svn
sybase
Package sybase implements fingerprinting for Sybase ASE (Adaptive Server Enterprise), now known as SAP ASE.
Package sybase implements fingerprinting for Sybase ASE (Adaptive Server Enterprise), now known as SAP ASE.
turn
Package turn implements TURN (Traversal Using Relays around NAT) server detection.
Package turn implements TURN (Traversal Using Relays around NAT) server detection.
unitronics
Package unitronics implements service detection for Unitronics PCOM protocol.
Package unitronics implements service detection for Unitronics PCOM protocol.
vnc
x11
Package x11 implements detection of X11 (X Window System) servers.
Package x11 implements detection of X11 (X Window System) servers.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL