{"id":18765790,"url":"https://github.com/0xinfection/siptorch","last_synced_at":"2025-10-31T19:03:31.281Z","repository":{"id":107990866,"uuid":"288755114","full_name":"0xInfection/SIPTorch","owner":"0xInfection","description":"A \"SIP Torture\" (RFC 4475) testing framework.","archived":false,"fork":false,"pushed_at":"2023-04-19T19:01:37.000Z","size":342,"stargazers_count":64,"open_issues_count":1,"forks_count":9,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-04-10T10:58:36.339Z","etag":null,"topics":["audit","parser","rfc3261","rfc4475","security-hardening","security-tools","sip","sip-parser","sip-security","sip-torture","voip","voip-security"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/0xInfection.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-08-19T14:32:09.000Z","updated_at":"2024-09-21T20:58:47.000Z","dependencies_parsed_at":"2023-03-14T07:00:32.127Z","dependency_job_id":null,"html_url":"https://github.com/0xInfection/SIPTorch","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0xInfection%2FSIPTorch","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0xInfection%2FSIPTorch/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0xInfection%2FSIPTorch/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0xInfection%2FSIPTorch/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/0xInfection","download_url":"https://codeload.github.com/0xInfection/SIPTorch/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248669508,"owners_count":21142889,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["audit","parser","rfc3261","rfc4475","security-hardening","security-tools","sip","sip-parser","sip-security","sip-torture","voip","voip-security"],"created_at":"2024-11-07T18:35:15.733Z","updated_at":"2025-10-31T19:03:26.249Z","avatar_url":"https://github.com/0xInfection.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003e\n  \u003cbr\u003e\n  \u003ca href=\"https://github.com/0xinfection/siptorch\"\u003e\u003cimg src=\"https://i.imgur.com/Iux2GzGl.png\" alt=\"siptorch\"/\u003e\u003c/a\u003e\n  \u003cbr\u003e\n  \u003cbr\u003e\n  SIPTorch\n\u003c/h1\u003e\n\u003ch4 align=\"center\"\u003eA \"SIP Torture\" (\u003ca href=\"https://tools.ietf.org/html/rfc4475\"\u003eRFC 4475\u003c/a\u003e) testing suite.\u003c/h4\u003e\n\u003cp align=\"center\"\u003e  \n  \u003ca href=\"https://docs.python.org/3/download.html\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Python-3.x-green.svg\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/0xinfection/siptorch/releases\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Version-v0.1%20(stable)-blue.svg\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/0xinfection/siptorch/blob/master/LICENSE\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/License-GNU%20GPLv3-orange.svg\"\u003e\n  \u003c/a\u003e \n  \u003ca href=\"https://travis-ci.org/0xInfection/siptorch\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Build-Passing-brightgreen.svg?logo=travis\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n### About\n__SIPTorch__ is a testing suite for the [Session Initiation Protocol](https://tools.ietf.org/html/rfc3261). These tests, popularly known as SIP Torture Tests are primarily meant to harden and refine both the SIP protocol and its implementations. Hopefully this tool will help shaping SIP into a globally interoperable protocol for real time Internet communication services. \n\nPresently the tool implements the tests mentioned specifically in the [RFC 4475](https://tools.ietf.org/html/rfc4475), but future extensions to the modules is planned. The tests are divided into several sections - some stress the parser, some test the implementation of application/transaction layer semantics, some messages are themselves invalid, while others test backward compatibility. This tool however does not support IPv6 elements for now.\n\n### Highlights\n- [x] Implements full support for testing IPv4 elements.\n- [x] [48 modules](#modules) crafted precisely for accurate tests.\n- [x] User is in complete control of how the tool works.\n- [x] Report generation functionality in markdown format.\n- [x] Easily extensible modules library.\n\n### Modules\nPlease have a look at the [`modules.json`](https://github.com/0xInfection/SIPTorch/blob/master/libs/modules.json) for detailed version:\n- __Application Layer Semantics__\n    - 200 OK Response with Broadcast Via Header Field Value\n    - REGISTER with a Contact Header Parameter\n    - REGISTER with a URL in Contact Header Parameter\n    - INVITE Message Missing Required Header Fields\n    - Unknown/Invalid Content Type\n    - Invalid/Unacceptable Accept Offering\n    - Zero Value in Max-Forwards Header\n    - OPTIONS with Multiple Content-Length Values\n    - Multiple Values in Single Value Required Fields\n    - Request-URI with Known but Atypical Scheme\n    - REGISTER with a URL Escaped Header\n    - OPTIONS With Unknown Proxy-Require and Require Scheme\n    - Unknown/Invalid Authorization Scheme\n    - OPTIONS Request URI with Unknown Scheme\n    - Unknown Request URI with Unknown Scheme in Header Fields\n- __Backward Compatability Tests__\n    - INVITE With RFC 2543 Syntax Support\n- __Invalid Messages__\n    - Invalid Time Zone in Date Header Field\n    - Unterminated Quoted String in Display Names\n    - Response with Overlarge Status Code\n    - Content Length Larger Than Message\n    - Request Method with CSeq Method Mismatch\n    - Escaped Headers in SIP Request-URI\n    - Extraneous Header Field Separators\n    - Negative Content-Length\n    - Non-token Characters in Display Name\n    - `\u003c/\u003e` Enclosing Request-URI\n    - Multiple Space Separating Request-Line Elements\n    - Malformed SIP Request-URI with Embedded LWS\n    - Unknown Method with CSeq Method Mismatch\n    - Negative Content-Length\n    - Failure to Enclose name-addr URI in `\u003c\u003e`\n    - Request Scalar Fields with Overlarge Values\n    - Response Scalar Fields with Overlarge Values\n    - Spaces Within Address Specification\n    - Escaped Headers in SIP Request-URI\n    - Unknown Protocol Version\n- __Syntactical Parser Tests__\n    - Extra Trailing Octets in a UDP Datagram\n    - Use of `%` When It Is Not an Escape\n    - Escaped Nulls in URIs\n    - Valid Use of the `%` Escaping Mechanism\n    - Long Values in Header Fields\n    - Message with No LWS between Display Name and `\u003c`\n    - Multipart MIME Message\n    - Content Length Larger Than Message\n    - Semicolon-Separated Parameters in URI User Part\n    - Varied and Unknown Transport Types\n    - Unusual Reason Phrase\n- Transaction Layer Semantics\n    - Branch Tag Missing Transaction Identifier\n\n### Installation\nThe only external requirement for this tool is the [`pluginbase`](https://pypi.org/project/pluginbase) library, which can be easily installed using `pip`:\n```bash\npython3 -m pip install pluginbase\n```\nor\n```bash\npython3 -m pip install -r requirements.txt\n```\n\n### Usage\nHere is the help output from SIPTorch:\n```\n  SIPTorch - A SIP Torture Testing Suite\n           Version : v0.1.0\n\nusage: ./siptorch.py -u \u003curl/ip\u003e [options]\n\nRequired Arguments:\n  -u TARGET, --target TARGET\n                        Destination target to test\n\nOptional Arguments:\n  -p RPORT, --rport RPORT\n                        Destination port to use for sending packets to (default 5060)\n  -P LPORT, --lport LPORT\n                        Local source port to use for binding to (default 5060)\n  -o OUTPUT, --output OUTPUT\n                        Output directory to write results to\n  -d DELAY, --delay DELAY\n                        Specify delay in seconds between two subsequent requests\n  -t TIMEOUT, --timeout TIMEOUT\n                        Timeout value in seconds\n  -v, --verbose         Increase output verbosity, multiple -v increase verbosity\n  -q, --quiet           Decrease verbosity to lowest level\n  -V, --version         Display the version number and exit\n  --user-agent USER_AGENT\n                        Use custom user-agent\n  --spoof-ua            Spoof user-agents with every request\n  --build-cache         Build the modules cache (when a new module has been added)\n```\nFor a testbed, you'll require a URL/IP which talks SIP.  \nFor testing purposes you can use a publicly hosted testing server at `demo.sipvicious.pro`.\n\n- Examples:\n    - Basic example usage:\n    ```bash\n    ./siptorch.py -u sip.example.com --rport 5060 -v\n    ```\n    - Specify timeout and add delay between requests:\n    ```bash\n    ./siptorch.py -u sip.example.com --delay 2 --timeout 10\n    ```\n    - Spoof useragents with every request and add local port\n    ```bash\n    ./siptorch.py -u sip.example.com --spoof-ua --lport 5080 \n    ```\n    \nAfter performing all the tests, the results of the tool are stored in a markdown file under the `siptorch-output/` folder in your current working directory.\n\nFor more advanced usage, you can have a look at the [configuration variables](https://github.com/0xInfection/SIPTorch/blob/master/libs/config.py) and edit them as per your need. Then fire up the tool as you would normally do.\n\n### New modules\nSIPTorch has been designed in a very flexible way so as to allow easy extension of modules. Writing a new module involves these steps:\n- Decide which category of tests are you going to write a module on.\n- Look at some examples of modules under the category, and write yours.\n- Put it inside the specific folder under `modules/` directory.\n- Run `./siptorch.py --build-cache` to generate the updated `modules.json`.\n- Test the module on a target and check whether the results are intended.\n- Submit a [pull request](https://github.com/0xInfection/SIPTorch/pulls). :)\n\n### Version \u0026 License\nThe present codebase of SIPTorch is presently tagged as `v0.1.0` release. SIPTorch is licensed under the GNU General Public License (v3).\n```bash\n$ ./siptorch.py --version\n\n  SIPTorch - A SIP Torture Testing Suite\n           Version : v0.1.0\n\n[+] SIPTorch Version: 0.1.0\n[+] SIPTorch License: GNU General Public License v3 (GPLv3)\n```\n\n### Author's Words\nThis project was made by me out of sheer interest and curiousity when I was exploring the Session Initiation Protocol. The inspiration behind this is [sipvicious](https://github.com/enablesecurity/sipvicious) and my guru [Sandro Gauci](https://twitter.com/sandrogauci) who was gracious enough to allow me to explore this field under his wing. \n\nNew ideas and pull requests are welcome. If you have any trouble, you can always [pull an issue up](https://github.com/0xInfection/SIPTorch/issues/new)!\n\n\u003e Crafted with ❤️ by [@0xInfection](https://twitter.com/0xInfection)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F0xinfection%2Fsiptorch","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F0xinfection%2Fsiptorch","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F0xinfection%2Fsiptorch/lists"}