subfinder/pkg/passive/sources.go

203 lines
6.2 KiB
Go

package passive
import (
"github.com/projectdiscovery/subfinder/pkg/subscraping"
"github.com/projectdiscovery/subfinder/pkg/subscraping/sources/alienvault"
"github.com/projectdiscovery/subfinder/pkg/subscraping/sources/archiveis"
"github.com/projectdiscovery/subfinder/pkg/subscraping/sources/binaryedge"
"github.com/projectdiscovery/subfinder/pkg/subscraping/sources/bufferover"
"github.com/projectdiscovery/subfinder/pkg/subscraping/sources/censys"
"github.com/projectdiscovery/subfinder/pkg/subscraping/sources/certspotter"
"github.com/projectdiscovery/subfinder/pkg/subscraping/sources/certspotterold"
"github.com/projectdiscovery/subfinder/pkg/subscraping/sources/chaos"
"github.com/projectdiscovery/subfinder/pkg/subscraping/sources/commoncrawl"
"github.com/projectdiscovery/subfinder/pkg/subscraping/sources/crtsh"
"github.com/projectdiscovery/subfinder/pkg/subscraping/sources/dnsdb"
"github.com/projectdiscovery/subfinder/pkg/subscraping/sources/dnsdumpster"
"github.com/projectdiscovery/subfinder/pkg/subscraping/sources/entrust"
"github.com/projectdiscovery/subfinder/pkg/subscraping/sources/github"
"github.com/projectdiscovery/subfinder/pkg/subscraping/sources/hackertarget"
"github.com/projectdiscovery/subfinder/pkg/subscraping/sources/intelx"
"github.com/projectdiscovery/subfinder/pkg/subscraping/sources/ipv4info"
"github.com/projectdiscovery/subfinder/pkg/subscraping/sources/passivetotal"
"github.com/projectdiscovery/subfinder/pkg/subscraping/sources/rapiddns"
"github.com/projectdiscovery/subfinder/pkg/subscraping/sources/recon"
"github.com/projectdiscovery/subfinder/pkg/subscraping/sources/securitytrails"
"github.com/projectdiscovery/subfinder/pkg/subscraping/sources/shodan"
"github.com/projectdiscovery/subfinder/pkg/subscraping/sources/sitedossier"
"github.com/projectdiscovery/subfinder/pkg/subscraping/sources/spyse"
"github.com/projectdiscovery/subfinder/pkg/subscraping/sources/sublist3r"
"github.com/projectdiscovery/subfinder/pkg/subscraping/sources/threatcrowd"
"github.com/projectdiscovery/subfinder/pkg/subscraping/sources/threatminer"
"github.com/projectdiscovery/subfinder/pkg/subscraping/sources/virustotal"
"github.com/projectdiscovery/subfinder/pkg/subscraping/sources/waybackarchive"
"github.com/projectdiscovery/subfinder/pkg/subscraping/sources/zoomeye"
)
// DefaultSources contains the list of fast sources used by default.
var DefaultSources = []string{
"alienvault",
"binaryedge",
"bufferover",
"certspotter",
"certspotterold",
"censys",
"chaos",
"crtsh",
"dnsdumpster",
"hackertarget",
"intelx",
"ipv4info",
"passivetotal",
"securitytrails",
"shodan",
"spyse",
"sublist3r",
"threatcrowd",
"threatminer",
"virustotal",
}
// DefaultRecursiveSources contains list of default recursive sources
var DefaultRecursiveSources = []string{
"alienvault",
"bufferover",
"certspotter",
"certspotterold",
"crtsh",
"dnsdumpster",
"hackertarget",
"ipv4info",
"passivetotal",
"securitytrails",
"sublist3r",
"virustotal",
}
// DefaultAllSources contains list of all sources
var DefaultAllSources = []string{
"alienvault",
"archiveis",
"binaryedge",
"bufferover",
"censys",
"certspotter",
"certspotterold",
"chaos",
"commoncrawl",
"crtsh",
"dnsdumpster",
"dnsdb",
"entrust",
"github",
"hackertarget",
"ipv4info",
"intelx",
"passivetotal",
"rapiddns",
"recon",
"securitytrails",
"shodan",
"sitedossier",
"spyse",
"sublist3r",
"threatcrowd",
"threatminer",
"virustotal",
"waybackarchive",
"zoomeye",
}
// Agent is a struct for running passive subdomain enumeration
// against a given host. It wraps subscraping package and provides
// a layer to build upon.
type Agent struct {
sources map[string]subscraping.Source
}
// New creates a new agent for passive subdomain discovery
func New(sources, exclusions []string) *Agent {
// Create the agent, insert the sources and remove the excluded sources
agent := &Agent{sources: make(map[string]subscraping.Source)}
agent.addSources(sources)
agent.removeSources(exclusions)
return agent
}
// addSources adds the given list of sources to the source array
func (a *Agent) addSources(sources []string) {
for _, source := range sources {
switch source {
case "alienvault":
a.sources[source] = &alienvault.Source{}
case "archiveis":
a.sources[source] = &archiveis.Source{}
case "binaryedge":
a.sources[source] = &binaryedge.Source{}
case "bufferover":
a.sources[source] = &bufferover.Source{}
case "censys":
a.sources[source] = &censys.Source{}
case "certspotter":
a.sources[source] = &certspotter.Source{}
case "certspotterold":
a.sources[source] = &certspotterold.Source{}
case "chaos":
a.sources[source] = &chaos.Source{}
case "commoncrawl":
a.sources[source] = &commoncrawl.Source{}
case "crtsh":
a.sources[source] = &crtsh.Source{}
case "dnsdumpster":
a.sources[source] = &dnsdumpster.Source{}
case "dnsdb":
a.sources[source] = &dnsdb.Source{}
case "entrust":
a.sources[source] = &entrust.Source{}
case "github":
a.sources[source] = &github.Source{}
case "hackertarget":
a.sources[source] = &hackertarget.Source{}
case "ipv4info":
a.sources[source] = &ipv4info.Source{}
case "intelx":
a.sources[source] = &intelx.Source{}
case "passivetotal":
a.sources[source] = &passivetotal.Source{}
case "rapiddns":
a.sources[source] = &rapiddns.Source{}
case "recon":
a.sources[source] = &recon.Source{}
case "securitytrails":
a.sources[source] = &securitytrails.Source{}
case "shodan":
a.sources[source] = &shodan.Source{}
case "sitedossier":
a.sources[source] = &sitedossier.Source{}
case "spyse":
a.sources[source] = &spyse.Source{}
case "sublist3r":
a.sources[source] = &sublist3r.Source{}
case "threatcrowd":
a.sources[source] = &threatcrowd.Source{}
case "threatminer":
a.sources[source] = &threatminer.Source{}
case "virustotal":
a.sources[source] = &virustotal.Source{}
case "waybackarchive":
a.sources[source] = &waybackarchive.Source{}
case "zoomeye":
a.sources[source] = &zoomeye.Source{}
}
}
}
// removeSources deletes the given sources from the source map
func (a *Agent) removeSources(sources []string) {
for _, source := range sources {
delete(a.sources, source)
}
}