Documentation ¶
Index ¶
- Constants
- func NewProviderClient(c session.Session) (providers.ProviderClient, error)
- type Client
- type Config
- type HostSearchResult
- type HostSearchResultData
- type Provider
- type ProviderClient
- func (c *ProviderClient) CreateTable(data []byte) (*table.Writer, error)
- func (c *ProviderClient) Enabled() bool
- func (c *ProviderClient) FindHost() ([]byte, error)
- func (c *ProviderClient) GetConfig() *session.Session
- func (c *ProviderClient) Initialise() error
- func (c *ProviderClient) Priority() int
Constants ¶
View Source
const ( ProviderName = "shodan" APIURL = "https://api.shodan.io" HostIPPath = "/shodan/host" IndentPipeHyphens = " |-----" ResultTTL = 12 * time.Hour OutputPriority = 50 )
Variables ¶
This section is empty.
Functions ¶
func NewProviderClient ¶
func NewProviderClient(c session.Session) (providers.ProviderClient, error)
Types ¶
type Client ¶
type Client struct { Config Config HTTPClient *retryablehttp.Client }
func (*Client) GetData ¶
func (c *Client) GetData() (result *HostSearchResult, err error)
type HostSearchResult ¶
type HostSearchResult struct { Raw []byte `json:"raw"` City string `json:"city"` RegionCode string `json:"region_code"` Os any `json:"os"` Tags []any `json:"tags"` IP int `json:"ip"` Isp string `json:"isp"` AreaCode any `json:"area_code"` Longitude float64 `json:"longitude"` LastUpdate string `json:"last_update"` Ports []int `json:"ports"` Latitude float64 `json:"latitude"` Hostnames []string `json:"hostnames"` CountryCode string `json:"country_code"` CountryName string `json:"country_name"` Domains []string `json:"domains"` Org string `json:"org"` Data []HostSearchResultData Asn string `json:"asn"` IPStr string `json:"ip_str"` Error string `json:"error"` }
func (*HostSearchResult) CreateTable ¶
func (ssr *HostSearchResult) CreateTable() *table.Writer
type HostSearchResultData ¶
type HostSearchResultData struct { Hash int `json:"hash"` Opts struct{} `json:"opts,omitempty"` Timestamp string `json:"timestamp"` Isp string `json:"isp"` Data string `json:"data"` Shodan struct { Region string `json:"region"` Module string `json:"module"` Ptr bool `json:"ptr"` Options struct{} `json:"options"` ID string `json:"id"` Crawler string `json:"crawler"` } `json:"_shodan,omitempty"` Port int `json:"port"` Hostnames []string `json:"hostnames"` Location struct { City string `json:"city"` RegionCode string `json:"region_code"` AreaCode any `json:"area_code"` Longitude float64 `json:"longitude"` CountryName string `json:"country_name"` CountryCode string `json:"country_code"` Latitude float64 `json:"latitude"` } `json:"location"` DNS struct { ResolverHostname any `json:"resolver_hostname"` Recursive bool `json:"recursive"` ResolverID any `json:"resolver_id"` Software any `json:"software"` } `json:"dns,omitempty"` SSH struct { Hassh string `json:"hassh"` Fingerprint string `json:"fingerprint"` Mac string `json:"mac"` Cipher string `json:"cipher"` Key string `json:"key"` Kex struct { Languages []string `json:"languages"` ServerHostKeyAlgorithms []string `json:"server_host_key_algorithms"` EncryptionAlgorithms []string `json:"encryption_algorithms"` KexFollows bool `json:"kex_follows"` Unused int `json:"unused"` KexAlgorithms []string `json:"kex_algorithms"` CompressionAlgorithms []string `json:"compression_algorithms"` MacAlgorithms []string `json:"mac_algorithms"` } `json:"kex"` Type string `json:"type"` } `json:"ssh"` HTTP struct { Status int `json:"status"` RobotsHash int `json:"robots_hash"` Redirects []struct { Host string `json:"host"` Data string `json:"data"` Location string `json:"location"` } SecurityTxt string `json:"security_txt"` Title string `json:"title"` SitemapHash int `json:"sitemap_hash"` HTMLHash int `json:"html_hash"` Robots string `json:"robots"` Favicon struct { Hash int `json:"hash"` Data string `json:"data"` Location string `json:"location"` } `json:"favicon"` HeadersHash int `json:"headers_hash"` Host string `json:"host"` HTML string `json:"html"` Location string `json:"location"` Components struct{} `json:"components"` Server string `json:"server"` Sitemap string `json:"sitemap"` SecurityTxtHash int `json:"securitytxt_hash"` } `json:"http,omitempty"` IP int `json:"ip"` Domains []string `json:"domains"` Org string `json:"org"` Os any `json:"os"` Asn string `json:"asn"` Transport string `json:"transport"` IPStr string `json:"ip_str"` Ssl struct { ChainSha256 []string `json:"chain_sha256"` Jarm string `json:"jarm"` Chain []string `json:"chain"` Dhparams any `json:"dhparams"` Versions []string `json:"versions"` AcceptableCas []any `json:"acceptable_cas"` Tlsext []struct { ID int `json:"id"` Name string `json:"name"` } `json:"tlsext"` Ja3S string `json:"ja3s"` Cert struct { SigAlg string `json:"sig_alg"` Issued string `json:"issued"` Expires string `json:"expires"` Expired bool `json:"expired"` Version int `json:"version"` Extensions []struct { Critical bool `json:"critical,omitempty"` Data string `json:"data"` Name string `json:"name"` } `json:"extensions"` Fingerprint struct { Sha256 string `json:"sha256"` Sha1 string `json:"sha1"` } `json:"fingerprint"` Serial json.RawMessage `json:"serial"` Subject struct { Cn string `json:"CN"` } `json:"subject"` Pubkey struct { Type string `json:"type"` Bits int `json:"bits"` } `json:"pubkey"` Issuer struct { C string `json:"C"` Cn string `json:"CN"` O string `json:"O"` } `json:"issuer"` } `json:"cert"` Cipher struct { Version string `json:"version"` Bits int `json:"bits"` Name string `json:"name"` } `json:"cipher"` Trust struct { Revoked bool `json:"revoked"` Browser any `json:"browser"` } `json:"trust"` HandshakeStates []string `json:"handshake_states"` Alpn []any `json:"alpn"` Ocsp struct{} `json:"ocsp"` } `json:"ssl,omitempty"` }
type ProviderClient ¶
func (*ProviderClient) CreateTable ¶
func (c *ProviderClient) CreateTable(data []byte) (*table.Writer, error)
func (*ProviderClient) Enabled ¶
func (c *ProviderClient) Enabled() bool
func (*ProviderClient) FindHost ¶
func (c *ProviderClient) FindHost() ([]byte, error)
func (*ProviderClient) GetConfig ¶
func (c *ProviderClient) GetConfig() *session.Session
func (*ProviderClient) Initialise ¶
func (c *ProviderClient) Initialise() error
func (*ProviderClient) Priority ¶
func (c *ProviderClient) Priority() int
Click to show internal directories.
Click to hide internal directories.