wappalyzer

package
v0.0.0-...-afc8d54 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 26, 2019 License: MIT Imports: 15 Imported by: 0

Documentation

Index

Constants

View Source
const WappalyzerURL = "https://raw.githubusercontent.com/AliasIO/Wappalyzer/master/src/apps.json"

WappalyzerURL is the link to the latest apps.json file in the Wappalyzer repo

Variables

This section is empty.

Functions

func DownloadFile

func DownloadFile(from, to string) error

DownloadFile pulls the latest apps.json file from the Wappalyzer github

func Init

func Init(workers int, hosts io.Reader, appsFile string, crawlCount int) (chan Result, error)

Init sets up all the workders, reads in the host data and returns the results channel or an error

Types

type App

type App struct {
	Cats     StringArray       `json:"cats"`
	CatNames []string          `json:"category_names"`
	Cookies  map[string]string `json:"cookies"`
	Headers  map[string]string `json:"headers"`
	Meta     map[string]string `json:"meta"`
	HTML     StringArray       `json:"html"`
	Script   StringArray       `json:"script"`
	URL      StringArray       `json:"url"`
	Website  string            `json:"website"`
	Implies  StringArray       `json:"implies"`

	HTMLRegex   []AppRegexp `json:"-"`
	ScriptRegex []AppRegexp `json:"-"`
	URLRegex    []AppRegexp `json:"-"`
	HeaderRegex []AppRegexp `json:"-"`
	MetaRegex   []AppRegexp `json:"-"`
	CookieRegex []AppRegexp `json:"-"`
}

App type encapsulates all the data about an App from apps.json

func (*App) FindInHeaders

func (app *App) FindInHeaders(headers http.Header) (matches [][]string, version string)

type AppRegexp

type AppRegexp struct {
	Name    string
	Regexp  *regexp.Regexp
	Version string
}

type AppsDefinition

type AppsDefinition struct {
	Apps map[string]App      `json:"apps"`
	Cats map[string]Category `json:"categories"`
}

AppsDefinition type encapsulates the json encoding of the whole apps.json file

var (
	// AppDefs provides access to the unmarshalled apps.json file
	AppDefs *AppsDefinition
)

type Category

type Category struct {
	Name string `json:"name"`
}

Category names defined by wappalyzer

type Job

type Job struct {
	URL     string
	Body    []byte
	Headers http.Header //map[string][]string
	Cookies []*http.Cookie
	Crawl   int
	// contains filtered or unexported fields
}

Job may consist only of a URL, in which case webanalyse will proceed to download from that URL, or it may consist of the Body and Headers of a request to a URL and the URL itself, in which case these fields will be trusted and used for analysis without further network traffic. If a Job is constructed using the OfflineJob constructor then a flag will be set to prevent downloading regardless of the contents (or absence) of the Body or Headers fields.

func NewOfflineJob

func NewOfflineJob(url, body string, headers map[string][]string) *Job

NewOfflineJob constructs a job out of the constituents of a webanalyzer analysis; a URL, a body, and response headers. This constructor also sets a flag to explicitly prevent fetching from the URL even if the body and headers are nil or empty. Use this for...offline jobs.

func NewOnlineJob

func NewOnlineJob(url, body string, headers map[string][]string, crawlCount int) *Job

NewOnlineJob constructs a job that may either have a URL only, or a URL, Body and Headers. If it contains at least a URL and Body, then webanalyzer will not re-download the data, but if a Body is absent then downloading will be attempted.

type Match

type Match struct {
	App     `json:"app"`
	AppName string     `json:"app_name"`
	Matches [][]string `json:"matches"`
	Version string     `json:"version"`
}

Match type encapsulates the App information from a match on a document

type ResponseMsg

type ResponseMsg struct {
	Msg  string `json:"msg"`
	Code int    `json:"code"`
	Data string `json:"data"`
}

type Result

type Result struct {
	Host        string        `json:"host"`
	Matches     []Match       `json:"matches"`
	Duration    time.Duration `json:"duration"`
	Error       string        `json:"error"`
	WebTitle    string        `json:"web_title"`
	WebKeywords string        `json:"web_keywords"`
	WebDesc     string        `json:"web_desc"`
}

Result type encapsulates the result information from a given host

type StringArray

type StringArray []string

StringArray type is a wrapper for []string for use in unmarshalling the apps.json

func (*StringArray) UnmarshalJSON

func (t *StringArray) UnmarshalJSON(data []byte) error

UnmarshalJSON is a custom unmarshaler for handling bogus apps.json types from wappalyzer

type WebAnalyzeHttpServer

type WebAnalyzeHttpServer struct {
}

func NewWebAnalyzeServer

func NewWebAnalyzeServer(appFile string) (*WebAnalyzeHttpServer, error)

func (*WebAnalyzeHttpServer) Analyze

func (was *WebAnalyzeHttpServer) Analyze(url string) Result

func (*WebAnalyzeHttpServer) HttpHandlerAnalyze

func (was *WebAnalyzeHttpServer) HttpHandlerAnalyze(w http.ResponseWriter, r *http.Request)

type WebAnalyzer

type WebAnalyzer struct {
	Results chan Result
	// contains filtered or unexported fields
}

WebAnalyzer types holds an analyzation job

func NewWebAnalyzer

func NewWebAnalyzer(workers int, appsFile string) (*WebAnalyzer, error)

NewWebAnalyzer returns an analyzer struct for an ongoing job, which may be "fed" jobs via a method and returns them via a channel when complete.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL