Execute commands interactively on remote Windows machines using the WinRM protocol (just faster)
# Add to your Claude Code skills
git clone https://github.com/adityatelange/evil-winrm-pyGuides for using mcp servers skills like evil-winrm-py.
Last scanned: 8/16/2026
{
"issues": [],
"status": "PASSED",
"scannedAt": "2026-08-16T04:34:08.428Z",
"npmAuditRan": true,
"pipAuditRan": true,
"promptInjectionRan": true
}evil-winrm-py is a python-based tool for executing commands on remote Windows machines using the WinRM (Windows Remote Management) protocol. It provides an interactive shell with enhanced features like file upload/download, command history, and colorized output. It supports various authentication methods including NTLM, Pass-the-Hash, Certificate, and Kerberos.

[!NOTE] This tool is designed strictly for educational, ethical use, and authorized penetration testing. Always ensure you have explicit authorization before accessing any system. Unauthorized access or misuse of this tool is both illegal and unethical.
The original evil-winrm is written in Ruby, which can be a hurdle for some users. Rewriting it in Python makes it more accessible and easier to use, while also allowing us to leverage Python’s rich ecosystem for added features and flexibility.
I also wanted to learn more about winrm and its internals, so this project will also serve as a learning experience for me.
Tab completion.Tab completion. 🆕up/down arrow keys.Includes support for:
Detailed documentation can be found in the docs directory.
sudo apt install gcc python3-dev libkrb5-dev krb5-pkinit
# Optional: krb5-user
evil-winrm-pyYou may use pipx or uv instead of pip to install evil-winrm-py.
pipx/uvis a tool to install and run Python applications in isolated environments, which helps prevent dependency conflicts by keeping the tool's dependencies separate from your system's Python packages.
pip install evil-winrm-py
pip install evil-winrm-py[kerberos] # for kerberos support on Linux
# Note: building gssapi and krb5 packages may take some time, so be patient.
or if you want to install with latest commit from the main branch you can do so by cloning the repository and installing it with pip/pipx/uv:
git clone https://github.com/adityatelange/evil-winrm-py
cd evil-winrm-py
pip install .
pip install .[mcp] # for optional MCP server support (requires Python 3.10+), not yet released on PyPI
pip install --upgrade evil-winrm-py
pip uninstall evil-winrm-py
Check Installation Guide for more details.
For above mentioned distributions, you can install evil-winrm-py directly from their package managers. Thanks to the package maintainers for packaging and maintaining evil-winrm-py in their respective distributions.
Details on how to use evil-winrm-py can be found in the Usage Guide.
usage: evil-winrm-py [-h] -i IP [-u USER] [-p PASSWORD] [-H HASH]
[--priv-key-pem PRIV_KEY_PEM] [--cert-pem CERT_PEM] [--uri URI]
[--ua UA] [--port PORT] [--spn-prefix SPN_PREFIX]
[--spn-hostname SPN_HOSTNAME] [-k] [--no-pass] [--ssl] [--log]
[--debug] [--no-colors] [--version] [--mcp] [--mcp-port MCP_PORT]
[--mcp-host MCP_HOST]
options:
-h, --help show this help message and exit
-i, --ip IP remote host IP or hostname
-u, --user USER username
-p, --password PASSWORD
password
-H, --hash HASH nthash
--priv-key-pem PRIV_KEY_PEM
local path to private key PEM file
--cert-pem CERT_PEM local path to certificate PEM file
--uri URI wsman URI (default: /wsman)
--ua UA user agent for the WinRM client (default: "Microsoft WinRM Client")
--port PORT remote host port (default 5985)
--spn-prefix SPN_PREFIX
specify spn prefix
--spn-hostname SPN_HOSTNAME
specify spn hostname
-k, --kerberos use kerberos authentication
--no-pass do not prompt for password
--ssl use ssl
--log log session to file
--debug enable debug logging
--no-colors disable colors
--version show version
--mcp start in MCP server in streamable HTTP mode (experimental
feature, requires the `mcp` extra, use with --mcp-port
and --mcp-host to customize the server address and
port if needed)
--mcp-port MCP_PORT port for MCP streamable HTTP mode (default 8000)
--mcp-host MCP_HOST host for MCP streamable HTTP mode (default 127.0.0.1)
For more information about this project, visit https://github.com/adityatelange/evil-winrm-py
For user guide, visit https://github.com/adityatelange/evil-winrm-py/blob/main/docs/usage.md
Example:
evil-winrm-py -i 192.168.1.100 -u Administrator -p P@ssw0rd --ssl
With the mcp extra installed, you can run evil-winrm-py as an MCP server, exposing WinRM login/execute/logout as tools for MCP-compatible clients (e.g. Claude, other AI agents) over streamable HTTP. It supports multiple concurrent WinRM sessions via a session_id.
evil-winrm-py --mcp
# or customize the address:
evil-winrm-py --mcp --mcp-host 0.0.0.0 --mcp-port 8000
[!NOTE] This is an experimental feature. Since it allows remote command execution on Windows hosts via MCP tools, only expose it on trusted networks and to trusted MCP clients.
Menu:
[+] services - Show the running services (except system services)
[+] upload <local_path> <remote_path> - Upload a file
[+] download <remote_path> <local_path> - Download a file
[+] loadps <local_path>.ps1 - Load PowerShell functions from a local script
[+] runps <local_path>.ps1 - Run a local PowerShell script on the remote host
[+] loaddll <local_path>.dll - Load a local DLL (in-memory) as a module on the remote host
[+] runexe <local_path>.exe [args] - Upload and execute (in-memory) a local EXE on the remote host
[+] menu - Show this menu
[+] clear, cls - Clear the screen
[+] exit - Exit the shell
Note: Use absolute paths for upload/download for reliability.
evil-winrm-py is an open-source mcp servers skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by adityatelange. Execute commands interactively on remote Windows machines using the WinRM protocol (just faster). It has 390 GitHub stars.
Yes. evil-winrm-py passed SkillsLLM's automated security scan — a dependency vulnerability audit plus prompt-injection heuristics — with no high-severity issues. You can read the full report in the Security Report section on this page.
Clone the repository with "git clone https://github.com/adityatelange/evil-winrm-py" and add it to your Claude Code skills directory (see the Installation section above).
evil-winrm-py is primarily written in Python. It is open-source under adityatelange on GitHub, so you can review or fork the full source.
Yes. SkillsLLM lists many other MCP Servers skills you can browse and compare side by side. Open the MCP Servers category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh evil-winrm-py against similar tools.
No comments yet. Be the first to share your thoughts!
Top skills in this category by stars