{"id":23273160,"url":"https://github.com/henriquesebastiao/mkx","last_synced_at":"2026-03-07T19:06:32.736Z","repository":{"id":266466865,"uuid":"898430685","full_name":"henriquesebastiao/mkx","owner":"henriquesebastiao","description":"CLI for exploring IoT and network devices","archived":false,"fork":false,"pushed_at":"2026-02-13T12:04:55.000Z","size":225,"stargazers_count":4,"open_issues_count":1,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-02-13T21:16:40.835Z","etag":null,"topics":["exploit","mikrotik","mikrotik-exploit","password","rich","routeros","security","typer","vulnerability","vulnerability-scanners","winbox"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/henriquesebastiao.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","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},"funding":{"github":["henriquesebastiao"]}},"created_at":"2024-12-04T11:34:34.000Z","updated_at":"2026-02-13T12:04:51.000Z","dependencies_parsed_at":"2024-12-04T12:34:07.316Z","dependency_job_id":"76f39592-f615-4bd2-b6bb-9f3d8b7e1a09","html_url":"https://github.com/henriquesebastiao/mkx","commit_stats":null,"previous_names":["henriquesebastiao/mkx"],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/henriquesebastiao/mkx","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/henriquesebastiao%2Fmkx","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/henriquesebastiao%2Fmkx/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/henriquesebastiao%2Fmkx/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/henriquesebastiao%2Fmkx/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/henriquesebastiao","download_url":"https://codeload.github.com/henriquesebastiao/mkx/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/henriquesebastiao%2Fmkx/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30226852,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-07T19:01:10.287Z","status":"ssl_error","status_checked_at":"2026-03-07T18:59:58.103Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["exploit","mikrotik","mikrotik-exploit","password","rich","routeros","security","typer","vulnerability","vulnerability-scanners","winbox"],"created_at":"2024-12-19T19:33:09.136Z","updated_at":"2026-03-07T19:06:32.522Z","avatar_url":"https://github.com/henriquesebastiao.png","language":"Python","funding_links":["https://github.com/sponsors/henriquesebastiao"],"categories":[],"sub_categories":[],"readme":"# MKX - Exploration of IoT and network devices\n\n[![Static Badge](https://img.shields.io/badge/status-stable-%232FBF50)](https://github.com/henriquesebastiao/mkx)\n[![GitHub Release](https://img.shields.io/github/v/release/henriquesebastiao/mkx?color=blue)](https://github.com/henriquesebastiao/mkx/releases)\n[![GitHub License](https://img.shields.io/github/license/henriquesebastiao/mkx?color=blue)](https://github.com/henriquesebastiao/mkx/blob/main/LICENSE)\n[![Visitors](https://api.visitorbadge.io/api/visitors?path=henriquesebastiao%2Fmkx\u0026label=repository%20visits\u0026countColor=%231182c3\u0026style=flat)](https://github.com/henriquesebastiao/mkx)\n\nMKX is a tool for auditing IoT and network devices, searching for vulnerabilities and information about the target device. Originally developed to obtain information from MikroTik devices, new functionalities have been added that can be useful for analyzing a wide variety of devices and protocols.\n\nTo find vulnerabilities in MikroTik devices on the network, MKX can scan target devices using protocols such as MNDP and SNMP, seeking information about the hardware and RouterOS of the devices. The information obtained here can be of great value to anyone analyzing network security. For example, you can find out the firmware version of the device, and then search for any CVEs for this specific version. But below you will see that MKX already implements attacks from some known CVEs.\n\n\u003e [!WARNING]\n\u003e This vulnerability analysis script is provided \"as is\" and is intended solely for educational, research, and testing purposes in controlled environments with proper authorization. Before running this script, please ensure that you have the necessary permission to perform security testing on the target devices. The responsibility for using this script lies entirely with the user. The author is not responsible for any damages, losses, or legal consequences arising from improper or unauthorized use of this code.\n\n## ⚡ Features\n\n### Obtaining Information\n\n- Discovery of MikroTik devices on the local network through the [MikroTik Neighbor Discovery (MNDP)](https://help.mikrotik.com/docs/spaces/ROS/pages/24805517/Neighbor+discovery) protocol that runs on `UDP` port `5678`.\n- Obtaining information from a specific MikroTik device or all devices in an IP range using the [SNMP](https://en.wikipedia.org/wiki/Simple_Network_Management_Protocol) protocol.\n- Obtain information from devices running the [Simple Service Discovery Protocol (SSDP)](https://en.wikipedia.org/wiki/Simple_Service_Discovery_Protocol) and [Universal Plug and Play (UPnP)](https://en.wikipedia.org/wiki/Universal_Plug_and_Play) protocols.\n\n### Attacks\n\n- PoC of [CVE-2018-14847](https://nvd.nist.gov/vuln/detail/CVE-2018-14847) that allows obtaining user credentials in vulnerable versions of RouterOS.\n- DDoS attack by sending packets to all ports randomly or to a specific port.\n- Attack that crashes the web interface of RouterOS versions 6 \u003e 6.49.10 - [CVE-2023-30800](https://nvd.nist.gov/vuln/detail/CVE-2023-30800).\n\n## ✨ Running\n\nYou can install MKX with your preferred Python package manager, here we will use [pipx](https://github.com/pypa/pipx):\n\n```bash\npipx install mkx\n```\n\nIf you don't want to install the tool on your machine, you can run a docker container with MKX already pre-installed:\n\n```bash\ndocker run -it --name mkx ghcr.io/henriquesebastiao/mkx:latest\n```\n\n\u003e [!NOTE]\n\u003e When using the docker version, if you want to run features that listen to devices on your local network, run the container with the `--network host` option.\n\n## 📃 Getting help\n\nNow you can run MKX and start learning how to use it. Get a list of possible commands with:\n\n```bash\nmkx --help\n\n# Or even an explanation of a specific command or subcommand.\n\nmkx [COMMAND] --help\n```\n\nMKX is developed using the [Typer](https://typer.tiangolo.com/) library, so you'll have a CLI that, as the Typer developers say, *\"You'll love using!\"* ✨.\n\n### Main commands\n\nWhen you run `mkx --help` you will see the main available commands separated into groups, the two main ones being:\n\n- `Exploit` - Commands to execute specific attacks.\n- `OSINT - Obtaining Information` - Commands for obtaining information about devices and services on the network.\n\n```console\n$ mkx --help\n                                                                                              \n Usage: mkx [OPTIONS] COMMAND [ARGS]...                                                       \n                                                                                              \n Tool for auditing MikroTik routers, searching for vulnerabilities and information about the  \n target device.                                                                               \n                                                                                              \n╭─ Options ──────────────────────────────────────────────────────────────────────────────────╮\n│ --version             -v        Returns the version of mkx.                                │\n│ --install-completion            Install completion for the current shell.                  │\n│ --show-completion               Show completion for the current shell, to copy it or       │\n│                                 customize the installation.                                │\n│ --help                          Show this message and exit.                                │\n╰────────────────────────────────────────────────────────────────────────────────────────────╯\n╭─ About ────────────────────────────────────────────────────────────────────────────────────╮\n│ doc               Open the project repository on GitHub.                                   │\n╰────────────────────────────────────────────────────────────────────────────────────────────╯\n╭─ Exploits ─────────────────────────────────────────────────────────────────────────────────╮\n│ exploit           Search for credentials of a RouterOS v6.42 vulnerable (CVE-2018-14847).  │\n│ ddos              Perform targeted DDoS attacks on devices.                                │\n│ kill-web-server   Attack that crashes the web interface of RouterOS versions 6 \u003e 6.49.10   │\n│                   (CVE-2023-30800).                                                        │\n╰────────────────────────────────────────────────────────────────────────────────────────────╯\n╭─ OSINT - Obtaining Information ────────────────────────────────────────────────────────────╮\n│ mikrotik          Search for devices on the network via MikroTik Neighbor Discovery        │\n│                   (MNDP).                                                                  │\n│ snmp              Get information via SNMP from devices with default community (public).   │\n│ upnp              Explore devices on the network with the Universal Plug and Play (UPnP)   │\n│                   port open.                                                               │\n╰────────────────────────────────────────────────────────────────────────────────────────────╯\n```\n\nThe mkx commands can contain subcommands; you can also use the `--help` flag to run them and get information on how to execute them.\n\nHere are some examples of subcommand help messages:\n\n### Command to discover information about devices on the network via SNMP\n\n```console\n$ mkx snmp --help\n                                                                                              \n Usage: mkx snmp [OPTIONS] TARGET [COMMUNITY] [PORT] COMMAND [ARGS]...                        \n                                                                                              \n Get information via SNMP from devices with default community (public).                       \n                                                                                              \n With this command it is possible to obtain various information from MikroTik devices that    \n have a vulnerable SNMP service.                                                              \n As a target, you can pass an IP address, a network, or a grepable Nmap output file           \n containing the IP addresses to search.                                                       \n                                                                                              \n You can scan port 161 on a network with Nmap and save the discovered hosts to a file with    \n the command:                                                                                 \n sudo nmap -sU -p 161 --open -oG nmap-out.txt 192.168.88.1/24                                 \n                                                                                              \n Using Nmap to find hosts with vulnerable ports and then passing the file with the IPs to MKX \n is more efficient than searching for information on all IPs on the network with mkx.         \n This way we will not try to search for information on addresses that do not have the SNMP    \n port open.                                                                                   \n                                                                                              \n Examples:                                                                                    \n mkx snmp 172.16.0.1                                                                          \n mkx snmp 172.16.0.1/24 -j                                                                    \n mkx snmp 172.16.0.1/24 -s                                                                    \n mkx snmp /home/user/nmap-out.txt                                                             \n                                                                                              \n╭─ Arguments ────────────────────────────────────────────────────────────────────────────────╮\n│ *    target         TEXT         Target IP address or network, or the path to an nmap      │\n│                                  output file in grepable format, containing the target IP  │\n│                                  addresses.                                                │\n│                                  [required]                                                │\n│      community      [COMMUNITY]  Information submission community. [default: public]       │\n│      port           [PORT]       SNMP UDP port. [default: 161]                             │\n╰────────────────────────────────────────────────────────────────────────────────────────────╯\n╭─ Options ──────────────────────────────────────────────────────────────────────────────────╮\n│ --json    -j        Saves the data obtained when searching for information on a network in │\n│                     a JSON file.                                                           │\n│ --silent  -s        It does not perform verbose printing when searching for information on │\n│                     a network, but saves a JSON file with results at the end..             │\n│ --help              Show this message and exit.                                            │\n╰────────────────────────────────────────────────────────────────────────────────────────────╯\n```\n\n### Command to perform a DDoS attack via TCP against a specific host.\n\n```console\n$ mkx ddos tcp --help\n                                                                                              \n Usage: mkx ddos tcp [OPTIONS] TARGET [PORT]                                                  \n                                                                                              \n Sends arbitrary packets via TCP to the device causing CPU overload.                          \n                                                                                              \n You can send packets to an IP address or domain, on a specific port, or on all ports from 1  \n to 65534 randomly.                                                                           \n                                                                                              \n Examples:                                                                                    \n mkx ddos tcp 192.168.88.1                                                                    \n mkx ddos tcp 192.168.88.1 -rv                                                                \n mkx ddos tcp 192.168.88.1 8080                                                               \n mkx ddos tcp server.local                                                                    \n                                                                                              \n╭─ Arguments ────────────────────────────────────────────────────────────────────────────────╮\n│ *    target      TEXT    Target IP address or domain. [required]                           │\n│      port        [PORT]  TCP port to be attacked. [default: 80]                            │\n╰────────────────────────────────────────────────────────────────────────────────────────────╯\n╭─ Options ──────────────────────────────────────────────────────────────────────────────────╮\n│ --random   -r        Attacks random ports between 1 and 65534.                             │\n│ --verbose  -v        Enable verbosity.                                                     │\n│ --help               Show this message and exit.                                           │\n╰────────────────────────────────────────────────────────────────────────────────────────────╯\n```\n\n## 📜 License\n\nMKX is open source software licensed under the [GPL-3.0](LICENSE) license.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhenriquesebastiao%2Fmkx","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhenriquesebastiao%2Fmkx","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhenriquesebastiao%2Fmkx/lists"}