OVERVIEW

A light, console-based reverse-shell manager and interactive listener written in Python 3. It allows you to accept and manage multiple reverse shell connections, select a client, and interact with it from a single terminal. (Version 1.1.0)

Legal & Ethical Notice: This tool can be used for offensive operations. Do not use it against networks, systems, or devices you do not own or for which you do not have explicit, written permission. Use only in your lab, on your machines, or within written scopes of authorized penetration tests.

Key Features

  • Listen for multiple reverse shell connections (TCP).
  • Auto-assign incremental client IDs.
  • Interactive console with commands like list, use <id>, helpsh, clear, and exit.
  • Per-client output handling (only output from the selected client is printed).
  • Non-blocking handling of multiple clients via threads and queues.
  • Shell one-liners (Bash, Python, PowerShell, etc.) included via helpsh.

Requirements

  • Software: Python 3.8+ recommended.
  • Python Modules: colorama and pygments.
    python3 -m pip install colorama pygments

WORKFLOW

  1. Start the listener on your lab machine: python3 smrs.py.
  2. From an authorized target, run a reverse shell payload that connects back to your listener IP/PORT.
  3. When a client connects, the handler will automatically notify you and select the client. (Example message: [+] Client 1 connected from 10.0.0.12:56789 [*] Auto-selected client 1)
  4. Use list to view connected clients.
  5. Use use <id> to select a different client.
  6. Type shell commands and press Enter; the output from the selected client will appear in your console.
  7. Use helpsh to view the bundled one-liners.

Command List

Command Description
list List current connections and which client is selected.
use <id> Switch to a client by its numeric ID.
help Display help menu.
helpsh Print reverse-shell one-liners (syntax highlighted).
clear / cls Clear console and reprint banner.
exit / quit Close all client sockets and exit.

Changing IP/PORT

Modify these variables at the top of the Python script and restart it:

IP = '10.0.0.5'      # used in the embedded payload templates
HOST = '0.0.0.0'     # interface to bind the listener
PORT = 4444          # listener port

SUPPORT

Troubleshooting

  • Nothing connects: Check the client payload's IP/port, ensure the listener is bound correctly (set HOST to 0.0.0.0 to listen on all interfaces), and check for firewall rules.
  • Client disconnects immediately: Look for payload errors on the client side (wrong quoting, missing interpreter), network drops, or NAT issues.
  • Encoding issues: The output is decode('utf-8', errors='ignore'), so some binary or non-UTF8 data may be ignored or mangled.
  • Permission issues binding to port < 1024: Use a higher port or run script with appropriate privileges.

Security Considerations

  • Do not expose the tool on untrusted networks or the public internet, as it accepts raw shell input/output over TCP.
  • Consider running the listener inside an isolated environment (VM, container) and inside an isolated network segment when testing.

LICENSE

MIT License

Copyright (c) 2025 MRITARI

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.