PyMultitor


NamePyMultitor JSON
Version 4.0.0 PyPI version JSON
download
home_pagehttps://github.com/realgam3/pymultitor
SummaryPyMultitor - Never Stop Even If Your IP Dropped.
upload_time2024-01-06 10:46:09
maintainer
docs_urlNone
authorTomer Zait (realgam3)
requires_python>=3.10
licenseGPLv3
keywords
VCS
bugtrack_url
requirements stem mitmproxy requests
Travis-CI No Travis.
coveralls test coverage No coveralls.
            ## PyMultiTor

[![PyPI version](https://img.shields.io/pypi/v/pymultitor)](https://pypi.org/project/pymultitor/)
[![Downloads](https://pepy.tech/badge/pymultitor)](https://pepy.tech/project/pymultitor)
![PyPI - Python Version](https://img.shields.io/pypi/pyversions/pymultitor)  

Python Multi Threaded Tor Proxy,  
Did you ever want to be at two different places at the same time?  
When I asked myself this question, I actually started developing this solution in my mind.  
While performing penetration tests there are often problems caused by security devices that block the "attacking" IP.  
This really annoyed me, so I wrote a script to supply a solution for this problem.  
With a large number of IP addresses performing the attacks, better results are guaranteed - especially when attempting
attacks to bypass Web Application Firewalls, Brute-Force type attacks and many more.

[Blackhat Asia] https://www.blackhat.com/asia-17/arsenal.html#pymultitor  
[Owasp-IL Presentation] https://www.owasp.org/images/3/3d/OWASPIL-2016-02-02_PyMultiTor_TomerZait.pdf  
[DigitalWhisper Article (Hebrew)] http://www.digitalwhisper.co.il/files/Zines/0x2E/DW46-3-PyMultitor.pdf

![Logo](https://raw.githubusercontent.com/realgam3/pymultitor/master/assets/img/pymultitor-logo.png)

## Installation

### Prerequisites

* Python 3.10+.
* mitmproxy (https://mitmproxy.org/).
* tor.
    * On Ubuntu / Kali, `sudo apt install -y tor`
    * On Centos, `sudo yum install -y tor`
    * On Fedora, `sudo dnf install -y tor`
    * On Windows,
        * download tor expert bundle: https://www.torproject.org/download/tor/
        * insert tor to your path environment: `{tor-win32-*_path}\Tor`
        * if you don't know how remember tor.exe path and use `--tor-cmd` argument on pymultitor (for
          example: `pymultitor --tor-cmd "c:\Pentest\Web\tor-win32-0.2.9.9\Tor\tor.exe"`)
    * On MacOS, `brew install tor`

### From pip

```shell
pip3 install pymultitor
```

### From Docker

```shell
docker pull realgam3/pymultitor
```

### From Source

```shell
git clone https://github.com/realgam3/pymultitor.git
cd pymultitor

# Install python dependencies.
# Depending on your setup, one or both of these may require sudo.
pip3 install -r requirements.txt
python3 setup.py install

# Confirm that everything works
pymultitor --help
```

Bug reports on installation issues are welcome!

## Usage

### Basic Usage

1. Run `pymultitor --on-string "Your IP Address Blocked"`.  
2. On your script use proxy (`http://127.0.0.1:8080`).  
   When the string `Your IP Address Blocked` will present in the response content, you will exit from another IP address.  

### Docker Usage

1. Run `docker run --rm -p 8080:8080 realgam3/pymultitor --on-string "Your IP Address Blocked"`.  
2. On your script use proxy (`http://127.0.0.1:8080`).  
   When the string `Your IP Address Blocked` will present in the response content, you will exit from another IP address.  


### Command Line Arguments

```shell
pymultitor --help
```

```text
usage: pymultitor [-h] [-v] [-lh LISTEN_HOST] [-lp LISTEN_PORT] [-s] [-a AUTH] [-i] [-d] [-p PROCESSES] [-c CMD] [-e CONFIG] [-t TIMEOUT] [-r TRIES] [--on-count ON_COUNT] [--on-string ON_STRING] [--on-regex ON_REGEX] [--on-rst] [--on-status-code ON_STATUS_CODE]

options:
  -h, --help            show this help message and exit
  -v, --version         show program's version number and exit
  -lh LISTEN_HOST, --host LISTEN_HOST
                        proxy listen host. (default: 127.0.0.1)
  -lp LISTEN_PORT, --port LISTEN_PORT
                        proxy listen port (default: 8080)
  -s, --socks           use as socks proxy (not http proxy) (default: False)
  -a AUTH, --auth AUTH  set proxy authentication (format: 'username:pass') (default: )
  -i, --insecure        insecure ssl (default: False)
  -d, --debug           Debug Log. (default: False)
  -p PROCESSES, --tor-processes PROCESSES
                        number of tor processes in the cycle (default: 2)
  -c CMD, --tor-cmd CMD
                        tor cmd (executable path + arguments) (default: tor)
  -e CONFIG, --tor-config CONFIG
                        tor extended json configuration (default: {})
  -t TIMEOUT, --tor-timeout TIMEOUT
                        number of seconds before our attempt to start a tor instance timed out (default: 90)
  -r TRIES, --tor-tries TRIES
                        number tries to start a tor instance before it fails (default: 5)
  --on-count ON_COUNT   change ip every x requests (resources also counted) (default: 0)
  --on-string ON_STRING
                        change ip when string found in the response content (default: )
  --on-regex ON_REGEX   change ip when regex found in The response content (default: )
  --on-rst              change ip when connection closed with tcp rst (default: False)
  --on-status-code ON_STATUS_CODE
                        change ip when a specific status code returned (default: 0)
```

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/realgam3/pymultitor",
    "name": "PyMultitor",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.10",
    "maintainer_email": "",
    "keywords": "",
    "author": "Tomer Zait (realgam3)",
    "author_email": "realgam3@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/75/fb/adc9e0ae38ab1bbbc13f6b4c2e991a14372091f51a637a6342d4430bf377/PyMultitor-4.0.0.tar.gz",
    "platform": "any",
    "description": "## PyMultiTor\n\n[![PyPI version](https://img.shields.io/pypi/v/pymultitor)](https://pypi.org/project/pymultitor/)\n[![Downloads](https://pepy.tech/badge/pymultitor)](https://pepy.tech/project/pymultitor)\n![PyPI - Python Version](https://img.shields.io/pypi/pyversions/pymultitor)  \n\nPython Multi Threaded Tor Proxy,  \nDid you ever want to be at two different places at the same time?  \nWhen I asked myself this question, I actually started developing this solution in my mind.  \nWhile performing penetration tests there are often problems caused by security devices that block the \"attacking\" IP.  \nThis really annoyed me, so I wrote a script to supply a solution for this problem.  \nWith a large number of IP addresses performing the attacks, better results are guaranteed - especially when attempting\nattacks to bypass Web Application Firewalls, Brute-Force type attacks and many more.\n\n[Blackhat Asia] https://www.blackhat.com/asia-17/arsenal.html#pymultitor  \n[Owasp-IL Presentation] https://www.owasp.org/images/3/3d/OWASPIL-2016-02-02_PyMultiTor_TomerZait.pdf  \n[DigitalWhisper Article (Hebrew)] http://www.digitalwhisper.co.il/files/Zines/0x2E/DW46-3-PyMultitor.pdf\n\n![Logo](https://raw.githubusercontent.com/realgam3/pymultitor/master/assets/img/pymultitor-logo.png)\n\n## Installation\n\n### Prerequisites\n\n* Python 3.10+.\n* mitmproxy (https://mitmproxy.org/).\n* tor.\n    * On Ubuntu / Kali, `sudo apt install -y tor`\n    * On Centos, `sudo yum install -y tor`\n    * On Fedora, `sudo dnf install -y tor`\n    * On Windows,\n        * download tor expert bundle: https://www.torproject.org/download/tor/\n        * insert tor to your path environment: `{tor-win32-*_path}\\Tor`\n        * if you don't know how remember tor.exe path and use `--tor-cmd` argument on pymultitor (for\n          example: `pymultitor --tor-cmd \"c:\\Pentest\\Web\\tor-win32-0.2.9.9\\Tor\\tor.exe\"`)\n    * On MacOS, `brew install tor`\n\n### From pip\n\n```shell\npip3 install pymultitor\n```\n\n### From Docker\n\n```shell\ndocker pull realgam3/pymultitor\n```\n\n### From Source\n\n```shell\ngit clone https://github.com/realgam3/pymultitor.git\ncd pymultitor\n\n# Install python dependencies.\n# Depending on your setup, one or both of these may require sudo.\npip3 install -r requirements.txt\npython3 setup.py install\n\n# Confirm that everything works\npymultitor --help\n```\n\nBug reports on installation issues are welcome!\n\n## Usage\n\n### Basic Usage\n\n1. Run `pymultitor --on-string \"Your IP Address Blocked\"`.  \n2. On your script use proxy (`http://127.0.0.1:8080`).  \n   When the string `Your IP Address Blocked` will present in the response content, you will exit from another IP address.  \n\n### Docker Usage\n\n1. Run `docker run --rm -p 8080:8080 realgam3/pymultitor --on-string \"Your IP Address Blocked\"`.  \n2. On your script use proxy (`http://127.0.0.1:8080`).  \n   When the string `Your IP Address Blocked` will present in the response content, you will exit from another IP address.  \n\n\n### Command Line Arguments\n\n```shell\npymultitor --help\n```\n\n```text\nusage: pymultitor [-h] [-v] [-lh LISTEN_HOST] [-lp LISTEN_PORT] [-s] [-a AUTH] [-i] [-d] [-p PROCESSES] [-c CMD] [-e CONFIG] [-t TIMEOUT] [-r TRIES] [--on-count ON_COUNT] [--on-string ON_STRING] [--on-regex ON_REGEX] [--on-rst] [--on-status-code ON_STATUS_CODE]\n\noptions:\n  -h, --help            show this help message and exit\n  -v, --version         show program's version number and exit\n  -lh LISTEN_HOST, --host LISTEN_HOST\n                        proxy listen host. (default: 127.0.0.1)\n  -lp LISTEN_PORT, --port LISTEN_PORT\n                        proxy listen port (default: 8080)\n  -s, --socks           use as socks proxy (not http proxy) (default: False)\n  -a AUTH, --auth AUTH  set proxy authentication (format: 'username:pass') (default: )\n  -i, --insecure        insecure ssl (default: False)\n  -d, --debug           Debug Log. (default: False)\n  -p PROCESSES, --tor-processes PROCESSES\n                        number of tor processes in the cycle (default: 2)\n  -c CMD, --tor-cmd CMD\n                        tor cmd (executable path + arguments) (default: tor)\n  -e CONFIG, --tor-config CONFIG\n                        tor extended json configuration (default: {})\n  -t TIMEOUT, --tor-timeout TIMEOUT\n                        number of seconds before our attempt to start a tor instance timed out (default: 90)\n  -r TRIES, --tor-tries TRIES\n                        number tries to start a tor instance before it fails (default: 5)\n  --on-count ON_COUNT   change ip every x requests (resources also counted) (default: 0)\n  --on-string ON_STRING\n                        change ip when string found in the response content (default: )\n  --on-regex ON_REGEX   change ip when regex found in The response content (default: )\n  --on-rst              change ip when connection closed with tcp rst (default: False)\n  --on-status-code ON_STATUS_CODE\n                        change ip when a specific status code returned (default: 0)\n```\n",
    "bugtrack_url": null,
    "license": "GPLv3",
    "summary": "PyMultitor - Never Stop Even If Your IP Dropped.",
    "version": "4.0.0",
    "project_urls": {
        "Homepage": "https://github.com/realgam3/pymultitor",
        "Source": "https://github.com/realgam3/pymultitor"
    },
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "0078ce69646e3e90ef8b1554ef5461e911e87614f56541309880261fed6cdda2",
                "md5": "69c7a9b83600ec856d357f5c21aa2d1a",
                "sha256": "45d11a25cced2c7545cc5739f7b5b19bb5bca949c84c4a0eade7e2263d385efb"
            },
            "downloads": -1,
            "filename": "PyMultitor-4.0.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "69c7a9b83600ec856d357f5c21aa2d1a",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.10",
            "size": 21043,
            "upload_time": "2024-01-06T10:46:08",
            "upload_time_iso_8601": "2024-01-06T10:46:08.236380Z",
            "url": "https://files.pythonhosted.org/packages/00/78/ce69646e3e90ef8b1554ef5461e911e87614f56541309880261fed6cdda2/PyMultitor-4.0.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "75fbadc9e0ae38ab1bbbc13f6b4c2e991a14372091f51a637a6342d4430bf377",
                "md5": "b0a9c7497d0c2b47b99995a2a4a33c87",
                "sha256": "7d87ee9230911b323d9313f6482c13911c3c2f480e0c76750242beabcc3523ef"
            },
            "downloads": -1,
            "filename": "PyMultitor-4.0.0.tar.gz",
            "has_sig": false,
            "md5_digest": "b0a9c7497d0c2b47b99995a2a4a33c87",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.10",
            "size": 21031,
            "upload_time": "2024-01-06T10:46:09",
            "upload_time_iso_8601": "2024-01-06T10:46:09.941253Z",
            "url": "https://files.pythonhosted.org/packages/75/fb/adc9e0ae38ab1bbbc13f6b4c2e991a14372091f51a637a6342d4430bf377/PyMultitor-4.0.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-01-06 10:46:09",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "realgam3",
    "github_project": "pymultitor",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "requirements": [
        {
            "name": "stem",
            "specs": [
                [
                    ">=",
                    "1.8.2"
                ]
            ]
        },
        {
            "name": "mitmproxy",
            "specs": [
                [
                    ">=",
                    "10.1.6"
                ]
            ]
        },
        {
            "name": "requests",
            "specs": [
                [
                    ">=",
                    "2.31.0"
                ]
            ]
        }
    ],
    "lcname": "pymultitor"
}
        
Elapsed time: 0.16298s