Giter Club home page Giter Club logo

v60mini-firmhack's Introduction

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.

v60mini-firmhack's People

Contributors

pellettiero avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

v60mini-firmhack's Issues

Update thread

I'd love to see the V60 mini's firmware opened up for hacking. This project hasn't seen any activity in a while and is still WIP. Any updates?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.