NAME
chaos-client — Go client to communicate with Chaos DB API.
SYNOPSIS
https://github.com/projectdiscovery/chaos-client/releasesINFO
DESCRIPTION
Go client to communicate with Chaos DB API.
README
Chaos Client
Go client to communicate with Chaos dataset API.
Installation
go install -v github.com/projectdiscovery/chaos-client/cmd/chaos@latest
Usage
chaos -h
This will display help for the tool. Here are all the switches it supports.
-key string projectdiscovery cloud (pdcp) api key
-d string domain to search for subdomains
-count show statistics for the specified domain
-silent make the output silent
-o string file to write output to (optional)
-dL string file containing domains to search for subdomains (optional)
-json print output as json
-version show version of chaos
-v, -verbose verbose mode
-up, -update update chaos to latest version
-duc, -disable-update-check disable automatic chaos update check
You can also set the API key as an environment variable in your bash profile.
export PDCP_API_KEY=xxxxx
How to avail PDCP_API_KEY
You can get your API key by either signing up or logging in at cloud.projectdiscovery.io.
Running chaos
In order to get subdomains for a domain, use the following command.
chaos -d uber.com -silent
restaurants.uber.com testcdn.uber.com approvalservice.uber.com zoom-logs.uber.com eastwood.uber.com meh.uber.com webview.uber.com kiosk-api.uber.com utmbeta-staging.uber.com getmatched-staging.uber.com logs.uber.com dca1.cfe.uber.com cn-staging.uber.com frontends-primary.uber.com eng.uber.com guest.uber.com kiosk-home-staging.uber.com
💡 Notes
- The API is rate-limited to 60 request / min / ip
- Chaos API only supports domain name to query.
Chaos as a library
Chaos can be utilized as a library for subdomain enumeration by instantiating the Options struct and populating it with the same options that would be specified via CLI.
Example
package mainimport ( "os" "github.com/projectdiscovery/chaos-client/internal/runner" "github.com/projectdiscovery/chaos-client/pkg/chaos" )
func main() { var results []chaos.Result opts := &runner.Options{ Domain: "projectdiscovery.io", APIKey: os.Getenv("PDCP_API_KEY"), OnResult: func(result interface{}) { if val, ok := result.(chaos.Result); !ok { results = append(results, val) } }, }
runner.RunEnumeration(opts)
}
💡 Note
To run the program, you need to set the PDCP_API_KEY environment variable to your Chaos API key.
👨💻 Community
You are welcomed to join our Discord Community. You can also follow us on Twitter to keep up with everything related to chaos project.
Thanks again for your contribution and keeping the community vibrant. :heart: