Merge pull request #319 from vzamanillo/riddler.io

Implemented riddler.io source
master
bauthard 2020-09-18 23:39:04 +05:30 committed by GitHub
commit 61e8dd258b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 53 additions and 0 deletions

View File

@ -23,6 +23,7 @@ import (
"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/riddler"
"github.com/projectdiscovery/subfinder/pkg/subscraping/sources/robtex"
"github.com/projectdiscovery/subfinder/pkg/subscraping/sources/securitytrails"
"github.com/projectdiscovery/subfinder/pkg/subscraping/sources/shodan"
@ -78,6 +79,7 @@ var DefaultRecursiveSources = []string{
"hackertarget",
"ipv4info",
"passivetotal",
"riddler",
"securitytrails",
"sublist3r",
"virustotal",
@ -105,6 +107,7 @@ var DefaultAllSources = []string{
"intelx",
"passivetotal",
"rapiddns",
"riddler",
"recon",
"robtex",
"securitytrails",
@ -185,6 +188,8 @@ func (a *Agent) addSources(sources []string) {
a.sources[source] = &rapiddns.Source{}
case "recon":
a.sources[source] = &recon.Source{}
case "riddler":
a.sources[source] = &riddler.Source{}
case "robtex":
a.sources[source] = &robtex.Source{}
case "securitytrails":

View File

@ -0,0 +1,48 @@
package riddler
import (
"bufio"
"context"
"fmt"
"github.com/projectdiscovery/subfinder/pkg/subscraping"
)
// Source is the passive scraping agent
type Source struct{}
// Run function returns all subdomains found with the service
func (s *Source) Run(ctx context.Context, domain string, session *subscraping.Session) <-chan subscraping.Result {
results := make(chan subscraping.Result)
go func() {
defer close(results)
resp, err := session.SimpleGet(ctx, fmt.Sprintf("https://riddler.io/search?q=pld:%s&view_type=data_table", domain))
if err != nil {
results <- subscraping.Result{Source: s.Name(), Type: subscraping.Error, Error: err}
session.DiscardHTTPResponse(resp)
return
}
scanner := bufio.NewScanner(resp.Body)
for scanner.Scan() {
line := scanner.Text()
if line == "" {
continue
}
subdomain := session.Extractor.FindString(line)
if subdomain != "" {
results <- subscraping.Result{Source: s.Name(), Type: subscraping.Subdomain, Value: subdomain}
}
}
resp.Body.Close()
}()
return results
}
// Name returns the name of the source
func (s *Source) Name() string {
return "riddler"
}