Documentation
¶
Overview ¶
Package shodan contains all of the data structures and logic required to interact with the Shodan API.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type HTTP ¶
type HTTP struct {
Status int `json:"status" yaml:"status"`
RobotsHash *int `json:"robots_hash" yaml:"robots_hash"`
SecurityTxt *string `json:"securitytxt" yaml:"securitytxt"`
Title string `json:"title" yaml:"title"`
SitemapHash *int `json:"sitemap_hash" yaml:"sitemap_hash"`
Robots *string `json:"robots" yaml:"robots"`
}
HTTP represents the HTTP information for a Shodan record.
type MacAddressInfo ¶
type MacAddressInfo struct {
Assignment string `json:"assignment" required:"true" yaml:"assignment"`
Date string `json:"date" yaml:"date"`
Org string `json:"org" required:"true" yaml:"org"`
}
MacAddressInfo represents the information for a MAC address in a Shodan record.
type Record ¶
type Record struct {
ASN string `json:"asn" yaml:"asn"`
CPE []string `json:"cpe" yaml:"cpe"`
CPE23 []string `json:"cpe23" yaml:"cpe23"`
Data string `json:"data" required:"true" yaml:"data"`
Device string `json:"device" yaml:"device"`
DeviceType string `json:"devicetype" yaml:"devicetype"`
Domains []string `json:"domains" required:"true" yaml:"domains"`
Hash int `json:"hash" required:"true" yaml:"hash"`
Hostnames []string `json:"hostnames" yaml:"hostnames"`
HTTP HTTP `json:"http" yaml:"http"`
IPStr string `json:"ip_str" yaml:"ip_str"`
Info string `json:"info" yaml:"info"`
IPv6 string `json:"ipv6" yaml:"ipv6"`
ISP string `json:"isp" yaml:"isp"`
Link string `json:"link" yaml:"link"`
MAC map[string]MacAddressInfo `json:"mac" yaml:"mac"`
Opts map[string]interface{} `json:"opts" yaml:"opts"`
Org string `json:"org" yaml:"org"`
OS string `json:"os" yaml:"os"`
Platform string `json:"platform" yaml:"platform"`
Port int `json:"port" yaml:"port"`
Product string `json:"product" yaml:"product"`
Tags []Tag `json:"tags" yaml:"tags"`
Timestamp shodanTime `json:"timestamp" required:"true" yaml:"timestamp"`
Title string `json:"title" yaml:"title"`
Transport string `json:"transport" required:"true" yaml:"transport"`
Uptime int `json:"uptime" yaml:"uptime"`
Vendor string `json:"vendor" yaml:"vendor"`
Version string `json:"version" yaml:"version"`
Vulns map[string]Vulnerability `json:"vulns" yaml:"vulns"`
}
Record represents a single Shodan record.
type Report ¶
type Report struct {
Query string `json:"query" yaml:"query"`
QueryType string `json:"query_type" yaml:"query_type"`
ShodanRecords []Record `json:"shodan_records" yaml:"shodan_records"`
Errors []string `json:"errors" yaml:"errors"`
}
Report represents the report of all Shodan records for a given query including all non-fatal errors that occurred.
func QueryShodanHostStrictHostnameMatch ¶
func QueryShodanHostStrictHostnameMatch(ctx context.Context, apiKey string, query string, hostname string) (Report, error)
QueryShodanHostStrictHostnameMatch queries Shodan for a given query string and ensures that the hostname contains the given hostname string.
type Response ¶
type Response struct {
Matches []json.RawMessage `json:"matches" yaml:"matches"`
}
Response represents the response from the Shodan API.
type Tag ¶
type Tag string
Tag represents a Shodan tag.
const ( C2 Tag = "c2" CDN Tag = "cdn" Cloud Tag = "cloud" Compromised Tag = "compromised" Cryptocurrency Tag = "cryptocurrency" Database Tag = "database" DevOps Tag = "devops" DoublePulsar Tag = "doublepulsar" EOLOS Tag = "eol-os" EOLProduct Tag = "eol-product" Honeypot Tag = "honeypot" ICS Tag = "ics" IOT Tag = "iot" Malware Tag = "malware" Medical Tag = "medical" Onion Tag = "onion" Proxy Tag = "proxy" SelfSigned Tag = "self-signed" Scanner Tag = "scanner" SSHBadKey Tag = "ssh-bad-key" StartTLS Tag = "starttls" Tor Tag = "tor" Videogame Tag = "videogame" VPN Tag = "vpn" )
type Vulnerability ¶
type Vulnerability struct {
CVSS float64 `json:"cvss" yaml:"cvss"`
References []string `json:"references" required:"true" yaml:"references"`
Summary string `json:"summary" required:"true" yaml:"summary"`
Verified bool `json:"verified" yaml:"verified"`
}
Vulnerability represents a Shodan vulnerability.