123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121 |
- """
- Hello Chris!
- Happy merry holiday Christmas time. Emma and I wanted to get you a
- mouse wiggler so we ended up getting you the deluxe version. Your wiggler
- comes tricked out with (seriously):
- + 120MHz CPU
- + 4 KB L1 Cache
- + a true random number generator
- + elliptic curve cryptography hardware support (also RSA and DSA)
- + Direct Memory Access Conroller (zero copy writes)
- + USB host and device peripheral support in hardware
- + USART, I2C, SPI, LIN, and RS458 busses
- + proximity sense / capacitive touch peripherals
- + a bunch of GPIO, timers, DAC, comparators, temp sensor, everything
- + built-in RAM, seems underwhelming, but not to be scoffed at: 192 KB
- + built-in flash storage (again not a lot, but low power): 512 KB
- It is actually a break-out-board for an ARM system-on-a-chip, the
- [ATSAMD51 Cortex M4](https://www.microchip.com/en-us/product/atsamd51g19a).
- It is packaged by Adafruit on their ItsyBitsy M4 Express board. The reason
- we picked this package is that it comes with an approachable interactive
- developer environment. Adafruit added an external 2 MB (it is on-board) flash
- memory chip to write programs to. You can copy files to the board using a
- generic file manager.
- The firmware that is flashed into the SoC has a built-in Python interpreter.
- It is not Python3, so you will not be able to use any of the NumPy,
- psycopg2, or other common Python3 compatible libraries. The interpreter
- supports something called CircuitPython. You can write code in Python, save
- the code to the flash-drive, then it will automatically begin executing your
- code in hardware. This is somewhat a dream for programming. Usually one
- does not get this level of support. I am jealous.
- Anyways, aside from the limitation of the lack of Python3 libraries, this is
- still a powerful IDE. And as far as mouse-wigglers, it is ultra-overkill.
- We want you to reprogram it. If you do, let us know, share your code with
- us we really hope that you like it. Now you can write custom mouse wigglers
- keyboard injectors in case MS-Teams changes "busy" criteria. You may also
- find it useful in pen-testing as you can type whatever commands you want from
- the keyboard.
- Kyle + Emma
- """
- import time
- import usb_hid
- from adafruit_hid.mouse import Mouse
- """
- Hmmm, I wonder what this could be? Maybe you should shake it to find out what
- it is? It seems to be nicely wrapped. You can see a red ribbon with a
- beautifully tied bow. Did it just move?
- """
- aGift = \
- b'\x7F' b'\x7F' b'\x84' b'\x7E' b'\x84' b'\x80' b'\x83' b'\x7F' b'\x83' \
- b'\x81' b'\x83' b'\x80' b'\x83' b'\x81' b'\x83' b'\x82' b'\x82' b'\x82' \
- b'\x82' b'\x82' b'\x82' b'\x82' b'\x82' b'\x83' b'\x81' b'\x83' b'\x82' \
- b'\x83' b'\x83' b'\x88' b'\x82' b'\x88' b'\x81' b'\x88' b'\x80' b'\x89' \
- b'\x80' b'\x89' b'\x7E' b'\x88' b'\x7E' b'\x87' b'\x7E' b'\x83' b'\x7E' \
- b'\x83' b'\x7D' b'\x83' b'\x7D' b'\x82' b'\x7D' b'\x82' b'\x7D' b'\x82' \
- b'\x7D' b'\x81' b'\x7C' b'\x81' b'\x7D' b'\x81' b'\x7C' b'\x80' b'\x7C' \
- b'\x81' b'\x7C' b'\x7F' b'\x7C' b'\x80' b'\x7C' b'\x7F' b'\x78' b'\x80' \
- b'\x78' b'\x7E' b'\x78' b'\x7D' b'\x77' b'\x7D' b'\x78' b'\x7C' b'\x77' \
- b'\x7B' b'\x78' b'\x7B' b'\x77' b'\x7B' b'\x78' b'\x7A' b'\x77' b'\x7A' \
- b'\x78' b'\x7A' b'\x7B' b'\x7B' b'\x7C' b'\x7B' b'\x7C' b'\x7B' b'\x7C' \
- b'\x7A' b'\x7C' b'\x7A' b'\x7E' b'\x7A' b'\x7D' b'\x7A' b'\x7E' b'\x7A' \
- b'\x7F' b'\x7A' b'\x7F' b'\x7A' b'\x80' b'\x7B' b'\x80' b'\x7C' b'\x81' \
- b'\x7C' b'\x82' b'\x7C' b'\x80' b'\x7E' b'\x81' b'\x7F' b'\x81' b'\x7E' \
- b'\x81' b'\x7F' b'\x81' b'\x7F' b'\x81' b'\x80' b'\x81' b'\x7F' b'\x80' \
- b'\x81' b'\x81' b'\x80' b'\x80' b'\x82' b'\x80' b'\x83' b'\x81' b'\x83' \
- b'\x80' b'\x85' b'\x7F' b'\x87' b'\x80' b'\x87' b'\x7F' b'\x8A' b'\x7F' \
- b'\x8B' b'\x7F' b'\x8D' b'\x7E' b'\x90' b'\x7C' b'\x75' b'\x7C' b'\x78' \
- b'\x7D' b'\x7B' b'\x7E' b'\x7C' b'\x7D' b'\x7D' b'\x7D' b'\x7D' b'\x7D' \
- b'\x7D' b'\x7D' b'\x7E' b'\x7D' b'\x7E' b'\x7D' b'\x7F' b'\x7D' b'\x7F' \
- b'\x7D' b'\x80' b'\x7D' b'\x80' b'\x7D' b'\x80' b'\x7E' b'\x81' b'\x7E' \
- b'\x80' b'\x7D' b'\x84' b'\x7D' b'\x89' b'\x7D' b'\x83' b'\x7E' b'\x83' \
- b'\x7E' b'\x81' b'\x7E' b'\x80' b'\x7D' b'\x80' b'\x7E' b'\x7F' b'\x7C' \
- b'\x7F' b'\x7C' b'\x7E' b'\x7C' b'\x7D' b'\x7D' b'\x7D' b'\x7D' b'\x7C' \
- b'\x7E' b'\x7C' b'\x7E' b'\x7C' b'\x7F' b'\x7B' b'\x7E' b'\x7C' b'\x7F' \
- b'\x7C' b'\x80' b'\x7B' b'\x7F' b'\x7D' b'\x80' b'\x7C' b'\x80' b'\x7D' \
- b'\x81' b'\x7D' b'\x80' b'\x7E' b'\x78' b'\x83' b'\x7B' b'\x80' b'\x7B' \
- b'\x80' b'\x7A' b'\x7F' b'\x7A' b'\x7F' b'\x7A' b'\x7D' b'\x79' b'\x7D' \
- b'\x80' b'\x87' b'\x80' b'\x84' b'\x80' b'\x83' b'\x7F' b'\x83' b'\x7E' \
- b'\x83' b'\x7E' b'\x82' b'\x7E' b'\x80' b'\x7E' b'\x80' b'\x7D' b'\x80' \
- b'\x7D' b'\x80' b'\x7C' b'\x7F' b'\x7D' b'\x7E' b'\x7C' b'\x7E' b'\x7C' \
- b'\x7E' b'\x7C' b'\x7E' b'\x7C' b'\x7C' b'\x7C' b'\x7D' b'\x7C' b'\x7C' \
- b'\x7D' b'\x7C' b'\x7C' b'\x7B' b'\x7D' b'\x7C' b'\x7D' b'\x7A' b'\x7D' \
- b'\x7B' b'\x7E' b'\x7A' b'\x80' b'\x86' b'\x81' b'\x86' b'\x7F' b'\x82' \
- b'\x7F' b'\x83' b'\x7F' b'\x82' b'\x7E' b'\x81' b'\x7E' b'\x81' b'\x7E' \
- b'\x81' b'\x7D' b'\x80' b'\x7C' b'\x7F' b'\x7C' b'\x7F' b'\x7B' b'\x7E' \
- b'\x7A' b'\x7C' b'\x79' b'\x7C' b'\x7D' b'\x7D' b'\x7D' b'\x7D' b'\x7B' \
- b'\x77' b'\x7B' b'\x77' b'\x7B' b'\x78' b'\x7A' b'\x88' b'\x7C' b'\x87' \
- b'\x7D' b'\x85' b'\x7D' b'\x84' b'\x7E' b'\x83' b'\x7F' b'\x82' b'\x80' \
- b'\x81' b'\x80' b'\x81' b'\x81' b'\x7F' b'\x82' b'\x7F' b'\x82' b'\x7F' \
- b'\x82' b'\x7E' b'\x86' b'\x7C' b'\x86' b'\x7A' b'\x79' b'\x83' b'\x79' \
- b'\x81' b'\x79' b'\x82' b'\x78' b'\x80' b'\x78' b'\x80' b'\x78' b'\x7F' \
- b'\x78' b'\x7F' b'\x78' b'\x7E' b'\x77' b'\x7E' b'\x78' b'\x7E' b'\x77' \
- b'\x7C' b'\x77' b'\x7D' b'\x77' b'\x7C' b'\x77' b'\x7B' b'\x77' b'\x7B' \
- b'\x76' b'\x7B' b'\x6F' b'\x76' b'\x6E' b'\x75' b'\x6E' b'\x73' b'\x6E' \
- b'\x73' b'\x6E' b'\x72' b'\x6F' b'\x71' b'\x6F' b'\x71' b'\x6F' b'\x71'
- # CircuitPython already enumerates HID mouse, get a handle for it
- mouse = Mouse(usb_hid.devices)
- autoClick = False
- delay = 0.5
- # turn off the delay if auto-click is enabled
- if autoClick:
- delay = 0
- while True:
- # wiggle the mouse
- for i in range(len(aGift) / 2):
- mouse.move(x=-(aGift[2*i] - 127), y=aGift[2*i+1] - 127)
- # reset mouse position, delay makes it easier to manually click the mouse
- time.sleep(delay)
- if autoClick: mouse.release(mouse.LEFT_BUTTON)
- mouse.move(x=-211,y=26)
- time.sleep(delay)
- if autoClick: mouse.click(mouse.LEFT_BUTTON)
|