Metadata-Version: 2.1
Name: WebServerIdentifier
Version: 0.0.1
Summary: This package identifies Web servers using an aggressive technique based on the maximum size of the URI.
Home-page: https://github.com/mauricelambert/WebServerIdentifier
Author: Maurice Lambert
Author-email: mauricelambert434@gmail.com
Maintainer: Maurice Lambert
Maintainer-email: mauricelambert434@gmail.com
License: GPL-3.0 License
Project-URL: Documentation, https://mauricelambert.github.io/info/python/security/WebServerIdentifier.html
Project-URL: Executable, https://mauricelambert.github.io/info/python/security/WebServerIdentifier.pyz
Keywords: ARP,arpcachepoisonning,arpcachepoison,network,ManInTheMiddle,MIM,Security,DoS,DenialOfService
Platform: Windows
Platform: Linux
Platform: MacOS
Classifier: Programming Language :: Python
Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: Web Environment
Classifier: Environment :: Console
Classifier: Topic :: Security
Classifier: Topic :: Internet :: WWW/HTTP :: HTTP Servers
Classifier: Natural Language :: English
Classifier: Programming Language :: Python :: 3.9
Classifier: Operating System :: POSIX :: Linux
Classifier: Operating System :: Microsoft :: Windows
Classifier: Operating System :: MacOS
Requires-Python: >=3.6
Description-Content-Type: text/markdown
License-File: LICENSE.txt

![WebServerIdentifier logo](https://mauricelambert.github.io/info/python/security/WebServerIdentifier_small.png "WebServerIdentifier logo")

# WebServerIdentifier

## Description

This package identifies Web servers using an aggressive technique based on the maximum size of the URI.

## Requirements

This package require:
 - python3
 - python3 Standard Library
 - PythonToolsKit

## Installation

```bash
pip install WebServerIdentifier
```

## Usages

### Command lines

```bash
python3 -m WebServerIdentifier -h                    # Use python module
python3 WebServerIdentifier.pyz --help               # Use python executable

WebIdentify -d -v -m HEAD identify 127.0.0.1         # Use console script entry point
WebIdentify -i 1 identify 127.0.0.1:8000             # Spoof multiple targets (verbose mode)
WebIdentify -m HEAD getmaxuri 127.0.0.1:8000         # Spoof range of targets
WebIdentify -d -v -m HEAD -i 1 getmaxuri 127.0.0.1   # Spoof all network

WebIdentify 127.0.0.1 127.0.0.0/29 -s -t 1   # Semi (spoof only gateway IP for the targets, interval is 1 seconds)
WebIdentify 127.0.0.1 127.0.0.0/29 -i 127.0. # Use the loopback interface

WebIdentify 172.16.10.1 172.16.0.33 -p       # Passive mode
```

### Python3

```python
from WebServerIdentifier import WebServerIdentifier, _create_unverified_context

identifier = WebServerIdentifier("127.0.0.1", baseuri="/", ssl=True, context=_create_unverified_context(), port=8000, interval=0.5, timeout=2)
identifier = WebServerIdentifier("127.0.0.1")

response = identifier.request()
response.status
response.reason

r = identifier.request(method="HEAD", size=65535)
r.status
r.reason

generator = identifier.get_max_URI_size()
size = 0

while size is not None:
	last_size = size; size, response = next(generator)

generator = identifier.get_max_URI_size(method="HEAD")
generator = identifier.identify_server()
generator = identifier.identify_server(method="HEAD")

response = 0
while response is not None:
	response, size, servers = next(generator)

maxsize, target_server = servers.popitem()
```

## Links

 - [Github Page](https://github.com/mauricelambert/WebServerIdentifier)
 - [Pypi](https://pypi.org/project/WebServerIdentifier/)
 - [Documentation](https://mauricelambert.github.io/info/python/security/WebServerIdentifier.html)
 - [Executable](https://mauricelambert.github.io/info/python/security/WebServerIdentifier.pyz)

## Help

```text
usage: WebServerIdentifier.py [-h] [--method METHOD] [--baseuri BASEURI] [--interval INTERVAL] [--ssl] [--timeout TIMEOUT] [--verbose] [--debug] {identify,getmaxuri} target

This package identifies target's web server.

positional arguments:
  {identify,getmaxuri}  Identify the target's web server or get the maximum size of the URI.
  target                Host targeted (examples: 10.101.10.101:8000, example.com)

optional arguments:
  -h, --help            show this help message and exit
  --method METHOD, -m METHOD
                        HTTP method to request the Web Server
  --baseuri BASEURI, -b BASEURI
                        Base URI to request the target.
  --interval INTERVAL, -i INTERVAL
                        Requests interval.
  --ssl, -s             Use HTTPS (SSL, encryption).
  --timeout TIMEOUT, -t TIMEOUT
                        Set timeout for HTTP requests.
  --verbose, -v         Active verbose mode.
  --debug, -d           Active debugging mode (set level debug for all loggers).
```

## Licence

Licensed under the [GPL, version 3](https://www.gnu.org/licenses/).

