Simple RDP¶
A Python RDP client library designed for automation purposes.
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
-
Mouse Input
Send mouse movements, clicks, drags, and wheel scrolling with precise control
-
Keyboard Input
Send keyboard keys, type text, and execute key combinations
-
NLA/CredSSP Authentication
Full support for Network Level Authentication with NTLM
-
Async Support
Built with asyncio for non-blocking operations and high concurrency
-
High Performance
Native Rust extension for fast RLE bitmap decompression
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())
- Returns a PIL
Imageobject that can be saved, processed, or analyzed - Coordinates are relative to the top-left corner of the desktop
- 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¶
-
Get Simple RDP installed with pip
-
Connect to your first RDP server
-
Full API documentation