Skip to content

projectdiscovery/chaos-client

Repository files navigation

Chaos Client

Go client to communicate with Chaos dataset API.

English中文

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 main

import (
	"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. ❤️