#!/usr/bin/env python3 import random import struct import sys import usb.core import usb.util LOOPER_VID = 0x0483 LOOPER_PID = 0x572a ENDPOINT_IN = 0x81 ENDPOINT_OUT = 0x01 COMMAND_SIZE = 0xfe COMMAND_DATA = 0xff def mass_storage_header(data_len, cdb_len): header = "USBC".encode('ascii') tag = random.randint(0, 1<<32 - 1) flags = 0x80 target = 0x00 header += struct.pack(' 0: bufsize = (size >= 65536) and 65536 or size # data needs to be transferred in multiples of 1k blocks padding = (1024 - (bufsize % 1024)) % 1024 buf = get_data(dev, bufsize + padding) outfile.write(buf[:bufsize]) size -= bufsize print(" Done.")