virustotal

package
v0.0.0-...-324f9bf Latest Latest
Warning

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

Go to latest
Published: May 28, 2024 License: Apache-2.0 Imports: 17 Imported by: 0

Documentation

Index

Constants

View Source
const (
	ProviderName      = "virustotal"
	APIURL            = "https://www.virustotal.com"
	HostIPPath        = "/api/v3/ip_addresses"
	IndentPipeHyphens = " |-----"

	ResultTTL = 12 * time.Hour
)

Variables

This section is empty.

Functions

func NewProviderClient

func NewProviderClient(c session.Session) (providers.ProviderClient, error)

Types

type AnalysisResultData

type AnalysisResultData struct {
	Method     string `json:"method,omitempty"`
	EngineName string `json:"engine_name,omitempty"`
	Category   string `json:"category,omitempty"`
	Result     string `json:"result,omitempty"`
}

func (AnalysisResultData) GetCategory

func (ard AnalysisResultData) GetCategory() string

func (AnalysisResultData) GetEngineName

func (ard AnalysisResultData) GetEngineName() string

func (AnalysisResultData) GetMethod

func (ard AnalysisResultData) GetMethod() string

func (AnalysisResultData) GetResult

func (ard AnalysisResultData) GetResult() string

func (AnalysisResultData) ResultHasAny

func (ard AnalysisResultData) ResultHasAny(v []string) bool

func (AnalysisResultData) ShouldOutput

func (ard AnalysisResultData) ShouldOutput(sess *session.Session) bool

type Client

type Client struct {
	Config     Config
	HTTPClient *retryablehttp.Client
}

func (*Client) GetConfig

func (c *Client) GetConfig() *session.Session

func (*Client) GetData

func (c *Client) GetData() (result *HostSearchResult, err error)

type Config

type Config struct {
	session.Session
	Host   netip.Addr
	APIKey string
	// contains filtered or unexported fields
}

type HostSearchResult

type HostSearchResult struct {
	Raw   []byte               `json:"raw"`
	Error string               `json:"error"`
	Data  HostSearchResultData `json:"data,omitempty"`
}

func (*HostSearchResult) CreateTable

func (ssr *HostSearchResult) CreateTable() *table.Writer

type HostSearchResultData

type HostSearchResultData struct {
	ID    string `json:"id,omitempty"`
	Type  string `json:"type,omitempty"`
	Links struct {
		Self string `json:"self,omitempty"`
	} `json:"links,omitempty"`
	Attributes struct {
		LastAnalysisStats struct {
			Malicious  int `json:"malicious,omitempty"`
			Suspicious int `json:"suspicious,omitempty"`
			Undetected int `json:"undetected,omitempty"`
			Harmless   int `json:"harmless,omitempty"`
			Timeout    int `json:"timeout,omitempty"`
		} `json:"last_analysis_stats,omitempty"`
		LastAnalysisResults  LastAnalysisResults `json:"last_analysis_results,omitempty"`
		LastModificationDate int                 `json:"last_modification_date,omitempty"`
		LastAnalysisDate     int                 `json:"last_analysis_date,omitempty"`

		Whois      string `json:"whois,omitempty"`
		WhoisDate  int    `json:"whois_date,omitempty"`
		Reputation int    `json:"reputation,omitempty"`
		Country    string `json:"country,omitempty"`
		TotalVotes struct {
			Harmless  int `json:"harmless,omitempty"`
			Malicious int `json:"malicious,omitempty"`
		} `json:"total_votes,omitempty"`
		Continent                string `json:"continent,omitempty"`
		Asn                      int    `json:"asn,omitempty"`
		AsOwner                  string `json:"as_owner,omitempty"`
		Network                  string `json:"network,omitempty"`
		Tags                     []any  `json:"tags,omitempty"`
		RegionalInternetRegistry string `json:"regional_internet_registry,omitempty"`
	} `json:"attributes,omitempty"`
}

type LastAnalysisResults

type LastAnalysisResults struct {
	Acronis struct {
		AnalysisResultData
	} `json:"Acronis,omitempty"`
	ZeroXSIF33D struct {
		AnalysisResultData
	} `json:"0xSI_f33d,omitempty"`
	Abusix struct {
		AnalysisResultData
	} `json:"Abusix,omitempty"`
	ADMINUSLabs struct {
		AnalysisResultData
	} `json:"ADMINUSLabs,omitempty"`
	CriminalIP struct {
		AnalysisResultData
	} `json:"Criminal IP,omitempty"`
	AILabsMONITORAPP struct {
		AnalysisResultData
	} `json:"AILabs (MONITORAPP),omitempty"`
	AlienVault struct {
		AnalysisResultData
	} `json:"AlienVault,omitempty"`
	AlphaMountainAi struct {
		AnalysisResultData
	} `json:"alphaMountain.ai,omitempty"`
	AlphaSOC struct {
		AnalysisResultData
	} `json:"AlphaSOC,omitempty"`
	AntiyAVL struct {
		AnalysisResultData
	} `json:"Antiy-AVL,omitempty"`
	ArcSightThreatIntelligence struct {
		AnalysisResultData
	} `json:"ArcSight Threat Intelligence,omitempty"`
	AutoShun struct {
		AnalysisResultData
	} `json:"AutoShun,omitempty"`
	BenkowCc struct {
		AnalysisResultData
	} `json:"benkow.cc,omitempty"`
	BforeAiPreCrime struct {
		AnalysisResultData
	} `json:"Bfore.Ai PreCrime,omitempty"`
	BitDefender struct {
		AnalysisResultData
	} `json:"BitDefender,omitempty"`
	Bkav struct {
		AnalysisResultData
	} `json:"Bkav,omitempty"`
	Blueliv struct {
		AnalysisResultData
	} `json:"Blueliv,omitempty"`
	Certego struct {
		AnalysisResultData
	} `json:"Certego,omitempty"`
	ChongLuaDao struct {
		AnalysisResultData
	} `json:"Chong Lua Dao,omitempty"`
	CINSArmy struct {
		AnalysisResultData
	} `json:"CINS Army,omitempty"`
	Cluster25 struct {
		AnalysisResultData
	} `json:"Cluster25,omitempty"`
	Crdf struct {
		AnalysisResultData
	} `json:"CRDF,omitempty"`
	CSISSecurityGroup struct {
		AnalysisResultData
	} `json:"CSIS Security Group,omitempty"`
	SnortIPSampleList struct {
		AnalysisResultData
	} `json:"Snort IP sample list,omitempty"`
	CMCThreatIntelligence struct {
		AnalysisResultData
	} `json:"CMC Threat Intelligence,omitempty"`
	Cyan struct {
		AnalysisResultData
	} `json:"Cyan,omitempty"`
	Cyble struct {
		AnalysisResultData
	} `json:"Cyble,omitempty"`
	CyRadar struct {
		AnalysisResultData
	} `json:"CyRadar,omitempty"`
	DNS8 struct {
		AnalysisResultData
	} `json:"DNS8,omitempty"`
	DrWeb struct {
		AnalysisResultData
	} `json:"Dr.Web,omitempty"`
	Ermes struct {
		AnalysisResultData
	} `json:"Ermes,omitempty"`
	Eset struct {
		AnalysisResultData
	} `json:"ESET,omitempty"`
	ESTsecurity struct {
		AnalysisResultData
	} `json:"ESTsecurity,omitempty"`
	EmergingThreats struct {
		AnalysisResultData
	} `json:"EmergingThreats,omitempty"`
	Emsisoft struct {
		AnalysisResultData
	} `json:"Emsisoft,omitempty"`
	ForcepointThreatSeeker struct {
		AnalysisResultData
	} `json:"Forcepoint ThreatSeeker,omitempty"`
	Fortinet struct {
		AnalysisResultData
	} `json:"Fortinet,omitempty"`
	GData struct {
		AnalysisResultData
	} `json:"G-Data,omitempty"`
	GoogleSafebrowsing struct {
		AnalysisResultData
	} `json:"Google Safebrowsing,omitempty"`
	GreenSnow struct {
		AnalysisResultData
	} `json:"GreenSnow,omitempty"`
	Gridinsoft struct {
		AnalysisResultData
	} `json:"Gridinsoft,omitempty"`
	HeimdalSecurity struct {
		AnalysisResultData
	} `json:"Heimdal Security,omitempty"`
	HuntIoIntelligence struct {
		AnalysisResultData
	} `json:"Hunt.io Intelligence,omitempty"`
	IPsum struct {
		AnalysisResultData
	} `json:"IPsum,omitempty"`
	JuniperNetworks struct {
		AnalysisResultData
	} `json:"Juniper Networks,omitempty"`
	K7AntiVirus struct {
		AnalysisResultData
	} `json:"K7AntiVirus,omitempty"`
	Kaspersky struct {
		AnalysisResultData
	} `json:"Kaspersky,omitempty"`
	Lionic struct {
		AnalysisResultData
	} `json:"Lionic,omitempty"`
	Lumu struct {
		AnalysisResultData
	} `json:"Lumu,omitempty"`
	MalwarePatrol struct {
		AnalysisResultData
	} `json:"MalwarePatrol,omitempty"`
	MalwareURL struct {
		AnalysisResultData
	} `json:"MalwareURL,omitempty"`
	Malwared struct {
		AnalysisResultData
	} `json:"Malwared,omitempty"`
	Netcraft struct {
		AnalysisResultData
	} `json:"Netcraft,omitempty"`
	OpenPhish struct {
		AnalysisResultData
	} `json:"OpenPhish,omitempty"`
	PhishingDatabase struct {
		AnalysisResultData
	} `json:"Phishing Database,omitempty"`
	PhishFort struct {
		AnalysisResultData
	} `json:"PhishFort,omitempty"`
	PhishLabs struct {
		AnalysisResultData
	} `json:"PhishLabs,omitempty"`
	Phishtank struct {
		AnalysisResultData
	} `json:"Phishtank,omitempty"`
	Prebytes struct {
		AnalysisResultData
	} `json:"PREBYTES,omitempty"`
	PrecisionSec struct {
		AnalysisResultData
	} `json:"PrecisionSec,omitempty"`
	QuickHeal struct {
		AnalysisResultData
	} `json:"Quick Heal,omitempty"`
	Quttera struct {
		AnalysisResultData
	} `json:"Quttera,omitempty"`
	SafeToOpen struct {
		AnalysisResultData
	} `json:"SafeToOpen,omitempty"`
	SansecEComscan struct {
		AnalysisResultData
	} `json:"Sansec eComscan,omitempty"`
	Scantitan struct {
		AnalysisResultData
	} `json:"Scantitan,omitempty"`
	SCUMWAREOrg struct {
		AnalysisResultData
	} `json:"SCUMWARE.org,omitempty"`
	Seclookup struct {
		AnalysisResultData
	} `json:"Seclookup,omitempty"`
	SecureBrain struct {
		AnalysisResultData
	} `json:"SecureBrain,omitempty"`
	Segasec struct {
		AnalysisResultData
	} `json:"Segasec,omitempty"`
	SOCRadar struct {
		AnalysisResultData
	} `json:"SOCRadar,omitempty"`
	Sophos struct {
		AnalysisResultData
	} `json:"Sophos,omitempty"`
	Spam404 struct {
		AnalysisResultData
	} `json:"Spam404,omitempty"`
	StopForumSpam struct {
		AnalysisResultData
	} `json:"StopForumSpam,omitempty"`
	SucuriSiteCheck struct {
		AnalysisResultData
	} `json:"Sucuri SiteCheck,omitempty"`
	ThreatHive struct {
		AnalysisResultData
	} `json:"ThreatHive,omitempty"`
	Threatsourcing struct {
		AnalysisResultData
	} `json:"Threatsourcing,omitempty"`
	Trustwave struct {
		AnalysisResultData
	} `json:"Trustwave,omitempty"`
	Underworld struct {
		AnalysisResultData
	} `json:"Underworld,omitempty"`
	URLhaus struct {
		AnalysisResultData
	} `json:"URLhaus,omitempty"`
	URLQuery struct {
		AnalysisResultData
	} `json:"URLQuery,omitempty"`
	ViettelThreatIntelligence struct {
		AnalysisResultData
	} `json:"Viettel Threat Intelligence,omitempty"`
	Vipre struct {
		AnalysisResultData
	} `json:"VIPRE,omitempty"`
	VXVault struct {
		AnalysisResultData
	} `json:"VX Vault,omitempty"`
	ViriBack struct {
		AnalysisResultData
	} `json:"ViriBack,omitempty"`
	Webroot struct {
		AnalysisResultData
	} `json:"Webroot,omitempty"`
	YandexSafebrowsing struct {
		AnalysisResultData
	} `json:"Yandex Safebrowsing,omitempty"`
	ZeroCERT struct {
		AnalysisResultData
	} `json:"ZeroCERT,omitempty"`
	DesenmascaraMe struct {
		AnalysisResultData
	} `json:"desenmascara.me,omitempty"`
	MalwaresComURLChecker struct {
		AnalysisResultData
	} `json:"malwares.com URL checker,omitempty"`
	Securolytics struct {
		AnalysisResultData
	} `json:"securolytics,omitempty"`
	XcitiumVerdictCloud struct {
		AnalysisResultData
	} `json:"Xcitium Verdict Cloud,omitempty"`
	Zvelo struct {
		AnalysisResultData
	} `json:"zvelo,omitempty"`
}

func (LastAnalysisResults) GetTableRows

func (lra LastAnalysisResults) GetTableRows(sess *session.Session, tw table.Writer, rowEmphasisColour func(format string, a ...interface{}) string)

func (LastAnalysisResults) ShouldOutput

func (lra LastAnalysisResults) ShouldOutput(sess *session.Session) bool

type Provider

type Provider interface {
	LoadData() ([]byte, error)
	CreateTable([]byte) (*table.Writer, error)
}

type ProviderClient

type ProviderClient struct {
	session.Session
}

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

Jump to

Keyboard shortcuts

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