webtech

package
v0.0.0-...-72c2bb7 Latest Latest
Warning

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

Go to latest
Published: Oct 25, 2020 License: MIT Imports: 15 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

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"`
	JS       map[string]string `json:"js"`
	HTML     StringArray       `json:"html"`
	Script   StringArray       `json:"script"`
	URL      StringArray       `json:"url"`
	Website  string            `json:"website"`
	Implies  StringArray       `json:"implies"`
	Icon     string            `json:"icon"`

	HTMLRegex   []AppRegexp `json:"-"`
	JSRegex     []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

type AppRegexp

type AppRegexp struct {
	AppName string
	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

type Category

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

Category names defined by wappalyzer

type Detector

type Detector interface {
	Init(config []byte) error
	// injects js into the current browser context to detect versions via js objects
	JS(jsObjects []*JSObject) map[string][]*Match
	// runs detector against headers/cookies
	Headers(headers map[string]string) map[string][]*Match
	// runs detector against HTML, meta, script tags etc
	DOM(dom string) map[string][]*Match
	// returns a script of js code to inject for detecting tech
	JSToInject() string
	// JSResultsToObjects takes in an interface, and marshals it to a slice
	// of JSObjects
	JSResultsToObjects(in interface{}) []*JSObject
	// Merges all matches found and returns a map of WebTech results
	MergeMatches(results []map[string][]*Match) map[string]*am.WebTech
}

type JSObject

type JSObject struct {
	App   string `json:"app"`
	Obj   string `json:"obj"`
	Regex string `json:"regex"`
	Value string `json:"value"`
}

type Match

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

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

type Result

type Result struct {
	Host     string        `json:"host"`
	Matches  []Match       `json:"matches"`
	Duration time.Duration `json:"duration"`
	Error    error         `json:"error"`
}

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 Wappalyzer

type Wappalyzer struct {
	JSObjects []JSObject
	// contains filtered or unexported fields
}

Wappalyzer for finding technology in http responses/data

func NewWappalyzer

func NewWappalyzer() *Wappalyzer

NewWappalyzer for finding technology in http responses/data

func (*Wappalyzer) AppDefinitions

func (w *Wappalyzer) AppDefinitions() *AppsDefinition

func (*Wappalyzer) DOM

func (w *Wappalyzer) DOM(dom string) map[string][]*Match

DOM searches the pre-serialized dom and script/meta tags to extract matches

func (*Wappalyzer) Headers

func (w *Wappalyzer) Headers(headers map[string]string) map[string][]*Match

Headers finds matches in headers/cookies

func (*Wappalyzer) Init

func (w *Wappalyzer) Init(config []byte) error

Init downloads and initializes the application definitions

func (*Wappalyzer) JS

func (w *Wappalyzer) JS(jsObjects []*JSObject) map[string][]*Match

JS parses out the js objects to create a map of result matches

func (*Wappalyzer) JSResultsToObjects

func (w *Wappalyzer) JSResultsToObjects(in interface{}) []*JSObject

JSResultsToObjects takes in an interface, and marshals it to a slice of JSObjects

func (*Wappalyzer) JSToInject

func (w *Wappalyzer) JSToInject() string

func (*Wappalyzer) MergeMatches

func (w *Wappalyzer) MergeMatches(results []map[string][]*Match) map[string]*am.WebTech

MergeMatches all matches found and returns a map of WebTech results

Jump to

Keyboard shortcuts

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