Added Exclusive Sources to subfinder
parent
4f475aeb5d
commit
88a350981f
|
@ -155,6 +155,57 @@ func (s *Source) enable(dataSources []string) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s *Source) disable(dataSources []string) {
|
||||||
|
for _, source := range dataSources {
|
||||||
|
switch source {
|
||||||
|
case "ask":
|
||||||
|
s.Ask = false
|
||||||
|
case "baidu":
|
||||||
|
s.Baidu = false
|
||||||
|
case "bing":
|
||||||
|
s.Bing = false
|
||||||
|
case "censys":
|
||||||
|
s.Censys = false
|
||||||
|
case "certdb":
|
||||||
|
s.Certdb = false
|
||||||
|
case "certspotter":
|
||||||
|
s.Certspotter = false
|
||||||
|
case "crtsh":
|
||||||
|
s.Crtsh = false
|
||||||
|
case "dnsdb":
|
||||||
|
s.Dnsdb = false
|
||||||
|
case "dnsdumpster":
|
||||||
|
s.Dnsdumpster = false
|
||||||
|
case "findsubdomains":
|
||||||
|
s.Findsubdomains = false
|
||||||
|
case "hackertarget":
|
||||||
|
s.Hackertarget = false
|
||||||
|
case "netcraft":
|
||||||
|
s.Netcraft = false
|
||||||
|
case "passivetotal":
|
||||||
|
s.Passivetotal = false
|
||||||
|
case "ptrarchive":
|
||||||
|
s.Ptrarchive = false
|
||||||
|
case "riddler":
|
||||||
|
s.Riddler = false
|
||||||
|
case "securitytrails":
|
||||||
|
s.Securitytrails = false
|
||||||
|
case "threatcrowd":
|
||||||
|
s.Threatcrowd = false
|
||||||
|
case "threatminer":
|
||||||
|
s.Threatminer = false
|
||||||
|
case "virustotal":
|
||||||
|
s.Virustotal = false
|
||||||
|
case "waybackarchive":
|
||||||
|
s.Waybackarchive = false
|
||||||
|
case "certificatetransparency":
|
||||||
|
s.CertificateTransparency = false
|
||||||
|
case "ipv4info":
|
||||||
|
s.Ipv4Info = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func (s *Source) printSummary() {
|
func (s *Source) printSummary() {
|
||||||
if s.Ask {
|
if s.Ask {
|
||||||
fmt.Printf("\nRunning Source: %sAsk%s", helper.Info, helper.Reset)
|
fmt.Printf("\nRunning Source: %sAsk%s", helper.Info, helper.Reset)
|
||||||
|
@ -442,7 +493,6 @@ func Enumerate(state *helper.State) []string {
|
||||||
|
|
||||||
fmt.Printf("\n")
|
fmt.Printf("\n")
|
||||||
if state.Sources == "all" {
|
if state.Sources == "all" {
|
||||||
// Search all data sources
|
|
||||||
sourceConfig.enableAll()
|
sourceConfig.enableAll()
|
||||||
} else {
|
} else {
|
||||||
// Check data sources and create a source configuration structure
|
// Check data sources and create a source configuration structure
|
||||||
|
@ -450,6 +500,11 @@ func Enumerate(state *helper.State) []string {
|
||||||
sourceConfig.enable(dataSources)
|
sourceConfig.enable(dataSources)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if state.ExcludeSource != "" {
|
||||||
|
dataSources := strings.Split(state.ExcludeSource, ",")
|
||||||
|
sourceConfig.disable(dataSources)
|
||||||
|
}
|
||||||
|
|
||||||
if !state.Silent {
|
if !state.Silent {
|
||||||
sourceConfig.printSummary()
|
sourceConfig.printSummary()
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,31 +15,32 @@ import (
|
||||||
|
|
||||||
// Holds the State read in from the CLI
|
// Holds the State read in from the CLI
|
||||||
type State struct {
|
type State struct {
|
||||||
Color bool // Whether to use color or not
|
Color bool // Whether to use color or not
|
||||||
Threads int // Number of threads to use
|
Threads int // Number of threads to use
|
||||||
Timeout int // Timeout for requests to different passive sources
|
Timeout int // Timeout for requests to different passive sources
|
||||||
Verbose bool // Show verbose information
|
Verbose bool // Show verbose information
|
||||||
Domain string // Domain name to find subdomains for
|
Domain string // Domain name to find subdomains for
|
||||||
Recursive bool // Whether perform recursive subdomain discovery or not
|
Recursive bool // Whether perform recursive subdomain discovery or not
|
||||||
Output string // Name of output file
|
Output string // Name of output file
|
||||||
Alive bool // Get only alive subdomains (x - no wildcards :-))
|
Alive bool // Get only alive subdomains (x - no wildcards :-))
|
||||||
IsJSON bool // Provide JSON output file
|
IsJSON bool // Provide JSON output file
|
||||||
Wordlist string // Wordlist file for subdomains bruteforcing
|
Wordlist string // Wordlist file for subdomains bruteforcing
|
||||||
Bruteforce bool // Flag to decide whether to bruteforce or not
|
Bruteforce bool // Flag to decide whether to bruteforce or not
|
||||||
WildcardIP []string // Wildcard IP Structure
|
WildcardIP []string // Wildcard IP Structure
|
||||||
IsWildcard bool // Does the host has wildcard subdomains, if yes parse them carefully
|
IsWildcard bool // Does the host has wildcard subdomains, if yes parse them carefully
|
||||||
Sources string // Comma separated list of sources to use
|
Sources string // Comma separated list of sources to use
|
||||||
Silent bool // Show only silent output or not
|
Silent bool // Show only silent output or not
|
||||||
FinalResults []string // Contains final bruteforcing results
|
FinalResults []string // Contains final bruteforcing results
|
||||||
SetConfig string // Used for changing the current configuration file details
|
SetConfig string // Used for changing the current configuration file details
|
||||||
SetSetting string // Used for passing custom configuration to the application
|
SetSetting string // Used for passing custom configuration to the application
|
||||||
DomainList string // List of domains to find subdomains for
|
DomainList string // List of domains to find subdomains for
|
||||||
OutputDir string // Directory to output results to if domain list is used
|
OutputDir string // Directory to output results to if domain list is used
|
||||||
LoadResolver []string // Slice of resolvers to use
|
LoadResolver []string // Slice of resolvers to use
|
||||||
ComResolver string // Comma-separated list of resolvers to use
|
ComResolver string // Comma-separated list of resolvers to use
|
||||||
ListResolver string // File to load resolvers from
|
ListResolver string // File to load resolvers from
|
||||||
AquatoneJSON bool // Use aquatone style json format
|
AquatoneJSON bool // Use aquatone style json format
|
||||||
OutputHandle *os.File // Handle to the output file used for output buffering
|
ExcludeSource string // Sources to exclude
|
||||||
|
OutputHandle *os.File // Handle to the output file used for output buffering
|
||||||
|
|
||||||
CurrentSettings Setting // Current application settings
|
CurrentSettings Setting // Current application settings
|
||||||
ConfigState Config // Current configuration file state
|
ConfigState Config // Current configuration file state
|
||||||
|
@ -61,10 +62,11 @@ type Config struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
type Setting struct {
|
type Setting struct {
|
||||||
CensysPages string // Censys pages to check. For All, use "all"
|
CensysPages string // Censys pages to check. For All, use "all"
|
||||||
AskPages string // Ask search pages to check
|
AskPages string // Ask search pages to check
|
||||||
BaiduPages string // Ask search pages to check
|
BaiduPages string // Ask search pages to check
|
||||||
BingPages string // Ask search pages to check
|
BingPages string // Ask search pages to check
|
||||||
|
DogpilePages string
|
||||||
}
|
}
|
||||||
|
|
||||||
func InitializeSettings() (setting *Setting) {
|
func InitializeSettings() (setting *Setting) {
|
||||||
|
@ -75,6 +77,7 @@ func InitializeSettings() (setting *Setting) {
|
||||||
settings.AskPages = "15"
|
settings.AskPages = "15"
|
||||||
settings.BaiduPages = "5"
|
settings.BaiduPages = "5"
|
||||||
settings.BingPages = "50"
|
settings.BingPages = "50"
|
||||||
|
settings.DogpilePages = "16"
|
||||||
return &settings
|
return &settings
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -85,5 +88,5 @@ func InitState() (state State, err error) {
|
||||||
|
|
||||||
setting := InitializeSettings()
|
setting := InitializeSettings()
|
||||||
|
|
||||||
return State{true, 10, 180, false, "", false, "", false, false, "", false, []string{}, true, "", false, []string{}, "", "", "", "", []string{}, "", "", false, nil, *setting, *config}, nil
|
return State{true, 10, 180, false, "", false, "", false, false, "", false, []string{}, true, "", false, []string{}, "", "", "", "", []string{}, "", "", false, "", nil, *setting, *config}, nil
|
||||||
}
|
}
|
||||||
|
|
1
main.go
1
main.go
|
@ -60,6 +60,7 @@ func ParseCmdLine() (state *helper.State, err error) {
|
||||||
flag.StringVar(&s.OutputDir, "oD", "", "Directory to output results to ")
|
flag.StringVar(&s.OutputDir, "oD", "", "Directory to output results to ")
|
||||||
flag.StringVar(&s.ComResolver, "r", "", "Comma-separated list of resolvers to use")
|
flag.StringVar(&s.ComResolver, "r", "", "Comma-separated list of resolvers to use")
|
||||||
flag.StringVar(&s.ListResolver, "rL", "", "Text file containing list of resolvers to use")
|
flag.StringVar(&s.ListResolver, "rL", "", "Text file containing list of resolvers to use")
|
||||||
|
flag.StringVar(&s.ExcludeSource, "exclude-sources", "", "List of sources to exclude from enumeration")
|
||||||
flag.BoolVar(&s.AquatoneJSON, "oT", false, "Use aquatone style json output format")
|
flag.BoolVar(&s.AquatoneJSON, "oT", false, "Use aquatone style json output format")
|
||||||
flag.Parse()
|
flag.Parse()
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue