Skip to content

Subprober is a powerful and efficient subdomain scanning tool written in Python. With the ability to handle large lists of subdomains. The tool offers concurrent scanning, allowing users to define their preferred concurrency level for faster results. Whether you are on Linux, Windows, or macos

License

Notifications You must be signed in to change notification settings

RevoltSecurities/SubProber

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

97 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Subprober

An essential HTTP multi-purpose Probing Tool for Penetration Testers and Security Researchers with Asynchronous httpx client support

GitHub last commit GitHub release (latest by date) GitHub license

Overview

Subprober is a powerful and efficient tool designed for penetration testers and security professionals. This release introduces several enhancements, bug fixes, and new features to elevate your probing experience. Subprober facilitates fast and reliable information extraction, making it an invaluable asset for penetration testing workflows.


  • Fast and configurable probings
  • Supported Inputs: hosts, URLS, IPs
  • Supports multiple methods http requests
  • Supports proxies and customizable Header for probing
  • Progress your probing tasks

Subprober Probing Configuration:

Probes Default Check Probes Default Check
Url True UrlScheme False
Title True Ports False
Status code True Paths False
Response Length True HTTP2 False
Server True Response Body Hash False
Content Type True HTTP Version True
Follow redirection False HTTP Method True
Path False Body Preview True
Redirect location False Redirect History True
Max redirection False Response Reason True
IP address of Host False Word Count True
Cname of Host False AAAA Record of Host False
Jarm False Response Time True
Web Socket True Line Count True
TLS Data False Redirect Location True

Installation

To install Subprober you need python latest version to be installed and then you can follow the below steps to install subprober

PIP Installation:

pip install git+https://github.com/RevoltSecurities/Subprober.git
subprober -h

PIPX Installation:

pipx install git+https://github.com/RevoltSecurities/Subprober.git
subprober -h

GIT Installation:

git clone https://github.com/RevoltSecurities/SubProber.git
cd Subprober
pip install .
subprober -h

Usage

subprober -h      

   _____       __    ____             __             
  / ___/__  __/ /_  / __ \_________  / /_  ___  _____
  \__ \/ / / / __ \/ /_/ / ___/ __ \/ __ \/ _ \/ ___/
 ___/ / /_/ / /_/ / ____/ /  / /_/ / /_/ /  __/ /    
/____/\__,_/_.___/_/   /_/   \____/_.___/\___/_/     
                                                         
                
                
                    - RevoltSecurities


Subprober - An essential HTTP multi-purpose Probing Tool for Penetration Testers and Security Researchers with Asynchronous httpx client support

[Description] :

    Subprober is a high-performance tool designed for probing and extracting vital information efficiently with Asynchronous concurrency performance

[Options]:

    [INPUT]:

        -f,    --filename               specify the filename containing a list of Urls to probe                                       
        -u,    --url                    specify a Url to probe and supports comma-separated values (-u google.com,https://hackerone.com)
        stdin/stdout                    subprober supports both stdin/stdout and enables -nc to pipe the output of subprober
                                      
    [PROBES]:

        -sc,    --status-code           display the status code of the host
        -tl,    --title                 display the title of host
        -sv,    --server                display the server name of the host
        -wc,    --word-count            display the HTTP response word count
        -lc,    --line-count            display the HTTP response line count
        -cl,    --content-length        display the HTTP response content length
        -l ,    --location              display the redirected location of the host
        -apt,   --application-type      display the content type of the host
        -ip,    --ipaddress             display the IPs of the host
        -cn,    --cname                 display the CNAMEs of the host
        -aaa,   --aaa-records           display the AAAA records of the host
        -htv,   --http-version          display the server supported HTTP version of the host
        -hrs,   --http-reason           display the reason for HTTP connection of the host
        -jarm,  --jarm-fingerprint      display the JARM fingerprint hash of the host
        -rpt,   --response-time         display the response time for the successful request
        -wss,   --websocket             display the server supports websockets
        -hash,  --hash                  display response body in hash format (supported hashes: md5, mmh3, simhash, sha1, sha256, sha512)
        -dmt,   --display-method        display the method of the HTTP request 
        -bp,    --body-preview          display the HTTP response body in first n number of characters (default: 100)
    
    [CONFIG]:

        -dhp,   --disable-http-probe    disables subprober from probing HTTP protocols and only for HTTPS when no protocol is specified
        -X,     --method                request methods to probe and get response (supported: get, post, head, put, delete, patch, trace, connect, options) (default: get)
        -H,     --header                add custom headers for probing and -H can be used multiple times to pass multiple header values (ex: -H application/json -H X-Forwarded-Host: 127.0.0.1)
        -ra,    --random-agent          enable Random User-Agent to use for probing and applies same to screenshots. (default: subprober/Alpha)
        -px,    --proxy                 specify a proxy to send the requests through it (ex: http://127.0.0.1:8080)
        -ar,    --allow-redirect        enable following redirections
        -maxr,  --max-redirection       set max value to follow redirections (default: 10)
        -http2, --http2                 enable to request with HTTP/2 support (default: Http/1.1)
        -sni,   --sni-hostname          set custom TLS SNI host name for requests.
        
    [MISCELLANEOUS]:
    
        -p,     --path                  specify a path or text file of paths for probing and getting results (example: -p admin.php or -p paths.txt)
        -pt,    --port                  set custom port for making HTTP request and default ports are 80,443 based on the url scheme
        -tls,   --tls                   grabs the TLS data for the requested host
    
    [HEADLESS]:

        -ss,    --screenshot            enable to take screenshots of the page using headless browsers with asynchronous performance
        -st,    --screenshot-timeout    set a timeout value for taking screenshots (default: 15) 
        -scp,   --system-chrome-path    specify the executable path of the chromedriver to use system chrome to take screenshots
        -pdf,   --save-pdf              enable to save the screenshot image in the pdf format (default: png)
        -HH ,   --screenshot-headers    add custom headers for authenticated screenshots
        -icb,   --include-bytes         enable to include the screenshot bytes in output when json output enabled
        -hos,   --headless-options      set additional chrome headless browser options and supports comma-separated values (-ho "--start-maximized")
        -sid,   --screenshot-idle       set custom idle time in seconds before taking screenshots (default: 1)
        -sp,    --screenshot-path       specify a directory path to store screenshot results (default: currentdir/screenshots)
                                       
    [MATCHERS]:

        -mc,    --match-code            match http response by specified status codes and supports comma-separated values (-mc 200,302)
        -mcr,   --match-code-range      match http response by specified status code range and supports single value (-mcr 200-299)
        -ms,    --match-string          match http response containing the specified string and supports comma-separated values (-ms admin,login)
        -mr,    --match-regex           match http response matching the specified regex and supports comma-separated values (-mr .*admin.*,.*login.*)
        -mpt,   --match-path            match http response by URL path and supports comma-separated values (-mpt /admin/wp-ajax.php,/wp-json)
        -ml,    --match-length          match http response by specified response length and supports comma-separated values (-ml 1024,2048)
        -mlc,   --match-line-count      match http response by specified response line count and supports comma-separated values (-mlc 10,50)
        -mwc,   --match-word-count      match http response by specified word count and supports comma-separated values (-mwc 100,500)
        -mrt,   --match-response-time   match http response exceeding the specified minimum response time in seconds (-mrt 2.30)

    [FILTERS]:

        -fc,    --filter-code           filter http response by specified status codes and supports comma-separated values (-fc 404,500)
        -fcr,   --filter-code-range     filter http response by specified status code range and supports single value (-fcr 400-499)
        -fs,    --filter-string         filter http response containing the specified string and supports comma-separated values (-fs error,not found)
        -fr,    --filter-regex          filter http response matching the specified regex and supports comma-separated values (-fr .*admin.*,.*login.*)
        -fpt,   --filter-path           filter http response by URL path and supports comma-separated values (-fpt /error,404.html)
        -fl,    --filter-length         filter http response by specified response length and supports comma-separated values (-fl 1024,2048)
        -flc,   --filter-line-count     filter http response by specified response line count and supports comma-separated values (-flc 10,50)
        -fwc,   --filter-word-count     filter http response by specified response word count and supports comma-separated values (-fwc 100,500)
        -frt,   --filter-response-time  filter http response exceeding the specified maximum response time in seconds (-frt 2.30)

    [OUTPUT]:
    
        -o,     --output                define the output filename to store the results of the probing operation.
        -das,   --disable-auto-save     disable the auto-save of results when no output file is specified.
        -J,     --json                  store and display output in JSON format (includes only data from enabled options).
        -rdu,   --redirect-urls         display the redirect URLs in the output (requires -J and -ar to enabled to enabled).
        -rdh,   --redirect-history      display the full redirect history (requires -J and -ar to enabled).
        -rsc,   --redirect-status-codes display the status codes for redirections (requires -J and -ar to enabled).
        -rqh,   --request-headers       include request headers in the output (requires -J and -ar to enabled).
        -rsh,   --response-headers      include response headers in the output (requires -J and -ar to enabled).
        -fo,    --full-output           include all available data in the output (requires -J to enabled and doesn't overrides websocket,jarm,hashes options).

    [RATE-LIMIT]:

        -c,     --concurrency           set the concurrency level for sending http requests (default: 100)
        -rtl,   --rate-limit            set a rate limit for sending a maximum number of requests per second (default: 1000)
        -sct,   --screenshot-threads    set a threads level for taking screenshots (default: 40)
        
    [Optimization]:
    
        -to,    --timeout               set a custom timeout value for sending requests.
        -d,     --delay                 set a delay in seconds before sending each request (default: 0.5)
        -rts,   --retries               set a number of retries if a request fails to connect (default: 0)
        
    [UPDATES]:
    
        -up,    --update                update subprober to the latest version (pip required to be installed)
        -sup,   --show-updates          display the current or latest version of subprober updates 
        
    [DEBUG]:

        -h,     --help                  display this help message and exit!
        -s,     --silent                enable silent mode to suppress the display of Subprober banner and version information.
        -v,     --verbose               enable verbose mode to display error results on the console.
        -nc,    --no-color              enable to display the output without any CLI colors

About:

The SubProber is a cutting-edge tool developed by RevoltSecurities to empower Security Researchers and Penetration Testers. Designed with efficiency and precision in mind, SubProber streamlines reconnaissance and enhances vulnerability detection. Released under the MIT License, it reflects our commitment to fostering innovation and collaboration within the open-source community.

At RevoltSecurities, we aim to support researchers by providing advanced automation tools that simplify complex tasks, enabling professionals to focus on securing modern infrastructures.

About

Subprober is a powerful and efficient subdomain scanning tool written in Python. With the ability to handle large lists of subdomains. The tool offers concurrent scanning, allowing users to define their preferred concurrency level for faster results. Whether you are on Linux, Windows, or macos

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages