awswaf

package module
v1.1.1 Latest Latest
Warning

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

Go to latest
Published: Jul 28, 2026 License: MIT Imports: 27 Imported by: 0

README

awswaf

Go

Golang AWS WAF challenge solver.

This repository is an improved version of xKiian/awswaf. Upstream has not been updated for a while.

Docs

Disclaimer

This package is unofficial and not affiliated with Amazon or AWS.

It is intended for studying and educational purposes only. Use it responsibly and in accordance with AWS’s terms of service and applicable laws.

License

MIT License — see LICENSE.

Documentation

Index

Constants

This section is empty.

Variables

View Source
var ErrEmptyGPUList = errors.New("empty webgl gpu list")

Functions

func ComputeScryptNonce

func ComputeScryptNonce(challengeInput, checksum string, difficulty int) (string, error)

func Decrypt

func Decrypt(encrypted string) ([]byte, error)

func Encrypt

func Encrypt(plaintext []byte) (string, error)

func GetFP

func GetFP(userAgent string) (string, string, error)

func HashPoW

func HashPoW(challengeInput, checksum string, difficulty int) (string, error)

func NetworkBandwidth

func NetworkBandwidth(difficulty int, sizes map[int]int) string

func ScryptFunc

func ScryptFunc(inputStr, saltStr string, memoryCost int) (string, error)

func SolveChallenge

func SolveChallenge(challengeType, challengeInput, checksum string, difficulty int, bandwidthSizes map[int]int) (string, error)

Types

type Automation

type Automation struct {
	WD      AutomationWD      `json:"wd"`
	Phantom AutomationPhantom `json:"phantom"`
}

type AutomationPhantom

type AutomationPhantom struct {
	Properties PhantomProperties `json:"properties"`
}

type AutomationProperties

type AutomationProperties struct {
	Document  []string `json:"document"`
	Window    []string `json:"window"`
	Navigator []string `json:"navigator"`
}

type AutomationWD

type AutomationWD struct {
	Properties AutomationProperties `json:"properties"`
}

type BEBlock

type BEBlock struct {
	SI bool `json:"si"`
}

type CSSCapabilities

type CSSCapabilities struct {
	TextShadow       int `json:"textShadow"`
	WebkitTextStroke int `json:"WebkitTextStroke"`
	BoxShadow        int `json:"boxShadow"`
	BorderRadius     int `json:"borderRadius"`
	BorderImage      int `json:"borderImage"`
	Opacity          int `json:"opacity"`
	Transform        int `json:"transform"`
	Transition       int `json:"transition"`
}

type CanvasBlock

type CanvasBlock struct {
	Hash          int   `json:"hash"`
	EmailHash     any   `json:"emailHash"`
	HistogramBins []int `json:"histogramBins"`
}

type Capabilities

type Capabilities struct {
	CSS     CSSCapabilities `json:"css"`
	JS      JSCapabilities  `json:"js"`
	Elapsed int             `json:"elapsed"`
}

type Challenge

type Challenge struct {
	Input  string `json:"input"`
	Hmac   string `json:"hmac"`
	Region string `json:"region"`
}

type CryptoBlock

type CryptoBlock struct {
	Crypto        int  `json:"crypto"`
	Subtle        int  `json:"subtle"`
	Encrypt       bool `json:"encrypt"`
	Decrypt       bool `json:"decrypt"`
	WrapKey       bool `json:"wrapKey"`
	UnwrapKey     bool `json:"unwrapKey"`
	Sign          bool `json:"sign"`
	Verify        bool `json:"verify"`
	Digest        bool `json:"digest"`
	DeriveBits    bool `json:"deriveBits"`
	DeriveKey     bool `json:"deriveKey"`
	GetRandomVals bool `json:"getRandomValues"`
	RandomUUID    bool `json:"randomUUID"`
}

type Fingerprint

type Fingerprint struct {
	Metrics      Metrics      `json:"metrics"`
	Start        int64        `json:"start"`
	FlashVersion any          `json:"flashVersion"`
	Plugins      []Plugin     `json:"plugins"`
	DupedPlugins string       `json:"dupedPlugins"`
	ScreenInfo   string       `json:"screenInfo"`
	Referrer     string       `json:"referrer"`
	UserAgent    string       `json:"userAgent"`
	Location     string       `json:"location"`
	WebDriver    bool         `json:"webDriver"`
	Capabilities Capabilities `json:"capabilities"`
	GPU          GPUBlock     `json:"gpu"`
	DNT          any          `json:"dnt"`
	Math         MathBlock    `json:"math"`
	Automation   Automation   `json:"automation"`
	Stealth      Stealth      `json:"stealth"`
	Crypto       CryptoBlock  `json:"crypto"`
	Canvas       CanvasBlock  `json:"canvas"`
	FormDetected bool         `json:"formDetected"`
	NumForms     int          `json:"numForms"`
	NumFormElems int          `json:"numFormElements"`
	BE           BEBlock      `json:"be"`
	End          int64        `json:"end"`
	Errors       []any        `json:"errors"`
	Version      string       `json:"version"`
	ID           string       `json:"id"`
}

type GPUBlock

type GPUBlock struct {
	Vendor     string   `json:"vendor"`
	Model      string   `json:"model"`
	Extensions []string `json:"extensions"`
}

type GPUInfo

type GPUInfo struct {
	WebGLRenderer         string  `json:"web_gl_renderer"`
	WebGLUnmaskedRenderer string  `json:"webgl_unmasked_renderer"`
	WebGL                 []WebGL `json:"webgl"`
}

type GokuProps

type GokuProps struct {
	Key     string `json:"key"`
	Iv      string `json:"iv"`
	Context string `json:"context"`
}

func Extract

func Extract(html string) (GokuProps, string, error)

type Inputs

type Inputs struct {
	Challenge     Challenge `json:"challenge"`
	ChallengeType string    `json:"challenge_type"`
	Difficulty    int       `json:"difficulty"`
}

type JSCapabilities

type JSCapabilities struct {
	Audio        bool   `json:"audio"`
	Geolocation  bool   `json:"geolocation"`
	LocalStorage string `json:"localStorage"`
	Touch        bool   `json:"touch"`
	Video        bool   `json:"video"`
	WebWorker    bool   `json:"webWorker"`
}

type MathBlock

type MathBlock struct {
	Tan string `json:"tan"`
	Sin string `json:"sin"`
	Cos string `json:"cos"`
}

type Metrics

type Metrics struct {
	Fp2          int `json:"fp2"`
	Browser      int `json:"browser"`
	Capabilities int `json:"capabilities"`
	GPU          int `json:"gpu"`
	DNT          int `json:"dnt"`
	Math         int `json:"math"`
	Screen       int `json:"screen"`
	Navigator    int `json:"navigator"`
	Auto         int `json:"auto"`
	Stealth      int `json:"stealth"`
	Subtle       int `json:"subtle"`
	Canvas       int `json:"canvas"`
	FormDetector int `json:"formdetector"`
	BE           int `json:"be"`
}

type PhantomProperties

type PhantomProperties struct {
	Window []string `json:"window"`
}

type Plugin

type Plugin struct {
	Name string `json:"name"`
	Str  string `json:"str"`
}

type Stealth

type Stealth struct {
	T1  int  `json:"t1"`
	T2  int  `json:"t2"`
	I   int  `json:"i"`
	MTE int  `json:"mte"`
	MTD bool `json:"mtd"`
}

type ValueVerifySignals

type ValueVerifySignals struct {
	Present string `json:"Present"`
}

type Verify

type Verify struct {
	Challenge     Challenge       `json:"challenge"`
	Solution      string          `json:"solution"`
	Signals       []VerifySignals `json:"signals"`
	Checksum      string          `json:"checksum"`
	ExistingToken []string        `json:"existing_token"`
	Client        string          `json:"client"`
	Domain        string          `json:"domain"`
	Metrics       []VerifyMetrics `json:"metrics"`
	GokuProps     GokuProps       `json:"goku_props"`
}

type VerifyMetrics

type VerifyMetrics struct {
	Name  string  `json:"name"`
	Value float64 `json:"value"`
	Unit  string  `json:"unit"`
}

type VerifyRes

type VerifyRes struct {
	Token  string `json:"token"`
	Inputs any    `json:"inputs"`
}

type VerifySignals

type VerifySignals struct {
	Name  string             `json:"name"`
	Value ValueVerifySignals `json:"value"`
}

type Waf

type Waf struct {
	Session tlsclient.HttpClient

	Host      string
	Domain    string
	UserAgent string
	// contains filtered or unexported fields
}

func NewWaf

func NewWaf(host, domain, userAgent string, gokuProps GokuProps, challengeJS, proxy string, timeoutSec int) (*Waf, error)

func (*Waf) BuildPayload

func (a *Waf) BuildPayload(inputs Inputs) (*Verify, error)

func (*Waf) GetInputs

func (a *Waf) GetInputs() (Inputs, error)

func (*Waf) Run

func (a *Waf) Run() (string, error)

type WebGL

type WebGL struct {
	WebGLUnmaskedVendor string `json:"webgl_unmasked_vendor"`
	WebGLExtensions     string `json:"webgl_extensions"`
}

Jump to

Keyboard shortcuts

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