Git Product home page Git Product logo

subfinder's Introduction

subfinder

Fast passive subdomain enumeration tool.

FeaturesInstallUsageAPI SetupLibraryJoin Discord


subfinder is a subdomain discovery tool that returns valid subdomains for websites, using passive online sources. It has a simple, modular architecture and is optimized for speed. subfinder is built for doing one thing only - passive subdomain enumeration, and it does that very well.

We have made it to comply with all the used passive source licenses and usage restrictions. The passive model guarantees speed and stealthiness that can be leveraged by both penetration testers and bug bounty hunters alike.

Features

subfinder

  • Fast and powerful resolution and wildcard elimination modules
  • Curated passive sources to maximize results
  • Multiple output formats supported (JSON, file, stdout)
  • Optimized for speed and lightweight on resources
  • STDIN/OUT support enables easy integration into workflows

Usage

subfinder -h

This will display help for the tool. Here are all the switches it supports.

Usage:
  ./subfinder [flags]

Flags:
INPUT:
  -d, -domain string[]  domains to find subdomains for
  -dL, -list string     file containing list of domains for subdomain discovery

SOURCE:
  -s, -sources string[]           specific sources to use for discovery (-s crtsh,github). Use -ls to display all available sources.
  -recursive                      use only sources that can handle subdomains recursively (e.g. subdomain.domain.tld vs domain.tld)
  -all                            use all sources for enumeration (slow)
  -es, -exclude-sources string[]  sources to exclude from enumeration (-es alienvault,zoomeyeapi)

FILTER:
  -m, -match string[]   subdomain or list of subdomain to match (file or comma separated)
  -f, -filter string[]   subdomain or list of subdomain to filter (file or comma separated)

RATE-LIMIT:
  -rl, -rate-limit int  maximum number of http requests to send per second
  -rls value            maximum number of http requests to send per second for providers in key=value format (-rls "hackertarget=10/s,shodan=15/s")
  -t int                number of concurrent goroutines for resolving (-active only) (default 10)

UPDATE:
  -up, -update                 update subfinder to latest version
  -duc, -disable-update-check  disable automatic subfinder update check

OUTPUT:
  -o, -output string       file to write output to
  -oJ, -json               write output in JSONL(ines) format
  -oD, -output-dir string  directory to write output (-dL only)
  -cs, -collect-sources    include all sources in the output (-json only)
  -oI, -ip                 include host IP in output (-active only)

CONFIGURATION:
  -config string                flag config file (default "$CONFIG/subfinder/config.yaml")
  -pc, -provider-config string  provider config file (default "$CONFIG/subfinder/provider-config.yaml")
  -r string[]                   comma separated list of resolvers to use
  -rL, -rlist string            file containing list of resolvers to use
  -nW, -active                  display active subdomains only
  -proxy string                 http proxy to use with subfinder
  -ei, -exclude-ip              exclude IPs from the list of domains

DEBUG:
  -silent             show only subdomains in output
  -version            show version of subfinder
  -v                  show verbose output
  -nc, -no-color      disable color in output
  -ls, -list-sources  list all available sources

OPTIMIZATION:
  -timeout int   seconds to wait before timing out (default 30)
  -max-time int  minutes to wait for enumeration results (default 10)

Installation

subfinder requires go1.21 to install successfully. Run the following command to install the latest version:

go install -v github.com/projectdiscovery/subfinder/v2/cmd/subfinder@latest

Learn about more ways to install subfinder here: https://docs.projectdiscovery.io/tools/subfinder/install.

Post Installation Instructions

subfinder can be used right after the installation, however many sources required API keys to work. Learn more here: https://docs.projectdiscovery.io/tools/subfinder/install#post-install-configuration.

Running Subfinder

Learn about how to run Subfinder here: https://docs.projectdiscovery.io/tools/subfinder/running.

Subfinder Go library

Subfinder can also be used as library and a minimal examples of using subfinder SDK is available here

Resources

License

subfinder is made with 🖤 by the projectdiscovery team. Community contributions have made the project what it is. See the THANKS.md file for more details.

Read the usage disclaimer at DISCLAIMER.md and contact us for any API removal.

subfinder's People

Contributors

akhil-reni avatar averagesecurityguy avatar chenrui333 avatar chushuai avatar codingo avatar dependabot[bot] avatar dogancanbakir avatar ehrishirajsharma avatar ehsandeep avatar forgedhallpass avatar himanshudas avatar ice3man543 avatar jsav0 avatar lc avatar luitelsamikshya avatar m09ic avatar maldevel avatar mzack9999 avatar olearycrew avatar picatz avatar quietsec avatar ramanareddy0m avatar scanpatch avatar sepehrdaddev avatar shubhamrasal avatar tarunkoyalwar avatar tzmcrypto avatar vzamanillo avatar wavvs avatar zerodivisi0n avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

subfinder's Issues

certdb.com offline

certdb.com seems to be not accessible[1] anymore and therefor produces the following error:

error: Get https://certdb.com/domain/<<domain>>: dial tcp 52.7.102.57:443: connect: connection refused
error: failed to get authentication token
error: unexpected EOF

[1]

root@box:~/TLS# ping certdb.com

--- NBParking-LB-1977168523.us-east-1.elb.amazonaws.com ping statistics ---
6 packets transmitted, 0 received, 100% packet loss, time 5114ms

cleanup output for non-configured sources that won't actually run

What's the problem (or question)?

The tool is telling me it's going to use resources it doesn't actually end up using or isn't configured to use. This could be confusing for people using the tool.

Do you have an idea for a solution?

When the tool has no configuration for a given resource, don't state that resource will be used, even if it isn't ever actually used.

Like, if I don't have Shodan setup, don't have this:

Running Source: ...
Running Source: Shodan
Running Source: ...

How can we reproduce the issue?

  1. subfinder -d google.com ( a pretty default scan )
  2. See there's lots of stuff that's going to run that isn't ever going to actually run.
  3. Be confused if it is ever used.

What are the running context details?

  • Installation method (e.g. pip, apt-get, git clone or zip/tar.gz): go get
  • Client OS (e.g. Microsoft Windows 10): Debian GNU/Linux 9.4 (stretch)
  • Program version (see banner): v1.1
  • Relevant console output (if any): Running Source: Shodan (example)
  • Exception traceback (if any): n/a

Error: character '<' looking for beginning of value during scans (scan still completes)

What's the problem (or question)?

included in the output is the following string:

error: invalid character '<' looking for beginning of value

How can we reproduce the issue?

  1. install golang 1.10.2 in a debian system
  2. go get github.com/Ice3man543/subfinder
  3. $GOPATH/bin/subfinder -d reddit.com

before the domains are output, the error message presents itself.

Subdomain Comparison to last runs

Identifying new and old subdomains would be valuable and having a flag to pass in a previous scan of a domain to compare results against would prove valuable.

Essentially - I scan subdomain x into output x.txt on day y

On day z I rescan x, but I pass the flag --dif x.txt and it compares the results of scan z against my previous scan and lets me know what has changed.

This not only may help identify new techniques for takeovers but will also help identify potential development or pre-production hosts.

No error handling for the blank argument

What's the problem (or question)?

Missing error management.

Do you have an idea for a solution?

Display generic error for missing required argument or display help menu for blank input.

How can we reproduce the issue?

  1. ./subfinder (without any argument)

What are the running context details?

  • Installation method : go get
  • Client OS (e.g. Microsoft Windows 10): Mac OS
  • Relevant console output (if any):
MacBook-Pro:bin tech$ ./subfinder 

   ____     __   _____         __       
  / __/_ __/ /  / __(_)__  ___/ /__ ____
 _\ \/ // / _ \/ _// / _ \/ _  / -_) __/
/___/\_,_/_.__/_/ /_/_//_/\_,_/\__/_/   
                                      

SubFinder v0.1.0 	  Made with ❤ by @Ice3man
==================================================


[-] Searching For Subdomains in Censys
[-] Searching For Subdomains in Crt.sh
[-] Searching For Subdomains in CertDB
[-] Searching For Subdomains in Certspotter
[-] Searching For Subdomains in Threatcrowd
[-] Searching For Subdomains in Findsubdomains
[-] Searching For Subdomains in DNSDumpster
[-] Searching For Subdomains in PassiveTotal
[-] Searching For Subdomains in PTRArchive
[-] Searching For Subdomains in Hackertarget
[-] Searching For Subdomains in Virustotal
[-] Searching For Subdomains in Securitytrails
[-] Searching For Subdomains in WaybackArchive
[-] Searching For Subdomains in ThreatMiner
[-] Searching For Subdomains in Riddler
[-] Searching For Subdomains in Netcraft
[-] Searching For Subdomains in Dnsdb
[-] Searching For Subdomains in Baidu
[-] Searching For Subdomains in Bing
[-] Searching For Subdomains in Ask

[+] Finding subdomains for : 
error: json: cannot unmarshal object into Go value of type []certspotter.certspotter_object

Docker build fail

What's the problem (or question)?

Dockerbuild fails from master branch

Do you have an idea for a solution?

missing go get directive in dockerfile

How can we reproduce the issue?

$ docker build .
Sending build context to Docker daemon  495.1kB
Step 1/7 : FROM iron/go:dev
dev: Pulling from iron/go
2595db787577: Pull complete 
25f4744d75f7: Pull complete 
e5c42b04f34b: Pull complete 
2c16999b2da4: Pull complete 
f07ddaf6c162: Pull complete 
bfac150e9ba1: Pull complete 
7c7bda04128a: Pull complete 
Digest: sha256:b80fdc916aec2ab0237bb434b0d9b022f8aabd8e161a7015aea496a90039ae1e
Status: Downloaded newer image for iron/go:dev
 ---> 04f0f1a5b78c
Step 2/7 : WORKDIR /app
Removing intermediate container 4063536173d3
 ---> 0a7b3c8ebc00
Step 3/7 : ENV SRC_DIR=/go/src/github.com/Ice3man543/subfinder/
 ---> Running in 6cb929a1dbb7
Removing intermediate container 6cb929a1dbb7
 ---> cab5f07057e8
Step 4/7 : ADD . $SRC_DIR
 ---> 51619fc9b4f3
Step 5/7 : RUN cd $SRC_DIR; go build -o main; cp main /app/
 ---> Running in d3601b6a6f7a
libsubfinder/helper/dns.go:15:5: cannot find package "github.com/bogdanovich/dns_resolver" in any of:
	/usr/local/go/src/github.com/bogdanovich/dns_resolver (from $GOROOT)
	/go/src/github.com/bogdanovich/dns_resolver (from $GOPATH)
cp: can't stat 'main': No such file or directory
The command '/bin/sh -c cd $SRC_DIR; go build -o main; cp main /app/' returned a non-zero code: 1

Exceptionally large scan - out of memory

On a large scan the following was encountered when trying to write out to a file at the duration of the scan. This should probably be worked on with #40 as the solution to this likely aligns up nicely,

fatal error: runtime: out of memory

runtime stack:
runtime.throw(0x6db5a8, 0x16)
	/usr/lib/go-1.10/src/runtime/panic.go:616 +0x81
runtime.sysMap(0xc75d9e0000, 0x197ad0000, 0x456300, 0x8738f8)
	/usr/lib/go-1.10/src/runtime/mem_linux.go:216 +0x20a
runtime.(*mheap).sysAlloc(0x85a7e0, 0x197ad0000, 0x7f51add9e5a8)
	/usr/lib/go-1.10/src/runtime/malloc.go:470 +0xd4
runtime.(*mheap).grow(0x85a7e0, 0xcbd67, 0x0)
	/usr/lib/go-1.10/src/runtime/mheap.go:907 +0x60
runtime.(*mheap).allocSpanLocked(0x85a7e0, 0xcbd67, 0x873908, 0x7f51acef0d88)
	/usr/lib/go-1.10/src/runtime/mheap.go:820 +0x301
runtime.(*mheap).alloc_m(0x85a7e0, 0xcbd67, 0x410100, 0xc41fb8c2ff)
	/usr/lib/go-1.10/src/runtime/mheap.go:686 +0x118
runtime.(*mheap).alloc.func1()
	/usr/lib/go-1.10/src/runtime/mheap.go:753 +0x4d
runtime.(*mheap).alloc(0x85a7e0, 0xcbd67, 0x7f51ac010100, 0x41566c)
	/usr/lib/go-1.10/src/runtime/mheap.go:752 +0x8a
runtime.largeAlloc(0x197ace000, 0x450001, 0x7f51ade8ad90)
	/usr/lib/go-1.10/src/runtime/malloc.go:826 +0x94
runtime.mallocgc.func1()
	/usr/lib/go-1.10/src/runtime/malloc.go:721 +0x46
runtime.systemstack(0xc400000000)
	/usr/lib/go-1.10/src/runtime/asm_amd64.s:409 +0x79
runtime.mstart()
	/usr/lib/go-1.10/src/runtime/proc.go:1175

goroutine 1 [running]:
runtime.systemstack_switch()
	/usr/lib/go-1.10/src/runtime/asm_amd64.s:363 fp=0xc423969b18 sp=0xc423969b10 pc=0x453820
runtime.mallocgc(0x197ace000, 0x670f00, 0xc4202c1c01, 0x350)
	/usr/lib/go-1.10/src/runtime/malloc.go:720 +0x8a2 fp=0xc423969bb8 sp=0xc423969b18 pc=0x411c42
runtime.growslice(0x670f00, 0xc42df20000, 0x14623e00, 0x14623e00, 0x14623e35, 0x35, 0x40, 0x35)
	/usr/lib/go-1.10/src/runtime/slice.go:179 +0x14a fp=0xc423969c20 sp=0xc423969bb8 pc=0x44027a
github.com/Ice3man543/subfinder/libsubfinder/engines/passive.PassiveDiscovery(0xc42012a000, 0x34, 0x0, 0x0)
	/root/go/src/github.com/Ice3man543/subfinder/libsubfinder/engines/passive/passive.go:379 +0x797 fp=0xc423969e28 sp=0xc423969c20 pc=0x63f8d7
main.main()
	/opt/Web_Enumeration/subfinder/main.go:144 +0xf1d fp=0xc423969f88 sp=0xc423969e28 pc=0x642b0d
runtime.main()
	/usr/lib/go-1.10/src/runtime/proc.go:198 +0x212 fp=0xc423969fe0 sp=0xc423969f88 pc=0x42c362
runtime.goexit()
	/usr/lib/go-1.10/src/runtime/asm_amd64.s:2361 +0x1 fp=0xc423969fe8 sp=0xc423969fe0 pc=0x456371

goroutine 21617 [IO wait]:
internal/poll.runtime_pollWait(0x7f51ac16b090, 0x72, 0xc423c30858)
	/usr/lib/go-1.10/src/runtime/netpoll.go:173 +0x57
internal/poll.(*pollDesc).wait(0xc42793b218, 0x72, 0xffffffffffffff00, 0x70c480, 0x81e478)
	/usr/lib/go-1.10/src/internal/poll/fd_poll_runtime.go:85 +0x9b
internal/poll.(*pollDesc).waitRead(0xc42793b218, 0xc429598000, 0x2000, 0x2000)
	/usr/lib/go-1.10/src/internal/poll/fd_poll_runtime.go:90 +0x3d
internal/poll.(*FD).Read(0xc42793b200, 0xc429598000, 0x2000, 0x2000, 0x0, 0x0, 0x0)
	/usr/lib/go-1.10/src/internal/poll/fd_unix.go:157 +0x17d
net.(*netFD).Read(0xc42793b200, 0xc429598000, 0x2000, 0x2000, 0x4336e9, 0xc420071680, 0x200000003)
	/usr/lib/go-1.10/src/net/fd_unix.go:202 +0x4f
net.(*conn).Read(0xc42d320288, 0xc429598000, 0x2000, 0x2000, 0x0, 0x0, 0x0)
	/usr/lib/go-1.10/src/net/net.go:176 +0x6a
crypto/tls.(*block).readFromUntil(0xc42db70f00, 0x7f51ade58178, 0xc42d320288, 0x5, 0xc42d320288, 0xc423c30a10)
	/usr/lib/go-1.10/src/crypto/tls/conn.go:493 +0x96
crypto/tls.(*Conn).readRecord(0xc42315a700, 0x6eb417, 0xc42315a820, 0xc420071680)
	/usr/lib/go-1.10/src/crypto/tls/conn.go:595 +0xe0
crypto/tls.(*Conn).Read(0xc42315a700, 0xc42140b000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
	/usr/lib/go-1.10/src/crypto/tls/conn.go:1156 +0x100
bufio.(*Reader).Read(0xc429e121e0, 0xc42012c038, 0x9, 0x9, 0xc42315aa30, 0x58fb00, 0xc42315aa30)
	/usr/lib/go-1.10/src/bufio/bufio.go:216 +0x238
io.ReadAtLeast(0x70b660, 0xc429e121e0, 0xc42012c038, 0x9, 0x9, 0x9, 0x5e1ba1, 0xc42315a700, 0xc42140a000)
	/usr/lib/go-1.10/src/io/io.go:309 +0x86
io.ReadFull(0x70b660, 0xc429e121e0, 0xc42012c038, 0x9, 0x9, 0x60e134, 0x7f51ade0fd68, 0xc42315a700)
	/usr/lib/go-1.10/src/io/io.go:327 +0x58
net/http.http2readFrameHeader(0xc42012c038, 0x9, 0x9, 0x70b660, 0xc429e121e0, 0x0, 0xc400000000, 0x429f04, 0x6eb470)
	/usr/lib/go-1.10/src/net/http/h2_bundle.go:1517 +0x7b
net/http.(*http2Framer).ReadFrame(0xc42012c000, 0xc427b91560, 0x0, 0x0, 0x0)
	/usr/lib/go-1.10/src/net/http/h2_bundle.go:1775 +0xa4
net/http.(*http2clientConnReadLoop).run(0xc423c30fb8, 0x6eaef8, 0xc4200307b8)
	/usr/lib/go-1.10/src/net/http/h2_bundle.go:8028 +0x90
net/http.(*http2ClientConn).readLoop(0xc420c88000)
	/usr/lib/go-1.10/src/net/http/h2_bundle.go:7956 +0x68
created by net/http.(*http2Transport).newClientConn
	/usr/lib/go-1.10/src/net/http/h2_bundle.go:7143 +0x65c

goroutine 21633 [IO wait]:
internal/poll.runtime_pollWait(0x7f51ac16b4a0, 0x72, 0xc423bdf858)
	/usr/lib/go-1.10/src/runtime/netpoll.go:173 +0x57
internal/poll.(*pollDesc).wait(0xc421336398, 0x72, 0xffffffffffffff00, 0x70c480, 0x81e478)
	/usr/lib/go-1.10/src/internal/poll/fd_poll_runtime.go:85 +0x9b
internal/poll.(*pollDesc).waitRead(0xc421336398, 0xc420164000, 0x4000, 0x4000)
	/usr/lib/go-1.10/src/internal/poll/fd_poll_runtime.go:90 +0x3d
internal/poll.(*FD).Read(0xc421336380, 0xc420164000, 0x4000, 0x4000, 0x0, 0x0, 0x0)
	/usr/lib/go-1.10/src/internal/poll/fd_unix.go:157 +0x17d
net.(*netFD).Read(0xc421336380, 0xc420164000, 0x4000, 0x4000, 0x10, 0x1, 0x100000000000000)
	/usr/lib/go-1.10/src/net/fd_unix.go:202 +0x4f
net.(*conn).Read(0xc42d320320, 0xc420164000, 0x4000, 0x4000, 0x0, 0x0, 0x0)
	/usr/lib/go-1.10/src/net/net.go:176 +0x6a
crypto/tls.(*block).readFromUntil(0xc423fd7080, 0x7f51ade58178, 0xc42d320320, 0x5, 0xc42d320320, 0x2c0)
	/usr/lib/go-1.10/src/crypto/tls/conn.go:493 +0x96
crypto/tls.(*Conn).readRecord(0xc420097880, 0x6eb417, 0xc4200979a0, 0xc420457380)
	/usr/lib/go-1.10/src/crypto/tls/conn.go:595 +0xe0
crypto/tls.(*Conn).Read(0xc420097880, 0xc423159000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
	/usr/lib/go-1.10/src/crypto/tls/conn.go:1156 +0x100
bufio.(*Reader).Read(0xc4201d8cc0, 0xc4203da658, 0x9, 0x9, 0xc423bdfc50, 0x45c763, 0xc423bdfc60)
	/usr/lib/go-1.10/src/bufio/bufio.go:216 +0x238
io.ReadAtLeast(0x70b660, 0xc4201d8cc0, 0xc4203da658, 0x9, 0x9, 0x9, 0xc42054ac01, 0xc423bdfd00, 0x5ebe2b)
	/usr/lib/go-1.10/src/io/io.go:309 +0x86
io.ReadFull(0x70b660, 0xc4201d8cc0, 0xc4203da658, 0x9, 0x9, 0xc420086030, 0xc423bdfd30, 0x5ebd3d)
	/usr/lib/go-1.10/src/io/io.go:327 +0x58
net/http.http2readFrameHeader(0xc4203da658, 0x9, 0x9, 0x70b660, 0xc4201d8cc0, 0x0, 0x0, 0x0, 0x0)
	/usr/lib/go-1.10/src/net/http/h2_bundle.go:1517 +0x7b
net/http.(*http2Framer).ReadFrame(0xc4203da620, 0xc42089e240, 0x0, 0x0, 0x0)
	/usr/lib/go-1.10/src/net/http/h2_bundle.go:1775 +0xa4
net/http.(*http2clientConnReadLoop).run(0xc423bdffb8, 0x6eaef8, 0xc4200317b8)
	/usr/lib/go-1.10/src/net/http/h2_bundle.go:8028 +0x90
net/http.(*http2ClientConn).readLoop(0xc4291ca540)
	/usr/lib/go-1.10/src/net/http/h2_bundle.go:7956 +0x68
created by net/http.(*http2Transport).newClientConn
	/usr/lib/go-1.10/src/net/http/h2_bundle.go:7143 +0x65c

goroutine 21494 [IO wait]:
internal/poll.runtime_pollWait(0x7f51addca820, 0x72, 0xc428f832a8)
	/usr/lib/go-1.10/src/runtime/netpoll.go:173 +0x57
internal/poll.(*pollDesc).wait(0xc4295b9d18, 0x72, 0xffffffffffffff00, 0x70c480, 0x81e478)
	/usr/lib/go-1.10/src/internal/poll/fd_poll_runtime.go:85 +0x9b
internal/poll.(*pollDesc).waitRead(0xc4295b9d18, 0xc4295a0900, 0x364b, 0x364b)
	/usr/lib/go-1.10/src/internal/poll/fd_poll_runtime.go:90 +0x3d
internal/poll.(*FD).Read(0xc4295b9d00, 0xc4295a09b5, 0x364b, 0x364b, 0x0, 0x0, 0x0)
	/usr/lib/go-1.10/src/internal/poll/fd_unix.go:157 +0x17d
net.(*netFD).Read(0xc4295b9d00, 0xc4295a09b5, 0x364b, 0x364b, 0x52b, 0x0, 0x0)
	/usr/lib/go-1.10/src/net/fd_unix.go:202 +0x4f
net.(*conn).Read(0xc4213ba2a0, 0xc4295a09b5, 0x364b, 0x364b, 0x0, 0x0, 0x0)
	/usr/lib/go-1.10/src/net/net.go:176 +0x6a
crypto/tls.(*block).readFromUntil(0xc420175650, 0x7f51ade58178, 0xc4213ba2a0, 0x2025, 0xc4213ba2a0, 0x0)
	/usr/lib/go-1.10/src/crypto/tls/conn.go:493 +0x96
crypto/tls.(*Conn).readRecord(0xc4205c2e00, 0x6eb417, 0xc4205c2f20, 0x85)
	/usr/lib/go-1.10/src/crypto/tls/conn.go:640 +0x1fa
crypto/tls.(*Conn).Read(0xc4205c2e00, 0xc429026000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
	/usr/lib/go-1.10/src/crypto/tls/conn.go:1156 +0x100
net/http.(*persistConn).Read(0xc421188000, 0xc429026000, 0x1000, 0x1000, 0x0, 0xc42734c000, 0x8000)
	/usr/lib/go-1.10/src/net/http/transport.go:1453 +0x136
bufio.(*Reader).fill(0xc427600c60)
	/usr/lib/go-1.10/src/bufio/bufio.go:100 +0x11e
bufio.(*Reader).ReadSlice(0xc427600c60, 0x70b60a, 0xc42be34a80, 0x70c820, 0xc4295c4000, 0xc42be34a80, 0xa)
	/usr/lib/go-1.10/src/bufio/bufio.go:341 +0x2c
net/http/internal.readChunkLine(0xc427600c60, 0x1, 0x0, 0x0, 0x0, 0xc428f837c8)
	/usr/lib/go-1.10/src/net/http/internal/chunked.go:122 +0x34
net/http/internal.(*chunkedReader).beginChunk(0xc42019f1a0)
	/usr/lib/go-1.10/src/net/http/internal/chunked.go:48 +0x32
net/http/internal.(*chunkedReader).Read(0xc42019f1a0, 0xc42959e000, 0x1000, 0x1000, 0xc428f83880, 0x429609, 0x8)
	/usr/lib/go-1.10/src/net/http/internal/chunked.go:93 +0x113
net/http.(*body).readLocked(0xc4201e9e40, 0xc42959e000, 0x1000, 0x1000, 0xc421581640, 0xc428f83a18, 0x5b4d4b)
	/usr/lib/go-1.10/src/net/http/transfer.go:778 +0x61
net/http.(*body).Read(0xc4201e9e40, 0xc42959e000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
	/usr/lib/go-1.10/src/net/http/transfer.go:770 +0xdd
net/http.(*bodyEOFSignal).Read(0xc4201e9e80, 0xc42959e000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
	/usr/lib/go-1.10/src/net/http/transport.go:2187 +0xdc
bufio.(*Reader).fill(0xc42be34a80)
	/usr/lib/go-1.10/src/bufio/bufio.go:100 +0x11e
bufio.(*Reader).ReadByte(0xc42be34a80, 0x3b, 0x0, 0x0)
	/usr/lib/go-1.10/src/bufio/bufio.go:242 +0x39
compress/flate.(*decompressor).moreBits(0xc4295c4000, 0x0, 0x0)
	/usr/lib/go-1.10/src/compress/flate/inflate.go:694 +0x37
compress/flate.(*decompressor).huffSym(0xc4295c4000, 0xc4295c4028, 0x13, 0x0, 0x0)
	/usr/lib/go-1.10/src/compress/flate/inflate.go:716 +0x4f
compress/flate.(*decompressor).huffmanBlock(0xc4295c4000)
	/usr/lib/go-1.10/src/compress/flate/inflate.go:494 +0xf3
compress/flate.(*decompressor).nextBlock(0xc4295c4000)
	/usr/lib/go-1.10/src/compress/flate/inflate.go:327 +0x1a1
compress/flate.(*decompressor).Read(0xc4295c4000, 0xc4295c0600, 0x200, 0x200, 0x0, 0x0, 0x0)
	/usr/lib/go-1.10/src/compress/flate/inflate.go:347 +0x72
compress/gzip.(*Reader).Read(0xc42525b600, 0xc4295c0600, 0x200, 0x200, 0x0, 0xc428f83c70, 0x429f04)
	/usr/lib/go-1.10/src/compress/gzip/gunzip.go:251 +0x96
net/http.(*gzipReader).Read(0xc4203ee4c0, 0xc4295c0600, 0x200, 0x200, 0x4685c1, 0x6710c0, 0x200)
	/usr/lib/go-1.10/src/net/http/transport.go:2250 +0xe7
net/http.(*cancelTimerBody).Read(0xc4203ee4e0, 0xc4295c0600, 0x200, 0x200, 0x200, 0x200, 0xc4295c0600)
	/usr/lib/go-1.10/src/net/http/client.go:820 +0x5c
bytes.(*Buffer).ReadFrom(0xc420391c00, 0x7f51ade0e3b8, 0xc4203ee4e0, 0xc428f83dc0, 0x613671, 0xc4201f4450)
	/usr/lib/go-1.10/src/bytes/buffer.go:205 +0xa0
io/ioutil.readAll(0x7f51ade0e3b8, 0xc4203ee4e0, 0x200, 0x0, 0x0, 0x0, 0x0, 0x0)
	/usr/lib/go-1.10/src/io/ioutil/ioutil.go:36 +0xb5
io/ioutil.ReadAll(0x7f51ade0e3b8, 0xc4203ee4e0, 0xc4203ee4e0, 0x7f51ade0e3b8, 0xc4203ee4e0, 0x0, 0x11)
	/usr/lib/go-1.10/src/io/ioutil/ioutil.go:45 +0x3e
github.com/Ice3man543/subfinder/libsubfinder/sources/bing.Query(0xc42012a000, 0xc420bf4060)
	/root/go/src/github.com/Ice3man543/subfinder/libsubfinder/sources/bing/bing.go:53 +0x6d5
created by github.com/Ice3man543/subfinder/libsubfinder/engines/passive.Discover
	/root/go/src/github.com/Ice3man543/subfinder/libsubfinder/engines/passive/passive.go:148 +0x728

goroutine 21772 [select]:
net/http.setRequestCancel.func3(0x0, 0xc4201f4540, 0xc422f2a0f0, 0xc423b81f8c, 0xc42be6b2c0)
	/usr/lib/go-1.10/src/net/http/client.go:323 +0xfa
created by net/http.setRequestCancel
	/usr/lib/go-1.10/src/net/http/client.go:322 +0x2ac

goroutine 21800 [select]:
net/http.(*persistConn).writeLoop(0xc421188000)
	/usr/lib/go-1.10/src/net/http/transport.go:1822 +0x14b
created by net/http.(*Transport).dialConn
	/usr/lib/go-1.10/src/net/http/transport.go:1238 +0x97f

goroutine 21799 [select]:
net/http.(*persistConn).readLoop(0xc421188000)
	/usr/lib/go-1.10/src/net/http/transport.go:1717 +0x743
created by net/http.(*Transport).dialConn
	/usr/lib/go-1.10/src/net/http/transport.go:1237 +0x95a

Docker input list stops

I am using docker to run subfinder. Individual domains are working, but inputting a list via docker is not working:

$ docker run -it subfinder -dL testdomains.txt -v

[NOTE] Edit /root/.config/subfinder/config.json with your options !
               __    _____           __
   _______  __/ /_  / __(_)___  ____/ /__  _____
  / ___/ / / / __ \/ /_/ / __ \/ __  / _ \/ ___/
 (__  ) /_/ / /_/ / __/ / / / / /_/ /  __/ /
/____/\__,_/_.___/_/ /_/_/ /_/\__,_/\___/_/
                             v0.2 - by @ice3man


Running Source: Ask
Running Source: Archive.is
Running Source: Baidu
Running Source: Bing
Running Source: Censys
Running Source: CertDB
Running Source: CertificateTransparency
Running Source: Certspotter
Running Source: Crt.sh
Running Source: Dnsdb
Running Source: DNSDumpster
Running Source: Dogpile
Running Source: Exalead
Running Source: Findsubdomains
Running Source: Hackertarget
Running Source: Ipv4Info
Running Source: Netcraft
Running Source: PassiveTotal
Running Source: PTRArchive
Running Source: Riddler
Running Source: Securitytrails
Running Source: SSLCertificates
Running Source: Shodan
Running Source: Sitedossier
Running Source: Threatcrowd
Running Source: ThreatMiner
Running Source: Virustotal
Running Source: WaybackArchive
Running Source: Yahoo


It just stops there. Any ideas?

reduce/remove riddler warnings when not configured

What's the problem (or question)?

While doing a scan of a domain, and not currently registered with riddler.io, I am seeing a lot of errors associated with it that I don't think should be happening.

If -recursive is turned on, the error will show up many more times.

While this will not happen in silent mode, it seem indicative to me that the tool is wasting time contacting the service when it isn't properly setup to do so ( by default without configuration ). I've come to this conclusion after seeing the error occurs after an HTTP request is made. So, perhaps it shouldn't even try in the first place.

Do you have an idea for a solution?

When riddler has not been configured, don't use it so it never tries to make a request that'll fail.

How can we reproduce the issue?

  1. subfinder -d google.com a basic search on a fresh VM with no special configurations
  2. See riddler: failed to get authentication token is there in STDOUT.

What are the running context details?

  • Installation method (e.g. pip, apt-get, git clone or zip/tar.gz): go get
  • Client OS (e.g. Microsoft Windows 10): Debian GNU/Linux 9.4 (stretch)
  • Program version (see banner): v1.1
  • Relevant console output (if any): riddler: failed to get authentication token
  • Exception traceback (if any): n/a

[URGENT] Bruteforce worker pool implementation does not returns results!

Hey @Mzack9999,
The worker pool implementation you suggested does not returns result as implemented in bruteforcer. The tasks are run correctly, but it does not returns results in real time. I've taken a look and it seems to be a problem with the worker pool implementation.

Can you please take a look here. I wasn't able to understand the root cause here.
PS, do you think we should probably migrate to original go concurrency model where we have greater control?
Thanks.

Docker build error

Step 5/8 : RUN cd $SRC_DIR; go build -o main;cp main /app/
 ---> Running in f07ed2487fd5
# github.com/ice3man543/subfinder/libsubfinder/engines/passive
libsubfinder/engines/passive/passive.go:60:11: state.Silent undefined (type *helper.State has no field or method Silent)
libsubfinder/engines/passive/passive.go:81:13: state.Silent undefined (type *helper.State has no field or method Silent)
libsubfinder/engines/passive/passive.go:87:13: state.Silent undefined (type *helper.State has no field or method Silent)
libsubfinder/engines/passive/passive.go:93:13: state.Silent undefined (type *helper.State has no field or method Silent)
libsubfinder/engines/passive/passive.go:99:13: state.Silent undefined (type *helper.State has no field or method Silent)
libsubfinder/engines/passive/passive.go:105:13: state.Silent undefined (type *helper.State has no field or method Silent)
libsubfinder/engines/passive/passive.go:111:13: state.Silent undefined (type *helper.State has no field or method Silent)
libsubfinder/engines/passive/passive.go:117:13: state.Silent undefined (type *helper.State has no field or method Silent)
libsubfinder/engines/passive/passive.go:123:13: state.Silent undefined (type *helper.State has no field or method Silent)
libsubfinder/engines/passive/passive.go:129:13: state.Silent undefined (type *helper.State has no field or method Silent)
libsubfinder/engines/passive/passive.go:129:13: too many errors
cp: can't stat 'main': No such file or directory
The command '/bin/sh -c cd $SRC_DIR; go build -o main;cp main /app/' returned a non-zero code: 1

How can we reproduce the issue?

git clone https://github.com/Ice3man543/subfinder
cd subfinder
docker build -t subfinder .

Docker configuration persistence errors

What's the problem (or question)?

Config file error while running the binary even config file placed under $GOPATH/bin

Do you have an idea for a solution?

Not sure!

How can we reproduce the issue?

  1. Run the subfinder from anywhere in root path

What are the running context details?

  • Installation method (go get):
  • Client OS (Ubuntu)
root@vps:~# ls $GOPATH/bin | grep config
config.json
root@vps:~# subfinder 

             __     ___ __          __            
.-----.--.--|  |--.'  _|__.-----.--|  .-----.----.
|__ --|  |  |  _  |   _|  |     |  _  |  -__|   _|
|_____|_____|_____|__| |__|__|__|_____|_____|__|  

SubFinder v0.1.0          Made with ❤ by @Ice3man
==================================================open ./config.json: no such file or directory
root@vps:~# 

Streaming Results to File

Some scans using a domain list can take a very long time to run - if the connection drops our or the application crashes during a scan this can lead to some very frustrating results.

It would be good to have results stream to the output file as they are discovered instead of writing at the duration of the scan to help prevent these scenarios causing a loss of results.

Writing to a non-existent directory

If output is specified to a non-existent directory the output write will fail with:

error : open /root/Documents/Bounties/domain.com/subdomains.txt: no such file or directory#

Output should check for the existence of a directory before running a scan, or alternatively write the directory to disk if it doesn't yet exist.

Brute force working?

Hi,
Great tool! thanks for sharing.
Does the brute force functionality work? It doesn't display any output and domains that this module successfully finds, and it seems to be finished quite quickly therefore I am asking. btw would a list with resolvers provide a better result when running brute force?

Thanks.

Perform Recursive Wildcard Elimination

What's the problem (or question)?

The tool currently performs wildcard elimination but only for root domains. For example, *.luminate.com is not a wildcard while *.store.luminate.com most certainly is. Therefore, we need to perform wildcard enumeration recursively and handle such edge cases in order to save time and resources.

Do you have an idea for a solution?

Apply Wildcard elimination logic recursively for each subdomain found.

How can we reproduce the issue?

Run ./subfinder -d luminate.com -nW

Using the incorrect name for an API key throws exception: call of reflect.Value.SetString on zero Value

When setting up API keys if you specify the wrong key value an ambiguous exception is thrown:

➜ subfinder git:(master) ./main --set-config VirusTotalAPIKey=


/ _/ / / / (_) / / ____
\ / // / _ / // / _ / _ / -) /
/
/_,
/_.
// /////_,/_/_/

SubFinder v0.1.0 Made with ❤ by @Ice3man

panic: reflect: call of reflect.Value.SetString on zero Value

goroutine 1 [running]:
reflect.flag.mustBeAssignable(0x0)
/usr/lib/go-1.8/src/reflect/value.go:221 +0x195
reflect.Value.SetString(0x0, 0x0, 0x0, 0xbfd7746e, 0x40)
/usr/lib/go-1.8/src/reflect/value.go:1529 +0x21
main.main()
/opt/subfinder/main.go:89 +0x208
➜ subfinder git:(master) ./main --set-config VirustotalAPIKey=

Note the misspelling of VirusTotal (should be Virustotal for successful addition).

Add support for domains list

In many programs you will want to test more than one domain. It would be ideal to be able to stdin a list of domains, or provide one on the command line in lue of the -d flag.

Resolve outstanding linting issues

Automated test cases including linting checkers were added in #17 however not all checks are passing. Code should be updated to match these checks so they can be enforced in the future.

Refactor code for golang style guide and idioms

What's the problem (or question)?

The current code doesn't follows golang proverbs or patterns. The whole code needs a refactor and rewrite using golang ideas to reduce problems and bugs.

Do you have an idea for a solution?

Just rewrite the code.

How can we reproduce the issue?

Take a look at the code

[signal SIGSEGV: segmentation violation code=0x1 addr=0x48 pc=0x6b096b]

What's the problem (or question)?

Attempting to run it for yahoo.com generates some errors.

I don't believe I'm having any internet issues on my computer. Other scripts that pull data from the web work fine. DNS resolution is working. No firewalls.

Do you have an idea for a solution?

Errors should be handled gracefully. The user should not see the traceback etc. They should be logged, and the user should be shown a friendly error message saying why it failed.

How can we reproduce the issue?

I did the following:

./subfinder -d yahoo.com

Got this response:

[-] Searching For Subdomains in Ask
[-] Searching For Subdomains in Baidu
[-] Searching For Subdomains in Bing
[-] Searching For Subdomains in Censys
[-] Searching For Subdomains in Crt.sh
[-] Searching For Subdomains in CertDB
[-] Searching For Subdomains in Certspotter
[-] Searching For Subdomains in Dnsdb
[-] Searching For Subdomains in Threatcrowd
[-] Searching For Subdomains in Findsubdomains
[-] Searching For Subdomains in DNSDumpster
[-] Searching For Subdomains in PassiveTotal
[-] Searching For Subdomains in PTRArchive
[-] Searching For Subdomains in Hackertarget
[-] Searching For Subdomains in Virustotal
[-] Searching For Subdomains in Securitytrails
[-] Searching For Subdomains in WaybackArchive
[-] Searching For Subdomains in ThreatMiner
[-] Searching For Subdomains in Riddler
[-] Searching For Subdomains in Netcraft

[+] Finding subdomains for : yahoo.com
error: Get https://www.threatcrowd.org/searchApi/v2/domain/report/?domain=yahoo.com: dial tcp [2400:cb00:2048:1::681f:b9a]:443: connect: network is unreachable

error: Get https://www.bing.com/search?q=domain%3Ayahoo.com&go=Submit&first=0: dial tcp: lookup www.bing.com on 127.0.0.53:53: read udp 127.0.0.1:47844->127.0.0.53:53: i/o timeout

error: Get http://ptrarchive.com/tools/search2.htm?label=yahoo.com&date=ALL: dial tcp: lookup ptrarchive.com on 127.0.0.53:53: read udp 127.0.0.1:45089->127.0.0.53:53: i/o timeout

error: Get http://www.dnsdb.org/f/yahoo.com.dnsdb.org/: dial tcp [2400:cb00:2048:1::681f:5769]:80: connect: network is unreachable

error: Get https://www.threatminer.org/getData.php?e=subdomains_container&q=yahoo.com&t=0&rt=10&p=1: dial tcp [2400:cb00:2048:1::6819:b105]:443: connect: network is unreachable

error: Get https://api.hackertarget.com/hostsearch/?q=yahoo.com: dial tcp: lookup api.hackertarget.com on 127.0.0.53:53: read udp 127.0.0.1:56787->127.0.0.53:53: i/o timeout

error: Get https://certdb.com/domain/yahoo.com: dial tcp: lookup certdb.com on 127.0.0.53:53: read udp 127.0.0.1:36248->127.0.0.53:53: i/o timeout

error: Get https://certspotter.com/api/v0/certs?domain=yahoo.com: dial tcp: lookup certspotter.com on 127.0.0.53:53: read udp 127.0.0.1:38982->127.0.0.53:53: i/o timeout
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x48 pc=0x6b096b]

goroutine 21 [running]:
github.com/Ice3man543/subfinder/libsubfinder/sources/riddler.Query(0xc4200ba200, 0xc420096420)
	/home/user/go/src/github.com/Ice3man543/subfinder/libsubfinder/sources/riddler/riddler.go:56 +0x24b
created by github.com/Ice3man543/subfinder/libsubfinder/engines/passive.Discover
	/home/user/go/src/github.com/Ice3man543/subfinder/libsubfinder/engines/passive/passive.go:151 +0xb3b

What are the running context details?

  • Installation method (e.g. pip, apt-get, git clone or zip/tar.gz): go get
  • Client OS (e.g. Microsoft Windows 10): Ubuntu 18.04
  • Program version (see banner): v0.1.0
  • Relevant console output (if any): See above.
  • Exception traceback (if any): See above.

More detailed exception handling

Currently errors are thrown up the stack for displaying which can make things confusing if a generic stack trace is shown (as in #47). My intention is to work through areas where we're currently moving errors up the stack and add more verbosity. I'll raise a separate issue after this to revisit error handling to see if this could be done more gracefully.

Move to an organization repo?

@codingo @Mzack9999 As discussed earlier, it's probably time to move to a dedicated subfinder repo!
I'd be happy to port it over to some organization repo. Would make collaboration more easier and decentralized?
Thoughts?

Doesn't export to JSON in Centos

What's the problem (or question)?

It appears that when you use the -oJ and the -o flag on Centos, the file doesn't write out. There are no errors, it just doesn't process the -o flag and thus doesn't write any file

However, using only -o does work.

Do you have an idea for a solution?

As a patch, I tried to edit the go code as follows:

flag.BoolVar(&s.IsJSON, "oJ", false, "Write output in JSON Format") 

to

flag.BoolVar(&s.IsJSON, "oJ", true, "Write output in JSON Format") 

However, this did not result in any file produced when I ran:
subfinder -d domain.com -o

How can we reproduce the issue?

I know set up is a pain for these things, so I can issue you an account on my Centos server if you contact me through twitter and prove your identity. Otherwise, I would recommend a Centos VM.

What are the running context details?

  • Client OS: CentOS Linux release 7.4.1708 (Core)
  • Program version (see banner): Most recent (as of June 1, 2018)
  • Relevant console output (if any): The program simply returns the subdomains, just not in a file.
  • Exception traceback (if any): None

Docker build error message

Docker build error

docker build -t subfinder .
Sending build context to Docker daemon  5.472MB
Step 1/7 : FROM iron/go:dev
dev: Pulling from iron/go
2595db787577: Pull complete 
25f4744d75f7: Pull complete 
e5c42b04f34b: Pull complete 
2c16999b2da4: Pull complete 
f07ddaf6c162: Pull complete 
bfac150e9ba1: Pull complete 
7c7bda04128a: Pull complete 
Digest: sha256:b80fdc916aec2ab0237bb434b0d9b022f8aabd8e161a7015aea496a90039ae1e
Status: Downloaded newer image for iron/go:dev
 ---> 04f0f1a5b78c
Step 2/7 : WORKDIR /app
 ---> 3e2086782ff0
Removing intermediate container 646fd00ccc84
Step 3/7 : ENV SRC_DIR /go/src/github.com/ice3man543/subfinder/
 ---> Running in f1978c62a670
 ---> f7ca0a57a724
Removing intermediate container f1978c62a670
Step 4/7 : ADD . $SRC_DIR
 ---> 1253dac2ddb0
Removing intermediate container 76a8ee01e51f
Step 5/7 : RUN cd $SRC_DIR; go build -o main; cp main /app/
 ---> Running in 653718b9e3e9
main.go:20:2: cannot find package "github.com/Ice3man543/subfinder/libsubfinder/engines/passive" in any of:
	/usr/local/go/src/github.com/Ice3man543/subfinder/libsubfinder/engines/passive (from $GOROOT)
	/go/src/github.com/Ice3man543/subfinder/libsubfinder/engines/passive (from $GOPATH)
main.go:21:2: cannot find package "github.com/Ice3man543/subfinder/libsubfinder/helper" in any of:
	/usr/local/go/src/github.com/Ice3man543/subfinder/libsubfinder/helper (from $GOROOT)
	/go/src/github.com/Ice3man543/subfinder/libsubfinder/helper (from $GOPATH)
main.go:22:2: cannot find package "github.com/Ice3man543/subfinder/libsubfinder/output" in any of:
	/usr/local/go/src/github.com/Ice3man543/subfinder/libsubfinder/output (from $GOROOT)
	/go/src/github.com/Ice3man543/subfinder/libsubfinder/output (from $GOPATH)
cp: can't stat 'main': No such file or directory
The command '/bin/sh -c cd $SRC_DIR; go build -o main; cp main /app/' returned a non-zero code: 1

Do you have an idea for a solution?

Something looks wrong with the Docker image. Maybe when it was initially build up some paths would be updated/changed?

My environment is Kali Linux with Docker.

panic while running job: runtime error: invalid memory address or nil pointer dereference

2018/06/22 09:58:53 panic while running job: runtime error: invalid memory address or nil pointer dereference
panic: runtime error: invalid memory address or nil pointer dereference [recovered]
	panic: interface conversion: interface {} is runtime.errorString, not string
[signal SIGSEGV: segmentation violation code=0x1 addr=0x40 pc=0x12bb293]

goroutine 93 [running]:
github.com/Ice3man543/subfinder/libsubfinder/helper.(*Pool).subworker.func1(0xc4200888c0)
	/Users/hehe/go/src/github.com/Ice3man543/subfinder/libsubfinder/helper/pool.go:61 +0x163
panic(0x1313a00, 0x152d8e0)
	/usr/local/Cellar/go/1.10.1/libexec/src/runtime/panic.go:502 +0x229
github.com/Ice3man543/subfinder/libsubfinder/sources/riddler.Query(0xc4200ee900, 0x2, 0x2, 0x12a8701, 0x101)
	/Users/hehe/go/src/github.com/Ice3man543/subfinder/libsubfinder/sources/riddler/riddler.go:57 +0x273
github.com/Ice3man543/subfinder/libsubfinder/helper.(*Pool).subworker(0xc420092aa0, 0xc4200888c0)
	/Users/hehe/go/src/github.com/Ice3man543/subfinder/libsubfinder/helper/pool.go:64 +0x6e
github.com/Ice3man543/subfinder/libsubfinder/helper.(*Pool).worker(0xc420092aa0, 0x1a)
	/Users/hehe/go/src/github.com/Ice3man543/subfinder/libsubfinder/helper/pool.go:78 +0xb3
created by github.com/Ice3man543/subfinder/libsubfinder/helper.(*Pool).Run

when I run this program, the program stopped by above error.
I didn't debug your program. so I'm not sure what the real problem is.
by the way, I live in China, I guess this situation may be caused by internet firewall.

New ASCII Cinema Video

As discussed I'll re-do the ascii cinema video tomorrow to cater for new functionality, etc'.

Putting in this pull request as a reminder to do so.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.