nuclei/pkg/input
Tarun Koyalwar 255032f4f2
pre-condition in code , fuzz and other misc updates (#4966)
* fuzz: rename 'filters' -> 'pre-condition'

* code proto: pre-condition + integration test

* feat: dsl document generator

* update dsl page header

* fix lint error

* add js defined helper funcs in docs

* remove panic recovery unless its for third party(go-rod,goja)

* handle dynamic values flattening edgecase in flow+multiprotocol

* fix order of kv in form-data (failing test)

* fix template loading counters

* Revert "handle dynamic values flattening edgecase in flow+multiprotocol"

This reverts commit 58fdd4faf7df5d654b46a9585011f614d5c98aa4.

* fix flow iteration using 'iterate'
2024-04-01 19:18:21 +05:30
..
formats Fuzzing layer enhancements + input-types support (#4477) 2024-03-14 03:08:53 +05:30
provider Fuzzing layer enhancements + input-types support (#4477) 2024-03-14 03:08:53 +05:30
types pre-condition in code , fuzz and other misc updates (#4966) 2024-04-01 19:18:21 +05:30
README.md Fuzzing layer enhancements + input-types support (#4477) 2024-03-14 03:08:53 +05:30
transform.go Fuzzing layer enhancements + input-types support (#4477) 2024-03-14 03:08:53 +05:30
transform_test.go Fuzzing layer enhancements + input-types support (#4477) 2024-03-14 03:08:53 +05:30

README.md

input

input package contains and provides loading, parsing , validating and normalizing of input data

transform

Transform package transforms or normalizes the input data before it is sent to protocol executer this step mainly involves changes like adding default ports (if missing) , validating if input is file or directory or url and adjusting the input accordingly etc.

Provider

Provider package contains the interface that every input format should implement for providing that input format to nuclei.

Currently Nuclei Supports three input providers:

  1. SimpleInputProvider = A No-Op provider that takes a list of urls and implements the provider interface.

  2. HttpInputProvider = A provider that supports loading and parsing input formats that contain complete Http Data like Entire Request, Response etc. Supported formats include Burp,openapi,swagger,postman,proxify etc.

  3. ListInputProvider = Legacy/Default Provider that handles all list type inputs like urls,domains,ips,cidrs,files etc.

func NewInputProvider(opts InputOptions) (InputProvider, error)

This function returns a InputProvider based by appropriately selecting input provider based on the input format (i.e either list or http) and returns the provider that can handle that input format.