搜索
bottom↓
回复: 21

一个黑客的自白——HHKB BT修复纪实

[复制链接]

出150入640汤圆

发表于 2020-12-11 18:21:54 | 显示全部楼层 |阅读模式
本帖最后由 dragonlands 于 2020-12-11 20:58 编辑

标题很吓人,其实就是维修佬的小故事!!!

我还在念小学的时候,家里的电视机坏了,一个亲戚来帮忙现场修好,其实就是坏了一个保险丝,管状的那种,他是中学物理老师,动手能力很强。拆开机壳时,我看到一大堆从没见过的东东,只认识高压包上一个大大的感叹号。从此那个亲戚就成了我的榜样,我就走上了电子信息技术这条不归路。

我念初中时,听室友讲过黑客KEVIN的故事,KEVIN就是传说中那个用一台收音机就可以入侵五角大楼的著名黑客,现在成了信息安全专家。

一九九九年,教育网开始普及,我开始学习网络安全方面的东东,亲身感受到一些黑客软件工具的强大。

二零零二年,认识全球最著名的PS黑客,跟着他仿制SONY的PS芯片,技术上是成功了,虽然最后没创造多少经济效益。

此后帮朋友破解过几次单片机,有直接COPY的,有仿制的。顺便说一下,在设备功能不算复杂且单片机加密破解成本很高的情况下,仿制比破解更划算。

这次是修复一个键盘,就是LINUX程序员心中的大杀器——HHKB键盘,第一代蓝牙版。

这款键盘早就停产了,网上的口碑极差,除了卖得贵,其它一无是处。蓝牙经常掉线,电池不耐用,吃灰也会无法开机,许多用户在网上吐槽说是那个蓝牙模块挂了,而这个蓝牙模块在市场上根本买不到,即使买到同样芯片的模块,固件也不一样。芯片是博通的BCM20730,资料不开放,直到博通蓝牙事业部被CYPRESS收购后才放出规格书。另外,它还是古老的蓝牙3.0版。

这个键盘是从网上淘到的,当时是为了情怀,不知它发生过什么故事,反正我拆开后,第一时间就断定蓝牙模块坏了,因为蓝牙模块接口上没有任何信号,主芯片与EEPROM之间的I2C总线一直低电平,当时以为只是通病而已,后来拆开主控板,发现背面烧黑了,感觉应该是人为损坏的,不小心从USB供电接口上加了超高电压,而USB供电电路上的保护元件没起作用,发现USB的V+到GND之间串了两个270欧姆的保险丝样的电阻,不知道干什么用的,没有完好的键盘作对比,为安全起见,还是把它们拆掉了。

我的第一计划是从网上淘个HASU的自制蓝牙主板换上去,但这款键盘的市场保有量实在太小了,因为黑客看不上眼。只好从网上下载TMK的代码自行研究。幸运的是,MCU用的是MSP430F5510,我手头刚好有一堆MSP430的板,想怎么玩就怎么玩。最终确定解决方案是:沿用原来的主板和MCU,换一个蓝牙模块。刚好某宝上某无线模块经销商做活动,于是我从他那里买了一堆的样品,包括nordic、TI的各种型号,最后发现nordic的nrf52832最适合。真刀实枪地搞蓝牙,我还是大姑娘坐轿——头一回。其实蓝牙不难,特别是nordic的蓝牙芯片,资料很丰富,代码很清晰。我省掉了开发板,直接焊几根杜邦线就学会了。

这个项目最难的地方就是扫键扫描。前文说了,网上没有任何相关资料,FPU直接请TOPRE设计的电路板,连电容检测关键芯片都是打磨过的,更别说规格书了,TOPRE的芯片,从来就没有公开过。TMK的代码中,有HHKB经典有线版的按键扫描时序图和代码,但无法用在这个BT版上。幸运的是,我搭了两根线到MCU的TST和RST上,居然可以读出原来的固件,于是研究了一下TI的固件格式,用IDA PRO反汇编。键盘扫描部分存在大量的IO操作,很容易找到扫描函数的入口。根据这段汇编程序,我写好了C语言的扫描代码,但是无法正常工作,把这段汇编程序抠出来,做成ASM文件与我自己写的C语言程序混合汇编,还是不工作。不得已,飞了十几根线到逻辑分析仪上。发现我的代码运行速度是原版的三倍,于是把所有的延时时间加大三倍。终于,可以准确地识别到按键了。为了让坏键盘的原程序运行那段扫描代码,也是颇费周折,因为坏键盘上电后一直处在死循环状态,许多全局变量没有初始化。把每个键都按一次,记下index,再按index修改tmk代码里的keymap表。补充一下,把TMK的代码移植到MSP430上,花了我不少时间和精力。TMK的主控是伟大的AVR单片机,即atmega32u4,使用的是GCC编译器,许多语法与MSP430的编译器不兼容,MSP430的编译器主要有TI官方的和IAR的,都是遵从ANSI C标准,而GCC的编译器,天马行空一样加了许多新特性。基本上把TMK的程序移植好了,把按键扫描函数做好了,输出keyreport到串口上,主控部分的工作算就是基本搞定了。



蓝牙模块的程序,我用的是官方的HID KB的例程,结合BLE UART例程,做出一个从UART接收KEY REPORT,然后用HID模式发送给主机。加上一个特别的功能,就是匹配,因为不管是TMK还是原版的HHKB BT程序,都有一个重新配对的功能,换言之,就是蓝牙模块的程序要能够接收命令。弄这个配对功能时,遇到一些莫名其妙的问题,好在NORDIC的官方论坛都有答案。

这个特别的键盘最后是成功修复了,以一种特别的方式。顺便买了几十块pro micro的板子,有空再体验一下TMK键盘程序的更多的魅力。另外,细节之处,如节能方面的,还待细调。

这个维修项目本身没有什么价值,买一个全新HHKB HYBRID,充其量也就两千元而已,但是,我从这次维修项目中学到的东西是无价的。读MCU的固件、反汇编、测时序、使用开源代码、蓝牙5.0现学现用,这些技术不仅是维修佬的技术。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

发表于 2020-12-11 20:01:17 | 显示全部楼层
这个流程都能搞通,hacker其他设备仪器都是小菜一碟了。

出0入42汤圆

发表于 2020-12-11 20:57:28 来自手机 | 显示全部楼层
五阿哥的帖子还是一如既往的质量很高,非常感谢分享

出100入101汤圆

发表于 2020-12-11 21:19:45 来自手机 | 显示全部楼层
lz的自己的经历?牛

出0入0汤圆

发表于 2020-12-12 08:38:08 | 显示全部楼层
这就是技术员的快乐,就像楼主说的本身这件事对于维修键盘而言并没有什么价值,但附带的技能学习是无价的!

出0入14汤圆

发表于 2020-12-12 08:56:42 | 显示全部楼层
楼主牛人 这样也可以搞定

出0入0汤圆

发表于 2020-12-12 09:35:36 | 显示全部楼层
牛人,太厉害了,佩服

出0入0汤圆

发表于 2020-12-12 14:02:53 | 显示全部楼层
楼主好棒!

出0入0汤圆

发表于 2020-12-12 14:12:28 | 显示全部楼层
楼主棒棒,技术这么厉害怎么转律师了?

应该是律师更能赚钱

出0入4汤圆

发表于 2020-12-12 15:33:04 | 显示全部楼层
大牛!                     .

出0入0汤圆

发表于 2020-12-12 17:27:39 | 显示全部楼层
这个坏键盘,恐怕投入了2个月精力吧。

出0入0汤圆

发表于 2020-12-12 19:50:17 | 显示全部楼层
huangqi412 发表于 2020-12-12 17:27
这个坏键盘,恐怕投入了2个月精力吧。

上个月初楼主发帖研究蓝牙通讯的事,之前最重要的逆向工作应该不止一个月

出0入0汤圆

发表于 2020-12-12 19:50:22 | 显示全部楼层
这么多精力感觉都可以做一个了

出0入0汤圆

发表于 2020-12-12 19:56:23 | 显示全部楼层
必须赞!赞!赞!

出150入640汤圆

 楼主| 发表于 2020-12-12 20:05:37 | 显示全部楼层
我是谁712 发表于 2020-12-12 19:50
这么多精力感觉都可以做一个了

你说得很对,网上买套件,重新做一个,可能只要半天时间就够了。假如是我来设计这款键盘,就不需要那个msp430f5510了,这个成本很高,得二十几块钱吧。最优的方案就是NRF51822+CH554了,电子元件十五元以内搞定

出0入0汤圆

发表于 2020-12-16 22:45:54 | 显示全部楼层
这样都行?楼主是真正的大拿!

出0入0汤圆

发表于 2020-12-17 16:35:49 | 显示全部楼层
买了个蓝牙对讲耳机 对讲音质很垃圾 我买了蓝牙开发板,逆向了原理图,自己写了程序,问题解决了,很好用。只是,现在我挺后悔的。

出0入0汤圆

发表于 2020-12-17 22:52:37 | 显示全部楼层
膜拜大佬

出0入4汤圆

发表于 2020-12-18 08:43:40 | 显示全部楼层
大佬,厉害了!

出0入0汤圆

发表于 2020-12-18 09:26:19 | 显示全部楼层
DIY 精神,厉害了!!!

出0入1209汤圆

发表于 2020-12-18 10:13:27 | 显示全部楼层
这真是爱好啊

出110入93汤圆

发表于 2020-12-18 15:32:11 | 显示全部楼层
这只能偷偷搞,若是被老婆发现在整这种没有直接经济回报的事,直接骂人了,“孩子的补课费还不知道在哪呢,竟然敢花时间在搞这些事上。。。”
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-25 03:24

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表