Highlander •
Using GO-keepkey to mange your device

Using GO-keepkey to Manage Your Device
Manage your KeepKey with the GO programming language.
Repo: https://github.com/solipsis/go-keepkey
Dependencies
brew install libusb
Installation
go get -u github.com/solipsis/go-keepkey go install github.com/solipsis/go-keepkey
Command Line Interface (CLI)
go-keepkey --help Usage: go-keepkey [command] Available Commands: applyPolicy Enable/Disable a named policy applySettings Update the label, language, and enable/disable the passphrase changePin Change or add a pin to the device clearSession Clear session data such as the pin session and passphrase debugGetState Get device debug info. This REVEALS SECRETS and can only be used with debug enabled firmware decryptKeyValue Decrypt a value with a given key and nodepath encryptKeyValue Encrypt a value with a given key and nodepath flashDump Dump certain section of flash flashHash Request hash of certain segment of flash memory flashWrite Write data over flash sectors getAddress Get an address for a coinType and nodePath getEntropy Request sample data from the hardware RNG getEthAddress Get the ethereum address for a given node path getFeatures Ask the device for features and model information getPublicKey Get a public key for a nodePath including the XPUB help Help about any command loadDevice Load the device from seed words ping Ping the device with a message recoverDevice Begin interactive device recovery removePin Disable pin on the device replay Replay messages in kk log format to the device resetDevice Reset the device and generate a new seed using device RNG signEthTx Sign an ethereum transaction signMessage Sign a message using a given node path and coin softReset Soft reset / power cycle the device. Only works on devices in manufacturer mode upgradeFirmware Upgrade firmware to a specified tagged version or latest if none is specified uploadFirmware Upload a new firmware binary to the device verifyMessage Verify a signed message wipeDevice Erase all sensitive information on the device Flags: --autoButton Automatic button pressing if debug link is enabled (default true) --debug Debug level logging -h, --help Help for go-keepkey --target string Device label or HID serial to connect to if more than one device is connected
Finding the bin file:
cd ~ cd Go/bin

Updating KeepKey Firmware
Download the latest firmware from the KeepKey repo: github.com
Place Device in Updater Mode
- Unplug device
- Hold down button
- While holding down button, plug device back in
Use Go-keepkey to Update Firmware
./go-keepkey uploadFirmware --filepath ../../Downloads/firmware.keepkey.bin
Note: The location you downloaded the firmware to must match the location where you unzipped the CLI.

Import go-keepkey as a GO Developer
import "github.com/solipsis/go-keepkey/keepkey"
Connect to All Connected KeepKey Devices
devices, err := keepkey.GetDevices()
// Get the features supported by the first connected device kk := devices[0] features, err := kk.GetFeatures()
Dev Tools
Load Device:
./go-keepkey loadDevice alcohol woman abuse must during monitor noble actual mixed trade anger aisle
More info: https://github.com/solipsis/go-keepkey/blob/master/README.md