分类: 街机

TPM攻击:通过 LPC 总线旁路嗅探硬件 TPM 的密钥

前言

本文对这篇文章的改动已经不能叫做翻译了,因此算作编译吧。其实在这篇文章发布出来不久,我就在 NuSX 上验证了这篇文章。当时最大的困难是给 TPM 芯片飞线,我拜托了一个做硬件的朋友帮我远程飞的线,并使用这篇文章获得了密码。

SEGA 果然还是日本厂商,在硬件平台之上的 Windows IoT 系统还是一如既往的留有设计缺陷,导致了这个密码可以用很久。

扯的有点远了,我们来开始看看它说了什么吧。

背景

TPM (全名:Trusted Platform Module)是一种计算机系统的扩展模块,用于提供安全相关的功能。其中, TPM 芯片是一种硬件安全的加密处理器,可以安全生成、储存密钥,并用来保护其他加密密钥。目前市面上流行的 TPM 主要是两个版本:1.2 和 2.0。在 2019 年的时候,有安全团队发现了部分 TPM 1.2 和 2.0 芯片,甚至是一些 Intel 平台的软件 TPM 的设计缺陷,会导致 TPM 硬件内存储的密钥信息发生泄漏。

这一攻击方法已经在2020年的29届Usenix安全大会上由一些安全研究员公开,并展示了利用这一攻击进行 IPSec 网络认证攻击,在他们的论文中表明,只需要至多45,000次攻击,即可在目标系统内获取认证密钥。

除了网络认证,TPM 的一个重要落地应用是 Windows Bitlocker ,Windows Bitlocker 是 Windows 系统内置的硬盘分区保护工具,可以以用户定义密码或透明加密的方式保护用户硬盘分区内的数据,防止任何非法访问。

在基于时序的软件攻击外,很多没有在协议上做额外保护的 TPM 模块还存在着协议旁听漏洞,这使得很多可以物理访问但软件有保护的硬件系统存在着更多的风险。比如,街机领域内的软件厂商为了防止自己软件被泄漏或非法修改,对于分发的产品内的整块硬盘采用了 TPM + Bitlocker 加密的方式。

Bitlocker 101

上图是微软官方介绍的 Windows Bitlocker 保护方式,核心是图中的 Volume Master Key(VMK),由两类来源生成,两者在解密作用上是等价的:

一是密码,密码可以是单纯的用户指定的密钥,也可以是单纯的 TPM 密钥(透明加密),或者是两者混合的方式。

另一个是恢复密钥,这一密钥在加密完成后会给出到用户或者存储到用户的 Microsoft Account 内,在用户忘记密码的场合,可以使用恢复密钥来解除保护并访问内部的文件。

通过Volume Master Key,衍生出Validation Info 和 Full Volumn Encryption Key(FVEK)。Validation Info 除密钥特征外还跟当前系统的硬件信息、启动信息做绑定,如果硬件或启动信息不匹配,会进入到恢复模式,要求用户给出恢复信息。这样的设计是防止旁路攻击,即恶意用户拿到硬盘镜像后通过其他系统进行硬盘访问。

而 FVEK 是加密硬盘的主密钥,它本身被 VMK 所保护。所以,在透明加密模式下,如果解密 VMK 的来源(TPM)被攻击产生泄漏,那么接下来的链条都会被攻击。

TPM 简单介绍

微软的官方网站上提供了大量的 TPM 基础知识,因此我们不会再展开太多篇幅来介绍 TPM 的设计和其他基础信息。但是有一点需要说明的是,可能会有朋友认为既然目标系统存在保护,在有硬件的前提下我另外启动一个系统(比如 Ubuntu或者别的Windows)就可以获取 TPM 密钥,但其实 TPM 模块本身对于密钥生成的目标系统有一个叫做“启动状态”的存储标志位,这一标志位类似于 uuid ,是目标系统初始化加密时候生成的唯一值,理论上无法被碰撞。因此很难通过旁路系统进行 TPM 攻击。

TPM 与系统之间的通讯一般是 LPC SPI 或者 I2C 总线。在本次分享内我们会对于基于 LPC 总线的模块的攻击方式,如果想在线下自行复现本文攻击,需要确定自己使用的 TPM 硬件模块的通讯协议,具体方式可以去查看对应型号 TPM 芯片型号的白皮书,然后跟本文一样通过一台逻辑分析仪来进行分析。

上手逻辑分析仪:原作者的 TPM1.2 攻击和分析记录

作者使用了一块 SLB93650 TPM 1.2 芯片来进行攻击示范,这一芯片使用的是 LPC 通讯协议。在它的生产厂商官方网站我们很容易就能找到它的针脚定义:

要嗅探 LPC 协议一共需要7根电线:LCLK(时钟)、LFRAME、LAD0、LAD1、LAD2、LDA3、GND(接地)。首先,使用飞线在主板的这一芯片上直接将这7根引脚飞线出来:

然后,我们来找点东西来阅读 LPC 协议信息。

作者使用了注释6中的逻辑分析仪来进行逻辑分析,配套的软件是 DSLogic。DSLogic 和 PulseView 都使用了 libsigrokdecode,因此是通用的。由于 LPC 是 33Mhz 频率运行的,因此使用 100Mhz 采样可以尽可能的放慢信号并进行解析。

在作者的首次捕获中遇到了两个问题:第一个是解码器将 TPM 消息报告为保留消息,并没有正确解码它们,第二个是逻辑分析仪没有足够的存储空间来捕获完整会话,只看到了启动通讯消息。因此,需要修正时钟讯号来支持自动解码,否则解码的工作量将会是天文数字。

首先,作者解决的是识别问题。这是一个 DSLogic 的逻辑问题,阅读设计文档很容易发现 TPM LPC 协议是有协议头的: START(0101) ,因此进行对应修复就可以。

另一个问题作者的解决手段有一点歪道。毕竟直接更换逻辑分析仪成本还是比较高的,于是作者采用单通道分别捕获多个独立通道的信息,然后再将它们混合。于是,就获得了所有信号。

检索 VMK(Volume Master Key)

完成上面的工作后, LPC 消息就被成功解码了。剩下的就是在转储的数据里面找到 VMK 。搜索方法也很简单(去读 Bitlocker 协议的定义),就可以知道搜索 VMK 的标志位:0x2c 0x00 0x00 0x00。

作者运气不错,第一次就捕获到了完整的信号,他给出的截图,VMK消息位于 0x00000024 的 TPM 获取命令中。

来展开看下这个消息:

用计算器转换下:

然后就是重复直到 VMK 长度的消息:

使用 FPGA + 脚本读取 TPM2.0

好用的逻辑分析仪也需要捕获+解码的过程,一旦整体流程跑通,那我们就可以使用 FPGA开发板+脚本程序来自动化这个过程。Lattice ICEStick 是一款廉价易得的开发版,配合脚本就可以很快简化这个步骤。

需要特别说明的是,TPM 2.0 协议中增加了对于发送、接收指令的校验,可以一定程度上防止消息截获,但是 Bitlocker 在使用 TPM 芯片的时候并没有启用这一功能。

举个例子,SEGA ALLS HX1 ,是一款世嘉于2019年推出的街机基板平台。它搭载了 英飞凌 SLB9665 TPM2.0 芯片,根据上面的介绍,很轻松就可以找到这一芯片的定义:

我们也来简单飞个线:

然后就可以获得信息了。

原文附录:

READING

HARDWARE

SOFTWARE

同样的试卷,不同的答案——“太鼓三国”基板拆解

机缘巧合,最近在闲鱼上连续收到了太鼓13和“太鼓三国”的基板。主要也是 256 这代和模仿它的设备都已经到了报废的年龄,因此也逐渐流入市场了。

“太鼓三国”是倍儿悦科技在2012年基于万代南梦宫《太鼓达人》进行山寨的国产游戏机。时间拨回2012年,日本和 EXPORT 区的太鼓达人已经换代成基于 Namco System 357c 的太鼓达人 KATSU-DON 版(新框体),然而中国大陆地区因为种种原因(这里面的传说有好几个版本,比如太鼓12亚洲版积货太多,或者万南香港狮子大开口要求一次性下定千台才能代理,等等)没有太鼓新版本进入中国(大陆地区)。

为什么我这么笃定的说它是山寨呢?因为它除游戏方法和音符标注完全对齐了太鼓达人 11 亚洲版之外,还内置了大量太鼓达人的原创曲目,这些音乐直到几年后的天下一音游祭才有限的在另外几个音乐游戏内收录,是万万不可能通过正规渠道流入第三方游戏内的。

想了想,好像至今也没有新的太鼓以官方形式进入中国,只有一台虹版作为场测机在国内到处流通。不过上次写了 DX 和中二之后没多久 DX 和中二就有国内代理了,希望这次我这个 Flag 也好用吧。

说回到“太鼓三国”,其实它刚上市的时候(大概2013年?),我就有在西安骡马市的汤姆熊玩到。当时对它的印象就是判定极差,游戏界面卡顿。虽然它给到了“液晶宽屏+太鼓”的配置,但是劣质的拖影液晶+开发质量极差的游戏,还是注定要失败的。

那既然在10年后收到了它的主机,就一起来看下吧。

截图早上直接发微博了,本地没有留,那就直接用微博上的图吧。

主机概览

到手是一个银色的小主机,脏兮兮的。外部接口的话不多,大概只有:

· 1个 12V 电源输入

· 1个 24+5 DVI 接口(实测的时候好像在 BIOS 里关闭了,没有视频输出)

· 1个 VGA 接口

· 1个 网络接口

· 1个 音频输出接口

· 4个 USB 2.0接口

· 2个 RS232 (COM)接口

以及正面没拍到的一个电源开关+指示灯。

说实话我还挺喜欢这个机箱的质感和尺寸的,如果它不是这么脏兮兮的,可能我会考虑收藏吧。

加密狗是深圳深思科技的S4。

收到手先不着急拆,先点亮一下看看。

我家里也没有 VGA 的显示器,因此用的是 Genki 生产的 ShadowCast + 绿联的 VGA 转 HDMI 转接头来直接投到电脑上查看。这样倒方便截图了。

“不装了,我也叫喀”(跟太鼓11一样)

因为没有去收 IO ,因此只开机看了下待机 demo play 和系统。在测试过程中因为一开始没插音频线,后面插上的时候,弹出来的小螃蟹控制面板直接把游戏顶出去了,我确实没绷住。

游戏场景切换的时候就能感受到明显的卡顿,跟我十年前玩的时候体验几乎一样。算了,直接开拆吧。

十年过去它已经不知道被拆过多少次了,反正外壳螺丝是不全的。拆下固定顶壳的螺丝,就可以将它分开。可以看到,侧面的两个USB和正面的 RS232(COM) 接口都是通过扩展线拓展出来了,主板本体是一个 17*17 的 thin itx 主板。

一块硬盘固定挡板,描述的还挺详细的。不过这台机器没有额外的硬盘,全靠主板上的 mSATA 固态硬盘。取下这块挡板,就可以看到主板本体啦。

这块主板淘宝上也有卖的,是行业定制的 AMD E-350 主板。

好大一个【渔】暴露了它其实主要是打鱼机。

不过我手上这块没有那个很明显的【渔】字。它的完整配置是:

CPU AMD E-350

主板 AMD Hudson D1

内存 金泰克 2G DDR3 1333

硬盘 Kingspec 金泰克 8G mSATA

它的内部结构就这么简单,因此拆解就只有这么简单的内容。但是还是想多说两句。

上面的这个东西,是 SEGA 在2013年同时期推出的 nu 低配版 nu sx。它也是基于 AMD 的低功耗平台的定制工控机。恰好这台机器我也有,而且当初逆向它的 TPM 保护机制花了很多功夫。

都说日本人死板、技术落后,但其实它们在工业设计,工控机系统开发上比起我们来说真的要强非常多。比如同样的 AMD E350 系列,SEGA 完整移植了 Nu 时代的完整安全保护设计(TPM+定制keychip),Windows IoT定制系统并且引入了完整的 mx 系列基板环境。反观倍儿悦的“基板”,公版AMD itx 主板+盗版Windows XP,也几乎没有什么保护。在在上个十年初恰好是上一波计算机硬件大爆发,拿着同样的试卷做出截然不同的东西,真的令人非常难受。

Namco SYSTEM BAN1 拆解

好久不见。我还在。

过去的两年多有很多很奇妙的事情,比如买房、装修、结婚什么的,有时间慢慢分享吧。

最大的影响还是工作依旧甚至更加繁忙,导致没有太多时间打理博客和服务器。这两年里甚至产生了让双子宕机的两次事故,在这里也跟他们仍在坚守的会员说声抱歉。

而到街机音乐游戏这边,国内的环境也在变好,虽然不是以我想像的样子。科乐美那边不太玩,但是也有新的跳舞机被世宇代理。世嘉这边,舞萌 DX 的铺货数量已经突破 1000 台 ,中二节奏New!!也已经正式铺货。不过南梦宫依旧在进行意味不明的全国场测,一台新框体在全国到处流动。

啊,果然还是想玩太鼓。

虽然街机没什么时间折腾了,但是新的基板还是在买。过去两年,我跑通了 TPM Sniffer 的流程,也解开了 SEGA ALLS 系列的 Bitlocker。Namco 的新太鼓基板 BAN1 也是基于 Windows 10 IoT + Bitlocker 的 PC 架构硬件,之前在日拍上都是天价。不过最近终于蹲到一个价格还可以的,是 機動戦士ガンダム エクストリームバーサス2 的基板。虽然最近北京因为众所周知的原因物流不太正常,但是好像赶上了末班车,总之在国庆假期期间到了。简单拆了一下,分享一下图片。

外观上,比之前的 ES3 ES1 来说,电源做在了机箱里,看起来不像是外挂了。其他的接口之类的倒是跟其他家的 PC Based 基板没什么区别。贴纸贴住的是一组 RTL8111 千兆网卡接口和两个 USB ,以及主板上板载的 HDMI 接口。

加密狗还是万年不变的优盘序列号,可以通过量产工具使用第三方优盘仿制。不过看介绍有使用圣天狗 HL 系列的加密狗进行保护。

先从上面的硬盘口打开看看吧。是双SSD。简单插电脑看了下,是一块系统盘(64GB)和一块游戏硬盘(128GB)组成,全盘都是 Bitlocker 加密的。

两块硬盘和内存和加密狗应该都是整机解决方案内提供的,全部都是 innodisk 和 silicon power 的牌子。看了下通电时间,都是395次 4000小时 左右,看来高达这个游戏一年多就被换掉了。

那么接下来拆开看看吧。

说实话,这个里面真的挺磕碜。都不用跟 Taito TypeX4 比,就连跟 SEGA ALLS 比,都比较寒酸。不过好在还是提供了显卡的固定支架。

电源没有看到铭牌,也没继续往下拆。但是一个 80Plus 的认证标签倒是贴在了最外面,有点怪。

三洋的风扇。

有一个很有趣的细节, BAN1 的 FPanel 上插了一个拓展电路板,用于提供上电自动开机和硬盘指示灯的功能。我试了下,把这个小电路板拔下来就不能自动开机了。好怪。

显卡是 ALLS HX2 Lite 同款的 GTX 1050Ti 。

内存也是 Innodisk 的,两根 4G 2400。

主板提供了 1 条 PCIE x16 、 1 条 PCI 和两条 PCIE x1 接口,还提供了四个独立的 RS232 COM 控制芯片(两个在主板 IO 上,两个作为扩展口,扩展在 PCIE 接口上)。话说主板上的 PCI Localbus 的图标好怀旧啊。

其实拆机的一个目的是找一下有没有独立的 TPM 芯片,但是找了一圈好像并没有发现,只看到了 TPM 的插针。那既然没找到,只能从镜像入手看看了。

总之就拆到这里,后面再分享更多 BAN1 的情报。

在 Linux 上挂载 System357 硬盘

按:4月份的时候这篇文档的西班牙语版就已经出现在国外论坛上,但其实方法早就流传很多年了。 System357 硬盘比起家用 PS3 来说,省略了安装自制系统-导出 eid_root_key 的步骤,使用了同一套密钥组。这次的文章翻译会省略一部分提取 eid_root_key 的步骤。PS3 的系统研究,包括本文,都大量参考了 PSDev Wiki 的相关内容(https://www.psdevwiki.com/ps3/),在这里也一并感谢。

前言

本文主要描述的内容是将 System357/369 的硬盘挂载到 Linux 电脑中。在本翻译中,所有的操作环境是基于 Linux Mint 20.1 x64 的 Cinnamon desktop 标准版进行的。对于中国的用户来说,这个发行版镜像可以从境内镜像站快速获得:

https://mirrors.bfsu.edu.cn/linuxmint-cd/stable/20.1/linuxmint-20.1-cinnamon-64bit.iso

而在本文中,我们使用太鼓达人绿板(太鼓の達人 グリーンVer),S357C-11E,ST4100-1-NA-HDD0-A 作为解密源硬盘。

已知的研究已经对于 PS3内置硬盘(英文) 的加密情况有了大致的了解。每个家用版型号(即除所有街机基板型号)都有独有的一套密钥。在解密后,PS3 的系统有特有的分区表,以及在某些型号上高达10个的分区。其实并不太需要知道所有分区的功能,只需要关注几个特定分区即可。比如说, dev_hdd0 是用户数据、系统分区、配置和 swap 区域,dev_flash2 是在一些有 NOR flash 的型号上保存终端和其登录用户数据的区域。

上图是 PS3 硬盘逻辑分区布局图,可以在下面的链接查看原文
https://www.psdevwiki.com/ps3/Talk:Harddrive

开工前的准备工作

1)首先,安装(我推荐安装,因为大陆众所周知的原因,部署编译环境非常蛋疼)或以 LiveCD 的模式启动 Linux Mint ,在用户(本文默认为 woodu)目录下创建如下目录:

/home/woodu/ps3
/home/woodu/ps3/dev_hdd0
/home/woodu/ps3/dev_hdd1
/home/woodu/ps3/dev_hdd2
/home/woodu/ps3/dev_flash1
/home/woodu/ps3/dev_flash2
/home/woodu/ps3/dev_flash3

2)下载 PS3 HDD Keygen.sh 脚本并解压到 /home/woodu/ps3 执行或从这里手动从hex值生成 ata_key.binflash_key.bin,这些key 就是解开 ps3 硬盘的加密的密钥。

灵魂的5

3)安装必须的编译工具(apt install build-essential gcc linux内核header 等),并下载 bswap16.ko 的压缩包(此压缩包包含了针对 4.15.0-54-generic kernel in Linux Mint 19.2 的编译成品,在本文中将重新编译适合当前内核的版本)。

下载后直接进到 source 目录中,并 make 即可。之后将成品 bswap16.ko 也移动到 ps3 目录下。

获得素材:bswap16.ko

4)完成以上两步后,你的 ps3 目录应该是这样的,除 ata_key.binflash_key.bin 之外,其他的 key 可以帮你解开其他的分区,根据需要使用即可。

是这样的

开工

接下来需要在 Terminal(终端)里执行一系列指令,以正确的将硬盘挂载为可读写的分区。

为了防止将原版硬盘破坏,你可以使用 dd 命令或在 windows 下为硬盘制作整盘镜像,持有整盘镜像的你可以将它挂载为虚拟设备,比如使用下面的指令把你放在 /path/to/your.img 的文件挂载到 /dev/loop1

losetup loop1 /path/to/your.img

相反,如果你胆子大(像我一样买了好几台357c),可以尝试直接用移动硬盘盒或直接连接 SATA 到设备上,此时,使用的设备盘符就是 /dev/sdx (取决于你的实际情况,你需要使用一些系统指令确定 x 在你电脑上的真实值)。

1)打开 Terminal 并 sudo su 进入 root 下,因为设备操作一直需要 root 权限。

2)安装在准备工作时编译的 bswap16.ko ,它承担了将 Big Endian 到 Little Endian 的转换工作。

insmod /home/woodu/ps3/bswap16.ko

3)将镜像/物理设备进行挂载。

使用镜像:

cryptsetup create -c bswap16-ecb -d /dev/zero ps3hdd-bs /dev/loop1

使用物理磁盘:

cryptsetup create -c bswap16-ecb -d /dev/zero ps3hdd-bs /dev/sdx

4)使用准备工作获得的 ata_key.bin 和 357 使用的对应算法进行解密挂载:

cryptsetup create -c aes-xts-plain64 -d /home/woodu/ps3/ata_key.bin -s 256 ps3hdd /dev/mapper/ps3hdd-bs

并识别它的分区:

kpartx -a /dev/mapper/ps3hdd

5)稍事休息,确认磁盘已经正确解密:

ls -la /dev/mapper/

如果正确的话,应该可以看到 ps3hdd ps3hdd1 ps3hdd2 ps3hdd3 等一系列分区,分别指向 /dev/dm-* 。

其中 ps3hdd1 VFLASH ps3hdd2 dev_hdd0 ps3hdd3 dev_hdd1

6)继续挂载 VFLASH 吧。 VFLASH 是在第一层加密后又有第二层加密的双层结构,所以要把刚刚解密的指令再来一次。先挂载 VFLASH 容器:

cryptsetup create -c aes-xts-plain64 -d /home/woodu/ps3/vflash_key.bin -s 256 -p 8 ps3vflash /dev/mapper/ps3hdd1

并分区:

kpartx -a /dev/mapper/ps3vflash

7)上面的这一切都做完以后,应该就可以映射分区了。

首先,挂载主分区(如果需要写入的话,你需要安装可写 ufs2 的内核模块,并把指令里面的 ro 替换为 rw):

mount -t ufs -o ufstype=ufs2,ro /dev/mapper/ps3hdd2 /home/woodu/ps3/dev_hdd0

接下来是一些 FAT12 FAT16 FAT32 的分区,这些分区系统会自动识别,但自动挂载的分区可能会有问题,因此还是建议通过命令行手动挂载:

mount -t vfat /dev/mapper/ps3hdd3 /home/woodu/ps3/dev_hdd1
mount -t vfat /dev/mapper/ps3vflash2 /home/woodu/ps3/dev_flash1
mount -t vfat /dev/mapper/ps3vflash3 /home/woodu/ps3/dev_flash2
mount -t vfat /dev/mapper/ps3vflash4 /home/woodu/ps3/dev_flash3

有一些尺寸上的注意:dev_flash1 往往大概 200Mb 左右大,dev_flash2 往往在16Mb 左右, dev_flash3 往往只有约 512Kb

8)全部做完之后,就可以在系统里确认整个硬盘的挂载情况了。

lsblk -b /dev/sdx

9)挂载完毕之后,就获得了对 System357 硬盘的完全控制权。但请注意,千万不要修改对于此硬盘的任何权限和所有者的信息。如果要修改数据,请使用 root 用户,但你可以在普通用户的文件管理器内经过授权后浏览文件。

10)请记得,浏览/使用结束后卸载掉分区,尤其是你修改了内容的情况下。

umount -l /home/woodu/ps3/dev_hdd0
umount -l /home/woodu/ps3/dev_hdd1
umount -l /home/woodu/ps3/dev_flash1
umount -l /home/woodu/ps3/dev_flash2
umount -l /home/woodu/ps3/dev_flash3
kpartx -d /dev/mapper/ps3vflash && cryptsetup remove ps3vflash
kpartx -d /dev/mapper/ps3hdd && cryptsetup remove ps3hdd
cryptsetup remove ps3hdd-bs

常见问题(略)

我看了眼,感觉没什么特别的。

主要是如果需要确认是否解密成功(每一个调用 cryptsetup 的地方),需要看下已挂载节点的内容是否大部分填0,填0就问题不大。

致谢

感谢 graf_chokolo 在 PS3 逆向工程中卓有成效的贡献,并提供了 Linux 上的支持,没有他,kpartx 就不能支持 PS3 的分区表。

感谢 3141card 对于 PS3 硬盘的加密算法和读取方式的研究。

感谢 guerrini97 修复了作者原来旧脚本中的问题,并重构了 bswap16 模块,并为 nbd-client 提供能力。

感谢 Decaf Code 重构 bswap16 模块并兼容现有内核。

感谢 einsteinx2 指引解锁了 PS3 硬盘的 8% 空间,并为本文提供灵感。

感谢 Yugonibblit dump了 CECHG01 型号的分区表,并确认了该型号及衍生型号的加解密钥和对应算法。

感谢 mlody95pl 指出了本文的错误并编译了 UFS 模块。

后记

从我获得太鼓旧框开始的 2020 年下半年,真的是太精彩了,尤其是太鼓达人在中国国内的圈子里。现在,虹版在中国的代理也已经有官方暗示了,而官方框体也通过各种形式进到了国内。希望中国的太鼓达人有个美好的明天。

获得道具:太鼓达人12亚洲版(世宇科技版)

朋友们,好久不见。我希望这个博客还是能给大家带来一些有意思的东西。这也是我重新写博客的初衷之一。

开篇简要捷说,我终于买到太鼓达人的【旧框体】了。不过严格意义上也不是这样完整的一台:

source:《太鼓达人 亚洲版(简体中文版)服务说明书》

从上图可以看到,其实太鼓达人的旧框体可以拆解为前后木箱两个组件。由于我实在不想处理包含高压电的显像管部分(小声:其实也是不会,担心被电到),以及考虑到后木箱的体积在寸土寸金的北京实在太不友好,于是就拜托卖家把主机、JVSIO 和所有配线电路板拆解下来,塞到前木箱里,打了个木架发过来。

从番禺到北京,前木箱体积大概一个立方,物流+木架大概750元,外加4~5天的时间。在特殊时期能有这个速度已经很开心了。整体体验的话,费用比几年前被瓜总坑买盗版popn框体的时候要贵不少,不过这次淘到的框体的拆后价格很便宜,而且补齐了我手头没有 12 亚 HDD 的问题,还是很开心的。

拆解和再组装

早上就在拆解木架和捋线,主要是把卖家整坨发过来的框体内所有连接线里面必须的部分拆出来,诸如高压线路(220v/110v)、功放和音频及控制线,就可以放弃不要了。拆解后的结果让我很高兴:所有游戏控制器外部连接线,都完整的走在 JVS 的 FUTA PCB 上。也就是说,并不需要给游戏的控制器、投币部分额外接电。这样的好处是,木箱外只需要接 VGA、一路220v市电和音频线即可,非常的清爽。

参考阅读:FUTA PCB 接线图,来自《Taiko AC 13 Manual》

我很早就在尝试自宅运行 256 平台的太鼓,也根据前人经验改造过ATX-256电源(参考阅读:https://woodu.me/taigudarenjiukuangtidianyuanxiangtu/),于是有一个额外的改动就是把 256主机下面的 JVS 主机里面的两个电源条(参考阅读:https://woodu.me/waiwangkandaodetaigu-system256-neibudianlubantu/)改造成 Flex 的 ATX 电源。这样改造之后,以后更换 ROM 只需要更换 256 设备即可。

改造后,如果不考虑显示器的供电和功放、音响问题,那么只用一个前木箱就可以搞定整个太鼓的运行。实际的效果还不错。

太鼓达人12 亚洲版(世宇版) 前木箱总成

太鼓达人 12 亚洲版 硬盘和加密狗

T1200-4-NA-HDD0-A,太鼓达人12(145首)亚洲版

世宇的这批机器还是在143之前很多年进来的,所以是145首也不稀奇。

单开一节其实是想聊聊 IDE 硬盘的替代品的问题。年后我尝试了一下 CF-IDE ,就是用 CF 卡来模拟 IDE。在之前若干失败尝试后,CF-IDE也失败了是让我最为诧异的。严格意义上说 CF 133X 的协议和 IDE 是完全通用的,但256仍然拒绝识别。具体表现是在游戏解密卡读取结束后,首次访问 IDE 设备的时候,IDE灯(橙色)长亮,256失去响应。

很迷,好在现在 IDE 硬盘还便宜。

希望早点能解决这个问题。

跟自己和解

仔细算算,上次在火车上写作文应该是十几年前的事情了。那时候从北京玩完回家,在通宵的硬座上抱着电脑写作文。当年的自己还真是活力四射。现在自己也已经很快奔三张了,北京还是当年那个北京,我也基本适应了现在在北京的节奏。日子过的真的是快呀。

不过高铁速度变快了,人也没那么有耐心了。加上春运太拥挤,行李过多,还是留在家里写吧。

Flag 回收

日常生活中,有仪式感的事情不多,但每年都还有一些要做的事情。

今年提前一天回家,在晚上用了两个小时的时间稼动了太鼓14和maimai Yunet Finale ,还顺便给父母去超市买了东西,并摸了几把游戏。今年突然爆发的疫情导致整个国家都进入了紧急状态,所以我也就是稼动了之后就回家了。

哦对了,还去肯德基把宝可梦今年的新玩具凑齐了,公司的事情也算是比较符合预期,因此也算是年前把所有事情都比较好的收尾了。

从点点那篇之后,我暂时的封笔了一阵子,也是一直无心在生活沉淀上,变得浮躁了起来。而开始写新的一些胡说八道的初心其实是想要把日子过的更有意思一些,因此觉得不如就先不动笔了。新的一年还有不到一个小时就来了,总之还是要先拔一下去年的一些 Flag。

近况更新(二〇一九年三月

     蜗牛很早就清理了,后来发现扩展方便还是得用大塔机箱。最后我的NAS 配置还是 8100+H310 itx,硬盘就用的去年八月从美亚薅的羊毛 2*8T 。

     硬盘还在出,茶盘也一直在用。有几个bug还在排查到底是硬件还是软件的问题。

     摩托车换了。踏板养老。

“巡弋300”的图片搜索结果
巡弋300

太鼓达人旧框体和硬件(太鼓达人(旧框体)电源详图

      System 256 平台尝试了一些 IDE 硬盘的替代品,分别是 SATA-IDE、TF-IDE和 DOM盘,这三个都失败了。年后再试试CF-IDE吧。

      另外一个尝试就是和国内偶像大师无印爱好者圈子合作了一下,他们发现国内华立的某框体的触摸屏和无印通用,因此帮助他们买了一台这样的机器。

华立 IQ乐园 2011 触摸屏和偶像大师无印版兼容,咸鱼上特别便宜

总体来说复刻是成功了。不过可能其他人没有我这种收藏的想法,因此他们最近也在出售或者合作。有兴趣的可以通过本博客的关于联系我,我来中转给他们。

中国音游街机近况(2019中国(北京)国际游乐设施设备博览会游记

首先自打脸,那篇文章之后没多久 maimai DX 国行就在场测,并在去年年底稼动了。而且WACCA(华卡音舞)、 Chunithm(国行中文名:中二节奏)也在途了。在这里首先祝贺国内玩家终于获得了尽可能接近日本玩家的体验(网络、排名),但仍然要拍一瓢冷水:中国乃至目前为止的海外在日本眼里仍然是二等公民,很多东西除了祈愿,动手有的时候也是不得不做的选择。

点点

点点在院子里睡了。

现在还时不时去看看他,开春了去在他脑袋上种一些他喜欢的猫草吧。

点点新年好呀,找到自己的新家了吗?

从元旦拖到春节

       本来元旦的时候就想动笔写点什么了,但到了年根是公司传统的年终决算时间,大家都在忙碌,我手头也是一脑门的官司。从开始工作到现在我有很多观点都改变了,但初心是没变的,并在这一年得到了加强:无论从事的工作是怎样的,无论遇到什么样的事情,永远要关注自己得到的能力和自己的成长。有所改变的是自己对于“成长”的理解。每个人在每个年龄段关注的事情是不同的,更多的改变是关注的事情带来的视野和聚焦点的变化。

       新的一年,新的 flag 。

       在去年元旦的时候我的关注点还是对于自己的世界观和认知的构建,并尝试用自己已有的世界观体系来解读世界(也就是所谓的茧房的构建)。但在现在这个时间节点,我会意识到自己有更多未知和之前的行动的错误,今年尝试了一些修正,但效果有限。在明年我给自己的定位还是继续的调整自己认识世界的方法,努力在不重建自己的前提下更好的生活下去。

       至于兴趣方面,接下来的一些时间里,我会把一部分精力放在新的街机平台上,这个看进度进行更新吧。毕竟现在关注这个也多了,做的人多了,自然我也可以不用那么着急和吸引目光了。

       潍坊这边我还是很希望他们可以进到 maimai dx的,但今年这个样子去面谈可能性也不高了。等国家大环境安定了再说吧。

       大狗老师有一句话,我觉得说的很对,在文章最后也想跟大家分享:

              在不安定的岁月,普通人所能做的是尽可能保护好自己和家人。

       新的一年,希望大家安康。

太鼓达人(旧框体)电源详图

前文详情:https://woodu.me/waiwangkandaodetaigu-system256-neibudianlubantu/

时隔接近两年,我也算是终于把很久之前看的“ System256 只需要一个 ATX 电源即可启动”这句话给研究了一下。

这篇文章主要是展开介绍了一下太鼓达人(旧框体,以 11 亚洲版为例)的电源供应模块,包含详情图和说明书。

首先是详情图,从上一篇文章可以看到,太鼓旧框体的 System 256 主机下面是 JVS IO 和电源供应板,电源供应板有两枚。这两枚电路板一枚负责 +5V 供电,另一路负责 +12V 供电。

有一点不吐不快的是,我之前因为思维惯性,在电路板的 PCB 上找了很久的型号,但是今晚翻到说明书发现它的铭牌是在电容上。真是令人感到很尴尬。

但这个电源转换版真的是日本非常常见的型号,由 TDK-Lambda 提供。具体来说的话,是之前的 DENSEI-LAMBDA 制作的。

这个系列的电源板,输入电压是100v,所以中国版的太鼓达人也是需要内置 220v~ 转 110v~ 的变压器的。而型号命名规则,是 VS{功率}B-{输出电压},具体的定义和系列是下面的图,点击这里可以下载源 PDF文档(日本网络可能需要科学上网)

话不多说,上图吧。首先第一块是 +12V 输出板,型号是 VS75B-12 。

然后第二块是 +5V 输出板,型号是 VS50B-5 。

有点糊了……太晚了就这样吧)

以及最后,我尝试废物利用改造了 蜗牛星际 拆下来的 120w 电源(毕竟50w+75w=125w),来当作比较简单的256启动电源。

放一个 14 的启动视频好啦。大家晚安。

二〇一九年三月

发现已经三个月没有更新博客了。过去的这三个月发生了好多事情,让我意识到能够一直保持愤怒和好奇心是非常困难的事情。不知道是年龄大了还是事情真的太多,“精力有限”的感觉真的是一直在围绕着我。这种状态让我感到很不舒服,我需要尽快的调整一下自己了。

从15年误打误撞开始做 maimai 的魔改以来已经过去了很久,久到我甚至都很久没有放精力在这上面了。但是还是稍微做了些事情在上面。最近可以拿的出来的是我开始出售主机的替代硬盘。这也算是唯一的相对比较合法的东西。

SSD for Ringseries.点击这里可以去购买

而对于我个人来说,一月年前很忙,二月过年回来就搬家,三月份一抬头也已经过去了一大半儿了。人是越来越忙,但是碌碌无为的感觉却又越来越明晰。因为合租的家伙买了辆车,我家也基本达到了人均一辆车的水平。而我最近已经开始选择摩托车通勤了。如果算上摩托车的话人均大于一辆车,也可以说是北京高端通勤人群了。

我的通勤车,铃木 GSX250r

三月是我司的晋升季,虽然天天在完成日常工作之外还要去准备各种材料,但也不是完全埋在工作里面的。比如这个:https://post.smzdm.com/p/akmrxplk/ ,是我国一些伟大骗子制造的电子垃圾。虽说是电子垃圾,但是只要足够便宜,那就可以买回来玩一下。是的,我也跟风买了一台。昨晚拆了一下,把不能用的部分拆下来装了个台式机,准备找个机会处理掉,机箱打算上一套 itx 来跑 nas 。垃圾还没收全,那就先放几张图作为预告吧。

我收的这台成色相当不错,主板甚至一点灰尘都没有。已经跟其他的淘汰垃圾装好了。

嗯,希望讲这篇的文章不会拖太久~

UGC 和街机音乐游戏

2011 年下半年我升入了大学。在高中被压抑了几年的打太鼓的兴趣被解放出来。
那会儿的互联网已经比较发达了。虽然还是 Web2.0 初期,但是人们已经热衷于把各种线下的情报搬到线上。
比如说,大型游戏机爱好者异地出勤(在外地去当地的游戏机厅)的时候,需要的位置信息。
当时,我们也做了一个用户主动发布记录的游戏厅位置记录网站,叫做“太鼓太鼓”。
基于ThinkPHP 3.0 做的。
啊,ThinkPHP 3.0 已经是 6 年前的事情了吗?

源代码:https://github.com/Woodu/taiko.tk

在同时期,除了贴吧、人人网等公开的信息渠道之外,还有诸如中国太鼓联盟论坛(cntaiko,已关站)等一大批基于已有程序的网站。
刚刚举的这些例子分别是几种不同的 UCG 平台,以“太鼓太鼓”为代表的程序,包括通过 mediawiki 等 wiki 建站程序建立的情报网站,是单纯的信息交换平台,这类网站没有任何社交属性,只是单纯的提供各地游戏机厅分布信息等的储存和展示。而人人网(当时)提供的公共主页之类的更类似于现在的微博金V 号,由管理者人工筛选一些跟主题相关的话题(比如游戏内容、游戏新情报或者单纯的地区交友贴),然后发动成员(会员)进行交流。

至于贴吧、 cntaiko 之类的论坛(公告板)性质的网站,其存在的社交性质是最浓厚的。这类平台是大部分玩家进行游戏外交流的主要途径。当然,除了贴吧之外的其他论坛更多的是以“大神分享——玩家讨论大神分享”为主要内容。直到今天的 BEMANICN 、 sows 等论坛,也是同样的模式,只不过现在的“大神”已经不是一个人,而是一个组织了。

上面所说的这些渠道所存在的核心价值,在于其本身能提供的信息价值能否保证会员持续留存。比如说 wiki ,里面的信息是否及时和准确,如果是作为参与者能否获得满足其需要的回报(论坛积分),再比如 BEMANICN 和 sows 提供的积分和积分所可以换取的服务(网络服务、游戏程序资源)。

并不是说论坛到现在为止就彻底失去了其意义,只是人们讨论非资源相关的吹水活动已经不可逆转地转移到了更方便发言和更难以追踪的即时通讯工具上了。

到了新时期 ( 2012 年之后 ) ,经历过论坛关站潮和贴吧清理之后,很多玩家,特别是以地区为划分的区域性玩家群体已经转为相对比较封闭的 QQ 群等方式进行日常的交流。这种方式让玩家们之间有了明确的界限,玩家之间的阶层划分变得更加明确。此时,玩家主要的交流也从简单的游戏信息交流转变成了以游戏为主题的综合社交。

由此可见,玩家之间,特别是同时期的玩家之间逐渐由公开转变为封闭社交。这带来的结果就是新、旧玩家之间的信息交流进一步割裂。除此之外,因为“熟人效应”,新玩家,特别是水平不够高或者跟老玩家认知不同的玩法的新玩家更容易遭到老玩家的排斥和抵触(舞萌游戏机“拆机”(游玩时比较用力导致机器损耗程度变快的玩法)事件、乐动魔方圈插队吵架,等等),甚至是群起而攻之。这也导致很多玩家“拒绝混圈”。

另一方面,在大型游戏机的老家日本,因为新款的游戏机台已经逐渐网游化,之前很多民间维护的信息已经由官方信息进行了取代。比如世嘉社的 maimai 和 chunithm 在 Aime.net 上都可以很方便地查找到每一台机器的所在地,这也使得最初很多民间维护的网站失去了意义。所以很多地区交流的玩家转为了直接从官方的网站分享自己的游玩记录,这也使得一些玩家间的交流变成了单纯的游戏记录分享。

梳理清楚这条脉络之后,我们也要认识到,每个人对于同一个事物的认知是有先后的。以《太鼓达人》为例,虽然目前大陆通行的太鼓达人街机依然以 10 年前的《太鼓达人 12 亚洲版》为主,依然有新的玩家进入并参与讨论。这本身是街机游戏的性质所致,即游戏本身玩法确定,以总参与人数胜过服务某一批特定玩家。其原因是街机机台本身是摆放在公共空间的,公共主页、群等作为在其之上派生出的交流渠道不可能覆盖每一个游戏机台的玩家。那么在这种情况下,每个在这些交流渠道上产生的内容它们的价值又在哪里呢?

我认为,价值主要体现在两个方面。

第一,游戏玩家确实需要一定程度的游戏外社交。大型游戏街机发展几十年,早于家用机一辈,从出现在公共场所(游戏机厅)的第一天开始,就承载了一定的社交角色。从最早的游戏机房内的社交,转变到至今的网络刷卡,在线对战,不变的核心仍然是其保留的竞技性。竞技性促使玩家投入更多的金钱(游戏币)来精进自己的技术,从而获得其他玩家的对自己的认可。这期间增加的花费也是大型游戏机设计的本意。

当然,这里面不包含给庄家送钱的垃圾赌博机。

第二,用户(游戏玩家)产生的内容可以作为游戏运营的参考。虽然整个日系游戏机已经完全退出中国市场,通过华立等代理商来进行运营,但是我们也可以看到,最初舞萌的官方运营微博——精文世嘉舞萌maimai 官方账号确实在微博上作为一个活跃度很高的存在来让各地玩家感受到游戏官方的运营诚意。即使精文世嘉已经结束运营这么多年,通过海外渠道传播进来的同款游戏的情报,也让 maimai 成为了国内为数不多的活跃且广泛的音乐游戏。

简单整理之后不难发现,一款游戏里,它们的受众是如何反馈自己从游戏处获得的信息,可以决定一款游戏的传播广度与深度。假如中国的大型游戏机市场还有第二春的话,我很期待新入局的人是怎么经营用户生产数据的。