{"id":49880773,"url":"https://github.com/grassleaff/iptorch","last_synced_at":"2026-05-15T14:07:44.142Z","repository":{"id":319192739,"uuid":"1073307876","full_name":"grassleaff/iptorch","owner":"grassleaff","description":"iptorch is a IP rotator tool for periodically change Tor exit IP, written in Bash and with multiple utils built-in to turn everything more easy to you.","archived":false,"fork":false,"pushed_at":"2025-12-03T12:07:24.000Z","size":36,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-02-20T06:48:58.942Z","etag":null,"topics":["anonymize","anonymous","bash-script","ethical-hacking","ethical-hacking-tools","ip-changer","ipchanger","network","socks5","tor-network"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/grassleaff.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-10-09T23:21:11.000Z","updated_at":"2025-12-03T12:07:28.000Z","dependencies_parsed_at":"2025-10-18T11:35:56.396Z","dependency_job_id":null,"html_url":"https://github.com/grassleaff/iptorch","commit_stats":null,"previous_names":["exzygo/iptorch","nothingburguer/iptorch","grassleaff/iptorch"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/grassleaff/iptorch","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grassleaff%2Fiptorch","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grassleaff%2Fiptorch/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grassleaff%2Fiptorch/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grassleaff%2Fiptorch/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/grassleaff","download_url":"https://codeload.github.com/grassleaff/iptorch/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grassleaff%2Fiptorch/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33068935,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-15T11:35:32.926Z","status":"ssl_error","status_checked_at":"2026-05-15T11:35:31.362Z","response_time":103,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["anonymize","anonymous","bash-script","ethical-hacking","ethical-hacking-tools","ip-changer","ipchanger","network","socks5","tor-network"],"created_at":"2026-05-15T14:07:43.046Z","updated_at":"2026-05-15T14:07:44.131Z","avatar_url":"https://github.com/grassleaff.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg width=\"400\" height=\"400\" alt=\"iptorch-frame-white\" src=\"https://github.com/user-attachments/assets/776ec437-b956-47ae-92db-09beb79f3728\" /\u003e\n\u003cp/\u003e\n\n---\n\n![Bash Script](https://img.shields.io/badge/bash_script-%23121011.svg?style=for-the-badge\u0026logo=gnu-bash\u0026logoColor=white)\n[![Tor](https://img.shields.io/badge/Tor-7D4698?style=for-the-badge\u0026logo=Tor-Browser\u0026logoColor=white)](https://www.torproject.org/)\n[![Licence](https://img.shields.io/badge/GPL--2.0-red?style=for-the-badge)](./LICENSE)\n\n\n**iptorch** is a Bash CLI tool that automates IP rotation through the Tor network using the ControlPort protocol. The script sends the SIGNAL NEWNYM command to Tor to request a new circuit, and consequently a new IP, at user-configurable intervals.\n\n\nCommunication with ControlPort is done via **netcat (nc)** or **socat**, with automatic fallback to service reload if authentication fails. The script supports authentication via password (HashedControlPassword) or via cookie (control.authcookie), detecting the default paths used by Tor.\n\n\nThe tool exposes a classic command line interface via getopts, allowing you to specify:\n\n| Flag       | Function                                                                  |\n| :---:      | :---:                                                                     |\n| `-s`       | **SECONDS** - Interval between IP changes                                 |\n| `-c`       | **COUNT** - Number of rotations (0 = infinite)                            |\n| `-p`       | **CONTROL_PORT** - Tor ControlPort port (default: 9051)                   |\n| `-P`       | **PASSWORD** - Password set in torrc                                      |\n| `-t`       | **SOCKS_PORT** - Tor SOCKS port (default: 9050)                           |\n| `-S`       | **SERVICE STAND MODE** - Does not terminate the Tor service when exiting  |\n| `-C / -w`  | Displays **COPYRIGHT** and **WARRANTY** information (GPLv2)               |\n\nDuring execution, the script:\n\n\n- **Checks root privileges** (required to manipulate services).\n- **Detects the active service manager** (`systemd`, `sysvinit`, `openrc`, `runit`, `s6`) and starts Tor.\n- **Attempts to authenticate on ControlPort**, prioritising `AUTHENTICATE` with password or cookie.\n- **Repeatedly sends SIGNAL NEWNYM**, respecting the configured interval.\n- Optionally, displays the current IP and geolocation via `curl + jq` using Tor's SOCKS proxy.\n\n\nThe script uses trap to capture shutdowns (SIGINT, SIGTERM) and ensure a clean shutdown of the Tor service, except when the -S flag is used.\n\n## 📦 Dependencies\n\nTo ensure the script works properly, the following dependencies are recommended:\n\n| Dependency                                               | Reason                                       |\n| :---:                                                    | :---:                                        |\n| `tor`                                                    | Tor service for IP rotation                  |\n| `curl`                                                   | IP query via Tor proxy                       |\n| `jq`                                                     | JSON parser for geolocation                  |\n| `nc` *(netcat)* or `socat`                               | Communication with ControlPort               |\n| `xxd` or `od`                                            | Conversion of authentication cookie to HEX   |\n| `systemctl` / `service` / `rc-service` / `sv` / `s6-rc`  | Tor service control                          |\n\n\u003e **NOTE:** Without `nc` or `socat`, the script enters fallback mode, attempting to `reload` Tor instead of `SIGNAL NEWNYM`.\n\n\n## Installation\n\nClone the repository and grant execution permission:\n\n```\ngit clone https://github.com/letterfenceglasses/iptorch.git\ncd iptorch\nchmod +x src/iptorch\nsudo cp src/iptorch /usr/local/bin/iptorch\n```\n\n## Licence\n\nDistributed under **GNU GPLv2**. Free to modify and redistribute, without warranty, see `iptorch -C` and `iptorch -w` to display the licence and warranty notices directly via the CLI.\n\n---\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgrassleaff%2Fiptorch","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgrassleaff%2Fiptorch","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgrassleaff%2Fiptorch/lists"}