# Programs solo using the Solo bootloader # Requires python-fido2, intelhex import sys,os,time,struct import array,struct,socket,json,base64 import tempfile from binascii import hexlify from fido2.hid import CtapHidDevice, CTAPHID from fido2.client import Fido2Client, ClientError from fido2.ctap import CtapError from fido2.ctap1 import CTAP1 from intelhex import IntelHex from sign_firmware import * class SoloBootloader: write = 0x40 done = 0x41 check = 0x42 erase = 0x43 version = 0x44 TAG = b'\x8C\x27\x90\xf6' class Programmer(): def __init__(self,): self.origin = 'https://example.org' def find_device(self,): dev = next(CtapHidDevice.list_devices(), None) if not dev: raise RuntimeError('No FIDO device found') self.dev = dev self.ctap1 = CTAP1(dev) @staticmethod def format_request(cmd,addr = 0,data = b'A'*16): arr = b'\x00'*9 addr = struct.pack('' % sys.argv[0]) sys.exit(1) p = Programmer() p.find_device() print('version is ', p.version()) p.program_file(sys.argv[1])