Skip to content

Simple RDP

A Python RDP client library designed for automation purposes.

CI codecov PyPI Python

Overview

Unlike traditional RDP clients, Simple RDP does not provide an interactive session. Instead, it exposes screen capture and input transmission capabilities for building automation workflows.

Features

  • Screen Capture


    Capture the remote desktop screen as PIL Images with up to 30 FPS performance

    Learn more

  • Mouse Input


    Send mouse movements, clicks, drags, and wheel scrolling with precise control

    Learn more

  • Keyboard Input


    Send keyboard keys, type text, and execute key combinations

    Learn more

  • NLA/CredSSP Authentication


    Full support for Network Level Authentication with NTLM

    Quick start

  • Async Support


    Built with asyncio for non-blocking operations and high concurrency

    API Reference

  • High Performance


    Native Rust extension for fast RLE bitmap decompression

    Performance

Quick Example

import asyncio
from simple_rdp import RDPClient


async def main():
    async with RDPClient(
        host="192.168.1.100",
        username="admin",
        password="secret",
        width=1920,
        height=1080,
    ) as client:
        # Wait for screen to render
        await asyncio.sleep(2)

        # Capture screenshot
        img = await client.screenshot()  # (1)!
        img.save("desktop.png")

        # Click somewhere
        await client.mouse_click(500, 300)  # (2)!

        # Type some text
        await client.send_text("Hello, World!")  # (3)!


asyncio.run(main())
  1. Returns a PIL Image object that can be saved, processed, or analyzed
  2. Coordinates are relative to the top-left corner of the desktop
  3. Sends each character as a Unicode key event

Requirements

System Requirements

  • Python 3.11+ — Required for modern async features
  • Windows RDP Server — Must have NLA (Network Level Authentication) enabled

Security Notice

This library does NOT validate TLS certificates when connecting to RDP servers. Only use in trusted network environments.

Next Steps