Skip to content

Instantly share code, notes, and snippets.

View qdot's full-sized avatar
🦊

qDot qdot

🦊
View GitHub Profile
@qdot
qdot / android.rs
Created July 28, 2022 07:13
btleplug android bringup w/ thread local storage
use flutter_rust_bridge::StreamSink;
use jni::objects::GlobalRef;
use jni::{JNIEnv, JavaVM, AttachGuard};
use once_cell::sync::OnceCell;
use tokio::runtime::Runtime;
use std::sync::atomic::{AtomicUsize, Ordering};
use std::cell::RefCell;
use dashmap::DashMap;
use crate::mobile_init::Error;
@qdot
qdot / buttplug-test.py
Created April 25, 2019 06:06
buttplug-py py3.7 implementation example
from buttplug.client import (ButtplugClientWebsocketConnector, ButtplugClient,
ButtplugClientDevice)
import asyncio
# import signal
# import sys
async def cancel_me():
print('cancel_me(): before sleep')
@qdot
qdot / buttplug-device-config.yml
Last active January 28, 2019 07:07
Buttplug Device Configuration File - First Draft
# Welcome to Buttplug Device Config
#
# DO NOT EDIT THIS FILE. YOUR CHANGES WILL BE OVERWRITTEN.
#
# Use user-device-config.yml for local device definitions.
#
# Now that we've got that bit of impoliteness out of the way... Hi,
# I'm qDot. Welcome to the buttplug device configuration file.
#
# You've managed to wander into this place we keep all of the sex toy
@qdot
qdot / buttplug-rollup.js
Created December 6, 2018 21:07
Rollup config for Buttplug from TheOne on discord
import alias from 'rollup-plugin-strict-alias';
import typescript from 'rollup-plugin-typescript';
import vue from 'rollup-plugin-vue';
import nodeResolve from 'rollup-plugin-node-resolve';
import commonjs from 'rollup-plugin-commonjs';
import nodeGlobals from 'rollup-plugin-node-globals';
import uglify from 'rollup-plugin-uglify';
import { minify } from 'uglify-js';
import livereload from 'rollup-plugin-livereload';
import serve from 'rollup-plugin-serve';
@qdot
qdot / gist:e47ea8901dbe59f2e68048cd39af1e4b
Last active October 9, 2018 20:49
2B Firmware Decryption
const fs = require("fs");
function decryptWithRC4Key(arr, block) {
let out_arr = [];
let previous_val = 0;
let b = 0;
for (let i = 0; i < arr.length; ++i) {
let a = (i + 1) % 256;
b = ((b + block[a]) % 256);
[block[a], block[b]] = [block[b], block[a]];
@qdot
qdot / nonpolynomial-labs-llc-cla.md
Last active May 9, 2018 01:53
Nonpolynomial Labs LLC CLA

Fiduciary License Agreement 2.0 based on the Individual Contributor exclusive License Agreement (including the Traditional Patent License OPTION)

Thank you for your interest in contributing to the open source technology projects of Nonpolynomial Labs LLC ("We" or "Us").

The purpose of this contributor agreement ("Agreement") is to clarify and document the rights granted by contributors to Us. To make this document effective, please follow the instructions at https://cla-assistant.io/metafetish/buttplug-csharp.

0. Preamble

Software is deeply embedded in all aspects of our lives and it is important that it empower, rather than restrict us. Free Software gives everybody the rights to use, understand, adapt and share software. These rights help support other fundamental freedoms like freedom of speech, press and privacy.

<<widget "videolink">>
<<linkreplace $args[0]>>
<<nobr>>
<<set _vid to $args[1]>>
<center>
<video autoplay="autoplay" loop="loop" controls>
<source src=<<= _vid>> type="video/mp4" />
</video>
</center>
<</nobr>>
@qdot
qdot / luxsub.py
Created January 26, 2018 20:00
Luxuria Suburbia Interaction Code
from __future__ import division;
from memorpy import *;
# ^ this is from https://github.com/n1nj4sec/memorpy/ and
# it's why I'm stuck in python 2.7... replace asap
import websocket;
import threading;
import select;
import time;
{
"version": "1.0",
"range": 100,
"inverted": false,
"actions": [{
"pos": 50,
"at": 33
}, {
"pos": 20,
"at": 533
@qdot
qdot / portal2.funscript
Created August 7, 2017 23:31
portal2 funscript
{"inverted": false, "version": "1.0", "actions": [{"pos": 0, "at": 0}, {"pos": 50, "at": 160}, {"pos": 0, "at": 440}, {"pos": 20, "at": 640}, {"pos": 0, "at": 1080}, {"pos": 50, "at": 1440}, {"pos": 30, "at": 1600}, {"pos": 50, "at": 1880}, {"pos": 0, "at": 2080}, {"pos": 0, "at": 2560}, {"pos": 20, "at": 2680}, {"pos": 0, "at": 2880}, {"pos": 0, "at": 3240}, {"pos": 70, "at": 3440}, {"pos": 0, "at": 3680}, {"pos": 20, "at": 3840}, {"pos": 0, "at": 4040}, {"pos": 0, "at": 4280}, {"pos": 70, "at": 4560}, {"pos": 0, "at": 4840}, {"pos": 20, "at": 5040}, {"pos": 0, "at": 5360}, {"pos": 0, "at": 6040}, {"pos": 80, "at": 6280}, {"pos": 0, "at": 6480}, {"pos": 20, "at": 6680}, {"pos": 0, "at": 6880}, {"pos": 0, "at": 7040}, {"pos": 70, "at": 7400}, {"pos": 0, "at": 7600}, {"pos": 20, "at": 7800}, {"pos": 0, "at": 8040}, {"pos": 0, "at": 8440}, {"pos": 100, "at": 8640}, {"pos": 0, "at": 8880}, {"pos": 20, "at": 9040}, {"pos": 0, "at": 9360}, {"pos": 40, "at": 9880}, {"pos": 0, "at": 10080}, {"pos": 50, "at": 10280},