All Projects → pellettiero → V60Mini-firmhack

pellettiero / V60Mini-firmhack

Licence: GPL-3.0 license
A project to disassemble the KBParadise V60 Mini keyboard firmware.

Programming Languages

c
50402 projects - #5 most used programming language
shell
77523 projects

Projects that are alternatives of or similar to V60Mini-firmhack

elfloader
ARMv7M ELF loader
Stars: ✭ 71 (+208.7%)
Mutual labels:  arm, armv7, thumb2
Gitlab
GitLab CE (Docker image) for ARM devices, this is a mirror repository of
Stars: ✭ 121 (+426.09%)
Mutual labels:  arm, armv7
Nwjs rpi
[NW.js port for Raspberry Pi] binary compiled for the ARMv6 used in Raspberry Pi (compatible with RPi 2 and RPi 3)
Stars: ✭ 91 (+295.65%)
Mutual labels:  arm, armv7
Computelibrary
The Compute Library is a set of computer vision and machine learning functions optimised for both Arm CPUs and GPUs using SIMD technologies.
Stars: ✭ 2,123 (+9130.43%)
Mutual labels:  arm, armv7
Element Web
element.io docker image generator
Stars: ✭ 21 (-8.7%)
Mutual labels:  arm, armv7
Reverse Engineering
This repository contains some of the executables that I've cracked.
Stars: ✭ 29 (+26.09%)
Mutual labels:  arm, armv7
Arm Assembly Cheat
MOVED TO: https://github.com/cirosantilli/linux-kernel-module-cheat#userland-assembly SEE README. ARMv7 and ARMv8 assembly userland minimal examples tutorial. Runnable asserts on x86 hosts with QEMU user mode or natively on ARM targets. Nice GDB step debug setup. Tested on Ubuntu 18.04 host and Raspberry Pi 2 and 3 targets.
Stars: ✭ 159 (+591.3%)
Mutual labels:  arm, armv7
m3forth
m3forth is a forth cross-compiler for cortex-m3 ARM microcontrollers
Stars: ✭ 16 (-30.43%)
Mutual labels:  arm, thumb2
discolix
distroless arm docker images
Stars: ✭ 22 (-4.35%)
Mutual labels:  arm, armv7
alpine-qbittorrent-openvpn
qBittorrent docker container with OpenVPN client running as unprivileged user on alpine linux
Stars: ✭ 230 (+900%)
Mutual labels:  arm, armv7
Grafana On Raspberry
Grafana packages for raspberry pi (armv6/armv7) and aarch64/arm64
Stars: ✭ 318 (+1282.61%)
Mutual labels:  arm, armv7
docker-elasticsearch
Multi-architecture (arm, x86) Docker image for Elasticsearch
Stars: ✭ 14 (-39.13%)
Mutual labels:  arm, armv7
Shecc
A self-hosting and educational C compiler
Stars: ✭ 286 (+1143.48%)
Mutual labels:  arm, armv7
Docker Jdownloader
JDownloader 2 Docker Image (Multiarch) - Passed 40M Downloads
Stars: ✭ 85 (+269.57%)
Mutual labels:  arm, armv7
focalboard-docker
Cross platform Docker images for Focalboard.
Stars: ✭ 12 (-47.83%)
Mutual labels:  arm, armv7
Synestiaos
The Synestia Operating System
Stars: ✭ 159 (+591.3%)
Mutual labels:  arm, armv7
docker-nagios
Docker image for Nagios Core in Alpine Linux with basic plugins, available for x86, x64 , ARM v6, ARM v7 and ARM64.
Stars: ✭ 33 (+43.48%)
Mutual labels:  arm, armv7
nordvpn
NordVpn Docker Client
Stars: ✭ 475 (+1965.22%)
Mutual labels:  arm, armv7
Tow-Boot
An opinionated distribution of U-Boot. — https://matrix.to/#/#Tow-Boot:matrix.org?via=matrix.org
Stars: ✭ 338 (+1369.57%)
Mutual labels:  arm, armv7
rasa-docker-arm
Rasa Docker image for ARMv7. Runs on a Raspberry Pi.
Stars: ✭ 19 (-17.39%)
Mutual labels:  arm, armv7

KBParadise V60Mini Custom Firmware Project

A project to disassemble the KBParadise V60Mini keyboard firmware.

With help from the following people:

Without your help, this project would not have been possible. Thanks everyone!

WARNING

I take ABSOLUTELY NO responsibilities if your keyboard turns into an expensive brick! Use this at your own risk.

Usage

First, make sure your keyboard is:

  • ANSI US version
  • on firmware 1.0.7 (WIP: might not be required anymore)

THIS IS VERY IMPORTANT!
Use the updater from Windows to update the keyboard if not already done.
(WIP Note: this might not be necessary anymore)

You can find the original and patched version of the firmware exe in the firmware/ folder, along with their SHA1 sums:
https://github.com/pellettiero/V60Mini-firmhack/tree/master/firmware

Run this on Windows as Administrator to unlock the keyboard.
Remember to check the SHA1 sums just to be sure to avoid a brick.

Disassemble and Unlock

If you want to do it the manual way, or just to disassemble the firmware itself:

  • If you want to decrypt the updater:

    $ updater_decrypt.sh cykb112_v107.exe
    

    You can disassemble the decrypted file with disassemble.sh.

  • If you instead want to unlock the keyboard:

    $ updater_patcher.sh cykb112_v107.exe
    

    Get the output executable from the directory and run it on Windows with admin permissions.
    Fingers crossed! (Still working on a way to do this from Linux itself)

    The patched updater is checked with SHA1 to avoid arbitrary fuckups.
    Check this issue to get an explanation of how the unlock works:
    pok3r-custom/pok3r_re_firmware#4

Flash backup

You can then try to dump the flash by using pok3rtool:
Prerequisites: cmake git libusb libusb-compat

  1. Clone the repo
$ git clone https://github.com/pok3r-custom/pok3rtool
  1. Build
$ cd pok3rtool
$ git submodule update --init && cmake . && make pok3rtool

It will take a while, be patient.

  1. Reboot into bootloader
$ sudo ./pok3rtool -t kbpv60 bootloader
  1. Dump flash and reboot to firmware
$ sudo ./pok3rtool -t kbpv60 dump flash.bin
$ sudo ./pok3rtool -t kbpv60 reboot

Now you have a backup of the entire flash! Store this in a safe place, just in case of bricks.
It can be restored using a JTAG programmer/debugger.

Set a firmware version

You also might want to set a different firmware version to remind yourself this keyboard is now unlocked.
To do so:

$ sudo ./pok3rtool -t kbpv60 bootloader
$ sudo ./pok3rtool -t kbpv60 setversion 1.0.7u
$ sudo ./pok3rtool -t kbpv60 reboot

Just remember the small u means "unlocked".
You'll be able to check the version using
sudo ./pok3rtool list
or
sudo ./pok3rtool -t kbpv60 version
(this command might only work with the keyboard in bootloader mode)

Roadmap

  • Find a way to decrypt firmware from updater
  • Mod updater to unlock keyboard and allow reading flash
  • Unlock keyboard and dump flash
  • Find bootloader XOR encryption key in disassembled bootloader (same as pok3r)
  • Find out how the USB packets are encrypted No need, works natively with pok3r commands
  • Custom firmware? WIP

Notes

  • Official flashing tool compares last two bytes of firmware to find the XOR encryption key
  • 0x0023c1 contains the following string, where each letter takes up a byte: "USB-HID Keyboard"

Bugs

  • When DIP switch 6 is ON (switches FN with ALTGR and MENU with FN), pressing FN+ENTER (arrow mode) overwrites the FN function with the DOWN arrow. No way to exit this mode unless DIP switch 6 is returned to original position.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].