Your All-in-One Networking Toolkit.
Stop juggling a dozen apps. Ducky brings your essential tools into one clean, fast, and open-source application for Windows.



Everything You Need, All in One Place.
Ducky is packed with features designed for network professionals and security analysts.
Advanced Terminal
A powerful, tabbed terminal supporting SSH, Telnet, and Serial (COM) connections. Features command history, tab-completion, and customizable themes.
SNMP Topology Mapper
Automatically discover devices on your network using ICMP and SNMP. The interactive graphical map visualizes your network, color-coding devices like routers and switches.
Network Diagnostics
Includes a fast port scanner, ping and traceroute utility, and a subnet calculator. Everything you need for quick network troubleshooting and analysis.
Security Toolkit
Look up software vulnerabilities with the CVE search tool. Check password strength and calculate file hashes (MD5, SHA1, SHA256, SHA512) for integrity checks.
Session Management
Save your terminal sessions to a log file. Review your work later or use it for documentation. Your session history is organized and easy to access.
Customizable UI
Choose between a sleek dark mode and a clean light mode. Customize terminal colors and fonts to create a workspace that's perfect for you.
About the Project
Built to Scratch an Itch
Ducky was born out of the frustration of constantly switching between a dozen different applications for everyday networking tasks. It started as a simple terminal emulator and grew into a comprehensive, open-source toolkit designed to be the one application a network professional needs open on their desktop.
Support This Project
This project is developed and maintained in my free time. If you find Ducky useful, consider supporting its future. Every contribution helps me dedicate more time to adding new features and fixing bugs.

Updates & Known Issues
Follow the development journey of Ducky.
The Discovery Update
v1.3 - Latest- NEW: The **Topology Mapper** is now powered by **SNMP**! It automatically discovers device hostnames and types (routers, switches) and color-codes them for clarity.
- NEW: Map nodes are now **interactive**. Click on any device on the map to view its detailed information (IP, MAC, Hostname, & Description).
- NEW: Added a **Donation Button** and links to support the project's future development.
- IMPROVED: Modern Packaging & Installation. The project is now a standard Python package using `pyproject.toml`, simplifying installation and automatically handling all dependencies.
- IMPROVED: Overhauled the network discovery engine to be more robust. It now intelligently finds the correct network adapter (Wi-Fi/Ethernet) and handles Windows administrator permissions automatically.
- FIXED: Critical Configuration Bug. Fixed a major issue where a corrupted config file would be deleted. Ducky now safely warns the user without data loss.
- FIXED: Resolved numerous bugs related to network scanning on different Windows configurations. The scanner is now significantly more reliable.
- IMPROVED: Cleaned up the Tools panel for a more streamlined and intuitive user experience by removing redundant entries.
The Command & Control Update
v1.2- NEW: Added full support for **SSH and Telnet** connections in the terminal.
- NEW: Implemented a full suite of **Network Query Tools** (Ping, DNS Lookup, IP Info, etc.).
- FIXED: Complete overhaul of the terminal input system. **Arrow keys, backspace, and tab-completion** now work reliably, providing a true shell experience.
- IMPROVED: Redesigned the sidebar UI for a more logical workflow.
Ongoing Known Issues
Terminal Input Desynchronization
OpenThe terminal's key press handling is currently "stateful" on the client-side. When a user presses a key (like Backspace or an arrow key), the Ducky application processes it locally first (e.g., deleting a character on screen) and then sends the corresponding control character to the remote device.
This creates a desynchronization between the Ducky UI's cursor position and the remote device's actual CLI cursor position. This leads to several critical usability issues:
- Backspace Failure: Deleting characters locally does not guarantee the remote end has correctly processed the backspace, leading to command errors.
- Arrow Key Failure: Using left/right arrow keys moves the Ducky cursor, but the remote device (e.g., a Cisco switch) does not receive the standard VT100 escape codes it needs to move its own internal cursor. This makes editing commands on the line impossible.
- Tab Completion Issues: Tab completion is also happening on the client-side, which can interfere with the device's own native tab completion.
The root cause is that Ducky is trying to be a "smart" terminal, when it should be a "dumb" terminal that simply acts as a transparent conduit for I/O.
Contribute to Ducky
Ducky is an open-source project, and contributions are always welcome!
Report a Bug
Found something that isn't working right? The best way to help is to report it. Please provide as much detail as possible, including steps to reproduce the issue.
Report a BugSuggest a Feature
Have a great idea for a new tool or an improvement to an existing one? Open a feature request on GitHub and let's discuss how to make Ducky even better.
Suggest a FeatureContribute Code
If you're a developer, feel free to fork the repository, make your changes, and submit a pull request. We appreciate any help, from small bug fixes to major new features.
Submit a Pull RequestThe Source Code
Ducky is proudly open-source and built with powerful tools.
Built with Python
The entire application is written in Python, leveraging the power of the Qt framework via the PySide6 library for a fast, native cross-platform UI. All the source code is available on GitHub under the MIT License, ready for you to explore, modify, and contribute to.
# Snippet from the Terminal Widget
class BaseTerminalWidget(QWidget):
def __init__(self, config):
super().__init__()
self.output_text = QTextEdit()
self.output_text.keyPressEvent = self.handle_key_press
# ... and so much more
def handle_key_press(self, event):
# Let the base class handle navigation
if event.key() in [Qt.Key.Key_Left, Qt.Key.Key_Right]:
super().keyPressEvent(event)
return
# Send all other keys to the device
if event.text():
self.send_char_to_device(event.text())
Get Ducky for Windows
Version 1.3 | Requires Windows 10 or newer