unleashed-firmware
unleashed-firmware copied to clipboard
Enhance Random Interval and Movement Functionality in HID Mouse Jiggler for Improved Stealth and Human-Like Behavior
What's new
This pull request introduces significant enhancements to the HID Mouse Jiggler, aiming to improve its stealth capabilities and emulate human-like behavior more effectively. The updates include:
-
Random Intervals: Replaced fixed movement intervals with a random interval system. Users can set a minimum and maximum time range, within which the device randomly determines when to move the mouse. This unpredictability helps in evading detection by systems that monitor for regular patterns, such as anti-cheat software.
-
Dynamic Mouse Movements: Mouse movements are now randomized in both direction and distance, further mimicking human behavior. This variability makes the movements less predictable and more natural, which is crucial for bypassing systems that analyze movement patterns for regularity.
-
User Interface Enhancements: Updated the UI to facilitate easy setting of the minimum and maximum intervals through the device’s buttons. The interface displays these settings, allowing users to adjust the behavior to match their specific needs more closely.
These improvements aim to make the Mouse Jiggler more effective in environments where sophisticated software might detect less sophisticated tools. By enhancing the randomness and naturalness of the movements, the device becomes a more robust tool in scenarios requiring continuous, unnoticeable activity.
Verification
- Apps -> USB -> USB Keyboard & Mouse -> Mouse Jiggler
- Adjust Min & Max intervals settings and start
- Use
pynputpython library to track mouse movements
get_mouse_jiggler.py
from pynput.mouse import Listener
import time
import math
import keyboard
# Global variables to track time and position
last_time = time.time()
last_position = (0, 0)
def on_move(x, y):
global last_time, last_position
# Calculate the interval and length of movement
current_time = time.time()
interval = current_time - last_time
dx = x - last_position[0]
dy = y - last_position[1]
distance = math.sqrt(dx ** 2 + dy ** 2)
# Calculate the direction of movement
if distance > 0:
angle = math.atan2(dy, dx)
angle_degrees = math.degrees(angle)
print(f"Interval: {interval:.2f} sec, Length: {distance:.2f} pixels, Direction: {angle_degrees:.2f} degrees")
# Update time and position for the next event
last_time = current_time
last_position = (x, y)
# Start the mouse listener in a separate thread
listener = Listener(on_move=on_move)
listener.start()
print("Press 'esc' to stop recording.")
# Wait for the 'esc' key press
keyboard.wait('esc')
# Stop the listener
listener.stop()
print("Recording stopped.")
Checklist (For Reviewer)
- [x] PR has description of feature/bug
- [x] Description contains actions to verify feature/bugfix
- [ ] I've built this code, uploaded it to the device and verified feature/bugfix
Hello, Checklist (For Reviewer) is made for Reviewer, for person who is going to review and merge your PR
do not fill it, do not edit it after me second time, thanks
Hello,
Checklist (For Reviewer)is made for Reviewer, for person who is going to review and merge your PRdo not fill it, do not edit it after me second time, thanks
Sorry, I didn't notice
Hello, I made some changes, srand acts as empty function in flipper's system, stdlib is not required, and be aware that rand() basically does return (furi_hal_random_get() & RAND_MAX);
I removed unused parts and done ./fbt format on the code
I understand that this upgrade is meant to help mouse jiggler be more stealthy, but it also made it so I have to keep turning it off when I come back to desk because it may accidentally cause clicking on the wrong button. Could this instead be made into separate "stealth jiggler" mode and the old one brought back please?
Thanks for this new feature but I agree with Luk164, I'd prefer the old way so I was able to let it run also while I'm working. Is it possible to have 2 separate app or the choice to use stealth mode or previous behavior?
Also, not clear how can I set the Jiggler to make a movement every 5sec for example?
Thanks and keep up the great work!
Hello @Luk164 I understand the need for a separate "stealth jiggler" mode. We can certainly implement this by creating two separate applications, one for the stealth mode and another for the previous behavior.
@Airmonkdev To use seconds instead of minutes, you will need to replace the minutes by seconds in the code. Alternatively, we can (i think) add an option on the screen to change the interval units between seconds and minutes.
Hi Gushmazuko, thanks for the reply! I think having two separate apps will be great. Do you think this could happens with the next 074 version or it will require much time?
Hello everyone who was requesting making two possible options (keeping old version and adding new too) All is already done, please wait for next dev build and check dev branch for new commits, all will be published today
