buttplugio / docs.buttplug.io

11 stars 6 forks source link

Document VibCrafter Protocol #26

Open blackspherefollower opened 6 months ago

blackspherefollower commented 6 months ago

BLE Name: be gentle Service UUID: 53300051-0060-4BD4-BBE5-A6920E4C5663 Tx Characteristic UUID: 53300052-0060-4BD4-BBE5-A6920E4C5663 Rx Characteristic UUID: 53300053-0060-4BD4-BBE5-A6920E4C5663

Packets are encrypted:

byte[] key = "jdk#Cra%f5Vib28r".getBytes("UTF-8");
Cipher instance = Cipher.getInstance("AES/ECB/PKCS5Padding");
instance.init(1, new SecretKeySpec(key, "AES"));
return instance.doFinal(command.getBytes("UTF-8"));

Initialisation:

  1. Send Auth:????????; where ? is [a-zA-Z0-9] (random but stored)
  2. Receive XXXX:YYYYYY;
  3. SHA256 the YYYYYY portion to uppercase hex string, and keep just the first 4 characters to get ZZZZ
  4. Send Auth:ZZZZ;
  5. Receive OK;

Commands:

blackspherefollower commented 5 months ago

 ModelData[]{
 ModelData("A", R.drawable.selector_shock_wave, R.string.shock_wave, "shockwave.json", false, 16, null), 
 ModelData("B", R.drawable.selector_swing, R.string.swing, "swing.json", false, 16, null), 
 ModelData("C", R.drawable.selector_lightning, R.string.lightning, "lighting.json", false, 16, null), 
 ModelData("D", R.drawable.selector_jump, R.string.jump, "jump.json", false, 16, null), 
 ModelData("E", R.drawable.selector_bang_bang, R.string.bang_bang, "bangbang.json", false, 16, null), 
 ModelData("F", R.drawable.selector_parkour, R.string.parkour, "parkour.json", false, 16, null), 
 ModelData("G", R.drawable.selector_bungy, R.string.bungy, "bungy.json", false, 16, null), 
 ModelData("H", R.drawable.selector_roller_coaster, R.string.roller_coaster, "roller coaster.json", false, 16, null), 
 ModelData("I", R.drawable.selector_explosive, R.string.explosive, "Exolosive.json", false, 16, null)});```