{"id":51174130,"url":"https://github.com/lamco-admin/lamco-rdp-tools","last_synced_at":"2026-06-27T02:31:12.397Z","repository":{"id":367650536,"uuid":"1281491298","full_name":"lamco-admin/lamco-rdp-tools","owner":"lamco-admin","description":"A toolkit of focused RDP utilities: rdpsee inspects a server, rdpdo drives a session.","archived":false,"fork":false,"pushed_at":"2026-06-26T22:27:56.000Z","size":191,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-27T00:31:51.705Z","etag":null,"topics":["automation","cli","ironrdp","rdp","rdp-client","remote-desktop","rust","screenshot","testing"],"latest_commit_sha":null,"homepage":"https://lamco.ai/products/lamco-rdp-tools/","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lamco-admin.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE-APACHE","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":"2026-06-26T15:56:25.000Z","updated_at":"2026-06-26T22:27:59.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/lamco-admin/lamco-rdp-tools","commit_stats":null,"previous_names":["lamco-admin/lamco-rdp-tools"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/lamco-admin/lamco-rdp-tools","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lamco-admin%2Flamco-rdp-tools","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lamco-admin%2Flamco-rdp-tools/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lamco-admin%2Flamco-rdp-tools/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lamco-admin%2Flamco-rdp-tools/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lamco-admin","download_url":"https://codeload.github.com/lamco-admin/lamco-rdp-tools/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lamco-admin%2Flamco-rdp-tools/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34839888,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-27T02:00:06.362Z","response_time":126,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["automation","cli","ironrdp","rdp","rdp-client","remote-desktop","rust","screenshot","testing"],"created_at":"2026-06-27T02:31:11.388Z","updated_at":"2026-06-27T02:31:12.391Z","avatar_url":"https://github.com/lamco-admin.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# lamco-rdp-tools\n\nA toolkit of small, focused RDP utilities built on the\n[IronRDP](https://github.com/Devolutions/IronRDP) protocol stack. It ships two\nstandalone binaries that are built, documented, and operated the same way:\n\n- **`rdpsee`** *(observe)* inspects a server and reports on it, and never drives\n  it: a connectionless pre-auth security scan (multi-target and CIDR), TLS\n  certificate inspection, a JA4-style server fingerprint, a negotiated\n  capability report, and a recon screenshot.\n- **`rdpdo`** *(act)* drives an authenticated session: keyboard and mouse input,\n  screen capture, visual matching, clipboard and file transfer, audio capture,\n  display control, provisioning, calibration, session record/replay, and\n  scripting. It is the headless RDP automation CLI that RDP never had, in the\n  spirit of `vncdotool` but much expanded.\n\nNeither tool needs a guest-side agent: both drive a standard RDP server over the\nwire. **Website:** \u003chttps://lamco.ai/products/lamco-rdp-tools/\u003e\n\n## Tools\n\n| Binary | Role | One line |\n|---|---|---|\n| `rdpsee` | observe | Inspect a server: scan, certificate, fingerprint, report, screenshot |\n| `rdpdo` | act | Drive a session: input, capture, match, script, record |\n\nEach is a single standalone binary. Both share one IronRDP connection core and\none help and flag style, accept the same connection flags (`-s/--server`,\n`-u/--user`, `-p/--password`, `--no-nla`, `--no-auth`, `--timeout`,\n`--width`/`--height`, `--verbose`), and honor `--json` on every reporting\ncommand. Run `\u003ctool\u003e --help` for global flags and `\u003ctool\u003e help \u003ccommand\u003e` for\nany command's full detail.\n\n### rdpsee (observe)\n\nInspect an RDP server without driving it. **Model:** one action per invocation,\n`rdpsee \u003ccommand\u003e [target]`, across three observation tiers.\n\n| Command | Tier | What it does |\n|---|---|---|\n| `scan` | connectionless | Pre-auth security posture for one or many targets (host, `host:port`, IPv4 CIDR), probed concurrently. Reports the selected security protocol, NLA requirement, and pre-auth capability flags. `--ci`/`--expect` gate in CI. |\n| `cert` | TLS, no auth | Server certificate: subject, issuer, validity, algorithms, SANs, SHA-256 |\n| `id` | TLS, no auth | Stable JA4-style server fingerprint plus the certificate SHA-256 |\n| `report` | session | Negotiated capabilities: security, desktop size, color depth, EGFX tier, advertised codecs, compression, joined channels |\n| `shot` | session | Recon screenshot (PNG); login screen without credentials, desktop with them |\n\n```bash\nrdpsee -s host scan                       # pre-auth posture\nrdpsee scan 10.0.0.0/24 --ci --expect tls,nla\nrdpsee -s host cert                       # TLS certificate\nrdpsee -s host id                         # server fingerprint\nrdpsee -s host report                     # negotiated capabilities\nrdpsee -s host -u user -p pass shot d.png # post-login screenshot\n```\n\n### rdpdo (act)\n\nDrive an authenticated RDP session. **Model:** a chain of commands in one\ninvocation, run in order against one persistent connection,\n`rdpdo -s host \u003ccmd\u003e \u003ccmd\u003e ...`.\n\n| Category | Commands |\n|---|---|\n| Input | type, utype, key, click, doubleclick, drag, scroll, type-password, mouse-hide |\n| Capture | capture (full/region/stdout), rcapture, timelapse |\n| Visual matching | expect, waitfor, expectclick, rexpect, repeat-key, measure, diff |\n| Stability | wait-still, wait-change |\n| Clipboard | set/get-clipboard, clipboard-send-file, clipboard-recv-file |\n| Display | resize, monitor |\n| Audio | audio-capture, audio-assert-playing, audio-verify |\n| Pixel | pixel, assert-pixel, wait-pixel, checksum, find-color |\n| Provisioning | accept-portal, unlock, login, boot-sequence |\n| Calibration | calibrate (click-grid profile generation) |\n| Scripting | run, play, convert, retry, soft |\n| Baseline | baseline update/list/check |\n| Info | info, perf, status, watch, help |\n\n```bash\nrdpdo -s host type \"hello\" key enter pause 2 capture /tmp/out.png\nrdpdo -s host -u user -p pass login user pass expect /tmp/desktop.png\nrdpdo -s host --junit results.xml expect /tmp/app.png 0.95 30\nrdpdo -s host --record /tmp/session.rdpdo run ./setup.rdpdo-script\n```\n\nIt speaks EGFX (RemoteFX, and H.264/AVC420 decode when OpenH264 is present),\nwrites `--json` output for matching, pixel, and report commands, and can emit a\nJUnit XML report for CI.\n\n## Quick start\n\n```bash\n# Inspect a server (no login)\nrdpsee -s 192.168.1.10 scan\nrdpsee -s 192.168.1.10 report\n\n# Drive a session\nrdpdo -s 192.168.1.10 -u user -p pass type \"hello\" key enter capture /tmp/out.png\n```\n\n## Installation\n\nDownload a signed release binary from the\n[releases page](https://github.com/lamco-admin/lamco-rdp-tools/releases), or\nbuild from source:\n\n```bash\ngit clone https://github.com/lamco-admin/lamco-rdp-tools.git\ncd lamco-rdp-tools\ncargo build --release\n# binaries: target/release/rdpsee and target/release/rdpdo\n```\n\n### Windows\n\nThe release includes `rdpsee.exe` and `rdpdo.exe`, built for\n`x86_64-pc-windows-msvc` and statically linked, so each runs as a single file\nwith no Visual C++ redistributable required. Unzip them and run from a terminal.\nFor H.264 decode, place `openh264.dll` next to the `.exe` (or point\n`OPENH264_LIBRARY_PATH` at it); without it, other codecs still decode. The\nbinaries are not yet Authenticode-signed, so Windows SmartScreen shows a one-time\nwarning on first run. Configuration (profiles, calibration) lives under\n`%APPDATA%\\rdpdo\\`.\n\n## Requirements\n\n- Rust 1.89+ and edition 2024 (to build from source)\n- A reachable RDP target (the tools are clients; they do not host a server)\n- **Optional:** the OpenH264 shared library for H.264/AVC420 decode in\n  `rdpsee shot` and `rdpdo` capture (`libopenh264.so` on Linux, `openh264.dll` on\n  Windows). It is loaded at runtime; the tools look next to the executable, then\n  in the system locations, or wherever `OPENH264_LIBRARY_PATH` points. Without it,\n  H.264 frames are skipped and other codecs (uncompressed, RemoteFX) still decode.\n\n## Documentation\n\n- **Website:** \u003chttps://lamco.ai/products/lamco-rdp-tools/\u003e\n- **Guides and reference:** [`docs/`](docs/README.md) — a getting-started\n  tutorial, task-oriented how-to guides, use cases, concept explanations, and\n  JSON/exit-code reference\n- **Releases:** \u003chttps://github.com/lamco-admin/lamco-rdp-tools/releases\u003e (signed binaries)\n- **Repository:** \u003chttps://github.com/lamco-admin/lamco-rdp-tools\u003e\n- Man pages: `man rdpsee`, `man rdpdo`\n\n## Related\n\n- [lamco-rdp-server](https://lamco.ai/products/lamco-rdp-server/) — the Lamco RDP\n  server. `rdpsee` and `rdpdo` are used to inspect and test it, but both work\n  against any standards-compliant RDP server.\n\n## About\n\nlamco-rdp-tools is developed by **Lamco Development LLC**\n(\u003chttps://lamco.ai/about/\u003e) and is licensed under **MIT OR Apache-2.0**.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flamco-admin%2Flamco-rdp-tools","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flamco-admin%2Flamco-rdp-tools","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flamco-admin%2Flamco-rdp-tools/lists"}