A high‑fidelity remote management workstation for Cisco IP Phones. This tool enables Network & UC Engineers to perform “Remote Hands” operations on Cisco phones using a virtualized hardware interface, featuring live screen mirroring and XML‑CGI command execution.
Designed for enterprise, lab, and data‑center environments where physical access to phones is limited or impossible.
- 📱 Virtual Cisco Phone UI (88xx & 79xx series)
- 🖥️ Live screen capture (PNG/BMP rendering)
- 🔘 Full button emulation via XML‑CGI
- 🔐 SSH bridge (jump‑host support)
- ⚡ Low‑latency background refresh
- 🧾 Live CURL command & response logs
- 💾 Session presets (IP lists)
The application acts as a secure middle‑man between the engineer and Cisco IP Phone services.
-
CiscoBasePhone
- Handles authentication, networking, CGI execution, and image fetching
-
Model‑Specific Classes
- Define button layouts and supported keys per phone model
-
JSON‑Driven Configuration
- Button behavior is fully externalized and model‑agnostic
-
User Input Clicks a button on the virtual phone UI
-
Payload Mapping Button → CGI URI (example:
Key:Soft1) -
Transport Layer
- Direct Mode: Local
curlexecution - SSH Bridge Mode:
paramikoexecutes curl via jump host
- Direct Mode: Local
-
Rendering
- Phone returns PNG/BMP image
- Processed with Pillow
- Rendered on Tkinter canvas
⚠️ Buttons will NOT function without the correct JSON mappings
The application separates:
- Logic → Python source
- Behavior → External JSON files
When running as a standalone executable, key mappings must exist in:
%APPDATA%\CGI_Remote_Control\
keys_8841.json
keys_7945.json
keys_7911.json
-
Open the source directory:
config/ -
Select only the files, not the folder
-
Copy them to:
%APPDATA%\CGI_Remote_Control\
✅ Once present, all buttons will map correctly.
The application relies on curl for HTTP communication with Cisco phones.
- Must be installed
- Must be available in PATH
Verify:
curl --version❌ If this fails, command execution and screen capture will not work.
-
Web Access: Enabled
-
Settings Access: Enabled
-
Authentication URL: Valid XML authentication service
-
Permissions:
-
Phone associated with an Application User
-
User is member of:
Standard CTI Allow Control of Phones
-
pip install pillow paramikoUse the following verified PyInstaller command:
pyinstaller --noconfirm --onefile --windowed \
--name "CiscoRemoteControl" \
--icon="icon.ico" \
--add-data "icon.ico;." \
--add-data "cisco_core.py;." \
--add-data "cisco_8841.py;." \
--add-data "cisco_7911.py;." \
--add-data "cisco_7945.py;." \
--add-data "config/cgi.conf;config" \
--add-data "config/keys_7911.json;config" \
--add-data "config/keys_7945.json;config" \
--add-data "config/keys_8841.json;config" \
--add-data "config/sessions.json;config" \
--add-data "config/ssh.conf;config" \
main.pyControl phones inside secured networks without direct VPN access.
Real‑time visibility of:
- Executed CURL commands
- Raw XML / HTTP responses
Save and reload IP lists to eliminate repetitive typing.
Threaded background image fetching for smooth UI updates.
Cisco Multi‑Model Remote Control Suite virtualizes the physical interface of Cisco 88xx and 79xx IP Phones, enabling:
- Remote troubleshooting
- User assistance & training
- Status verification
- Secure data‑center operations
With SSH tunneling, live CGI execution, and accurate UI emulation, it provides a powerful alternative to physical access and traditional CUCM workflows.
This tool is intended for administrative and engineering use only.
Ensure compliance with:
- Organizational security policies
- Cisco licensing terms
- Local privacy and monitoring regulations