-
Notifications
You must be signed in to change notification settings - Fork 2.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
BadUSB: Mouse control #4004
base: dev
Are you sure you want to change the base?
BadUSB: Mouse control #4004
Conversation
add mouse functions to BadUsbHidApi
removed mouse commands supporting get_mouse_keycode function added mouse buttons as Keys for HOLD function
i wanted to implement something like this for a while and had it on my todo list, happy to see its becoming a reality! great work! 💯 |
Thank you! |
|
||
line = &line[ducky_get_command_len(line) + 1]; | ||
|
||
// Handle Keyboard keys here | ||
uint16_t key = ducky_get_keycode(bad_usb, line, true); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You will get valid key code here (first symbol of argument will become one).
bad_usb->key_hold_nb++; | ||
if(bad_usb->key_hold_nb > (HID_KB_MAX_KEYS - 1)) { | ||
return ducky_error(bad_usb, "Too many keys are hold"); | ||
} | ||
|
||
if(isMouse) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
But it will be ignored because of this condition.
uint16_t key = ducky_get_keycode(bad_usb, line, true); | ||
if(key == HID_KEYBOARD_NONE) { | ||
return ducky_error(bad_usb, "No keycode defined for %s", line); | ||
} | ||
|
||
// Handle Mouse Keys here | ||
key = ducky_get_mouse_keycode_by_name(line); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I understand that badusb code is not the best example, but I got feeling that what you doing here makes it even more difficult to read.
Do you mind to try to refactor keycode parsing and handling in more explicit way? In a way where if you started mouse branch then you do mouse branch and there is no places where keyboard and mouse collide?
Un-draft when ready and let me know if you need any help. |
BadUSB: Mouse Control
I often found myself automating various functionality and wanting to be able to trigger a mouse click. This PR will add basic mouse functionality to the BadUSB App. Additionally this makes mouse movement more accessible for research on how this type of movement can be used in a security sensitive enviroment.
What's new
Several new mouse commands:
Documentation also updated to reflect the changes
Additionally I implemented functionality for the Middle click (often the mouse wheel button) but in my testing it seemed to only work some of the time.
Verification
I found the easiest way to visualize the mouse movements was to use minecraft as that will show the movements very easily. My script here includes the MIDDLECLICK function, but as you see that does not work yet. If I get some more time int he future I'll look into why that does not work as expected and create an PR for that.
I used the following BadUSB script:
A Short video of running this script:
https://youtu.be/hi02vP7v6do
Checklist (For Reviewer)