Skip to main content

Generate 100% human-realistic Mouse Trajectories with Timings.

Project description

📐 Cursory

Cursory Version Pypi Downloads

Cursory - Mouse Trajectory Factory. Generate 100% human-realistic Mouse Trajectories with Timings.


Install it from PyPI

pip install cursory

Basic Usage

from cursory import generate_trajectory

trajectory: list[tuple[float, float]]
timings: list[int]
trajectory, timings = generate_trajectory(target_start=..., target_end=...)

Methodology

Cursory generates Mouse Trajectories following these steps:

  1. Find a close matching human Trajectory: Cursory has a database of thousands of Mouse Trajectories recorded from real humans. It finds the closest matching Trajectory to the target Points with some amount of randomization.
  2. Morph the Trajectory: The Trajectory is morphed to fit the target Points exactly, while keeping the overall shape and timings as close to the original as possible.
  3. Add Noise: The Trajectory is jittered and knotted, to alter positions slightly to avoid fingerprinting by hash-fingerprinting.
  4. Regenerating with Timings: The Trajectory is regenerated using the Trajectory Frequency, with some noise added to the timings to avoid.
  5. Re-Add Noise: The Trajectory is jittered and knotted, to alter positions slightly to avoid fingerprinting by hash-fingerprinting.
  6. Morph the Trajectory: The Trajectory is morphed to fit the target Points exactly, while keeping the overall shape and timings as close to the original as possible.

[!WARNING]
Theoretically, it is possible to detect/fingerprint Mouse Trajectories generated by Cursory. But this would require an amount of compute power which is unfeasible. A greater risk of detection would be bad Trajectories, which is mitigated by the advanced algorithms used in Cursory.


Copyright and License

© Vinyzu
GNU GPL

(Commercial Usage is allowed, but source, license and copyright has to made available. Cursory does not provide and Liability or Warranty)


Thanks to

Pointergeist (For helping me understand Mouse Trajectories better).
sameelarif (For his awesome work on Scribe)
Margit Antal, Norbert Fejer, Krisztian Buza (For their work on SapiMouse)
MIMIC-LOGICS (For their Mouse-Synthesizer)


Disclaimer

This repository is provided for educational purposes only.
No warranties are provided regarding accuracy, completeness, or suitability for any purpose. Use at your own risk—the authors and maintainers assume no liability for any damages, legal issues, or warranty breaches resulting from use, modification, or distribution of this code.
Any misuse or legal violations are the sole responsibility of the user.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cursory-1.0.0.tar.gz (680.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

cursory-1.0.0-py3-none-any.whl (676.2 kB view details)

Uploaded Python 3

File details

Details for the file cursory-1.0.0.tar.gz.

File metadata

  • Download URL: cursory-1.0.0.tar.gz
  • Upload date:
  • Size: 680.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for cursory-1.0.0.tar.gz
Algorithm Hash digest
SHA256 b4ce9f54a4b17acbc0ec3b7ada7a1e6a941621663c2e56c79bf9f116d2c525ac
MD5 30eb317db1bb287e0e707c1bcd136f2b
BLAKE2b-256 4734ee5677ba2b85f00ad20628afce16a9dcf48bcf0acba4b2f34ac0b57825da

See more details on using hashes here.

Provenance

The following attestation bundles were made for cursory-1.0.0.tar.gz:

Publisher: publish.yml on Vinyzu/cursory

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cursory-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: cursory-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 676.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for cursory-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 561da0253ba391a88167e24118f4f3019780bac9cdc1e0b1297ee467e3bdc925
MD5 6c5deb77fa45bffdb91b693b97f7cb3d
BLAKE2b-256 ffa4b8b99f69ce6297ca60245a0a0fdd9f44fac8676460ff34a373131b4f744a

See more details on using hashes here.

Provenance

The following attestation bundles were made for cursory-1.0.0-py3-none-any.whl:

Publisher: publish.yml on Vinyzu/cursory

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page