About WappaGo • Installation • Usage
WappaGo has been developed to assemble different features from tools like HTTPX, Naabu, GoWitness and Wappalyzer. To allow an efficient detection of technologies, it is necessary to open a browser and in order to avoid opening a browser for each target, WappaGo opens only one browser and uses the system of pages which allows to consume less resources and to carry out an analysis much more quickly.
Download the latest release or compile by yourself :
git clone https://github.com/EasyRecon/wappaGo
cd wappaGo && go build
or
go install github.com/EasyRecon/wappaGo@latest
Note : wappaGo requires Chrome to be present on the system
Usage of wappaGo:
-amass-input
Pip directly on Amass (Amass json output) like amass -d domain.tld | wappaGo
-chrome-threads int
Number of chromes threads in each main threads total = option.threads*option.chrome-threads (Default 5) (default 5)
-follow-redirect
Follow redirect to detect technologie
-port-timeout int
Timeout during port scanning in ms (default 2000)
-ports string
port want to scan separated by coma (default "80,443")
-proxy string
Use http proxy
-report
Generate HTML report
-resolvers string
Use specifique resolver separated by comma
-screenshot string
path to screenshot if empty no screenshot
-threads int
Number of threads to start recon in same time (default 5)
You can either use wappaGo from a file containing a list of domains
cat domain.txt | ./wappaGo
or from an Amass output (preferred)
amass enum -d example.com -ipv4 -json out.json
cat out.json | ./wappaGo -amass-input
You can use wappaGo as a library in your own project.
type WrapperOptions struct {
Screenshot string
Ports string
Threads int
Porttimeout int
Resolvers string
FollowRedirect bool
ChromeTimeout int
ChromeThreads int
Proxy string
}
package main
import (
"fmt"
"github.com/EasyRecon/wappaGo/structure"
"github.com/EasyRecon/wappaGo/wrapper"
)
func main() {
input := []string{"google.com", "twitter.com"}
options := structure.WrapperOptions{
Ports: "80,443",
Screenshot: "screenshots",
}
// Async mode
results := make(chan structure.Data)
go func() {
for result := range results {
fmt.Println(result)
}
}()
wrapper.StartReconAsync(input, options, results)
// Sync mode
results := wrapper.StartReconSync(input, options)
for _, result := range results {
fmt.Println(result)
}
}
For each url, you will receive a structure.Data which contains all the information about the target.
- Add robot technologie dectection
- Add xhr technologie dectection
This tool uses several ProjectDiscovery libraries