分类: 硬件

家庭网络设计与FTTR解决方案

想写这篇很久了,大概是 2022 年的某篇提到的?

嘛,不重要了。在懒得动笔的这段时间里家里的一些设备选型也有变化,去年年底借着组内分享的机会把这篇文章写了,就也算借这个机会备份下本就属于自己的文章。

一转眼买房装修也过去快四年了。装修这件事非常感谢夫人精心设计了全屋的工作区,以及两边父母轮流抽空来帮忙盯装修和搬运东西。装修那会儿正是我在现在这组最忙的时候,现在这个组也到了“飞鸟尽良弓藏”的日子了,大概最近几个月就尘埃落定了。所以,也是时候来回顾下人生第一次买房和装修了。

(可能回顾完就该去刷题了?哈哈。)

买房

我是大概在 2020 年开始决定要买房的。结婚是其次,主要是跟家里长谈了几次之后觉得经济趋紧,家里又没有非常强的理财技能,最好还是把家里的固定的资产从老家借助我在北京的工作迁移到一线城市,虽然都在跌,至少跌幅不会太离谱。 2025 年回看这个决定,当年 1.2 万/平卖掉的老家市中心房子至今也就在 8000 /平 左右徘徊(-35%~),重要的是成交量也很感人,我现在在住的地方虽然也在跌,也不过只是亏掉了装修的钱(之前算了下扒了重装 + 所有家具家电一共 60w rmb 左右),总体来说作为保值的目的还是达成了。

扯远了,反正总之在权衡了自己能挣多少钱、家里有多少钱和未来能有多少钱这件事之后,选了现在的地方。

大体上是一个南向的两居,我俩在客厅正中间的位置打了一道镂空隔离门,门里面有窗的部分算书房,外面是客厅,勉勉强强算是做成了三室。

这个户型勉强还算方正,但是因为厨房整体是个承重墙,所以还是要考虑屋内的无线方案。至于有线,因为之前某些工作已经上了万兆多模 850nm+ 的方案,因此也算是已经选过型了。

FTTR 是什么?

FTTR 是英文「Fiber to The Room」的缩写,意为“光纤到房间”。随着中国家庭宽带事业的发展,中国的家庭宽带从早期占用电话线的拨号上网,进化到网线到楼的PPPoE,再到最高支持百兆宽带的 ADSL,再到光纤到楼,直到现在的光纤入户,宽带带宽也从16.7kbps-56kpbs到了现在的万兆宽带到家。

光纤入户可以提供高达10Gbps(北京联通现售最高带宽产品)理论值25Gbps+的下行宽带,此时家庭内的普通网线就变成了限制宽带速率的瓶颈。因此,无论是极客社区还是运营商,都纷纷开始推行光纤到房间,即在入户光猫拨号完成后,到各终端部分使用调制解调器+光纤来提供远超家用普通网线带宽的装备。

现代超六类、七类网线也可以提供超过10G的带宽,但因为电线粗大且屏蔽要求高,电模式的交换机、路由器和有线网卡费用高昂,在一般家庭内部署成本太高,所以没有铺开。

为什么要组建家庭网络?

在公司写这个是因为公司的大部分年轻人还是合租单间,除非非常 geek 的同学基本都没怎么接触过家用组网方案选型。放到互联网上,这个问题就很显而易见了:我 200T 的硬盘总不能都插一台台式机上吧?

因为需要有数据存储分离+高内网带宽诉求。

作为一个混迹互联网20年+的老登,个人数据规模(不含影视频、音频)已经超过6TB+,而且还在增长中;除此之外还有很多PT站资源、站点备份等数据,都占用了大量资源。在2021年买房之后我就在规划网络布局,考虑到个人在家使用设备习惯,有两个点需要做重点考虑:

1、个人存储数据(含PT等大型资料)约20TB左右,机械硬盘工作噪音大需独立存放:台式机长期开机电费消耗高,机械硬盘频繁启停故障率高。

2、内网数据交换比较频繁,需要大内网带宽

在局域网内实现超过2.5G的网络有光、电、无线三种方案,一起对比看下。

方案对比

项/方案光/单模光/多模无线
速率10000M/上下行对等10000M/上下行对等10000M/上下行对等9000M/上下行对等
布线难度高单模要实现超过5G需要多路布线中多模只有成品线中线长超过30m需铺设超六类及以上电缆线,并做屏蔽处理,且面板、模块都需做定制高本质上无线万兆也强依赖布局+点位,到中心路由器还是需要以有线为主,如果全无线 Mesh 家庭环境无法解决干扰问题
设备成本高双口万兆/25G双口(一收一发)贵,而且交换机(终端多设备接入)成本高低单口万兆模块、接口成熟,近些年百元级别的万兆交换机也逐渐铺货高外设成本还好,但为了保证能至少跑到万兆需要做全链路的屏蔽,成本较高低仅需普通AC6000+的无线路由器若干即可
稳定性
升级空间高模块对换普通单模线可跑到12.5G/单路 - 25G无线模块决定了性能上限中随电协议升级最高可到15G无wifi协议升级设备要全换

因此,有线方案选择了光多模方案。

为什么不用各大运营商的“FTTR”方案?

中文社区里面已经有很多很成熟的 FTTR 自建和运营商方案对比,可以参考:https://post.smzdm.com/p/ao94n4l6/

其实本文探讨的也是 FTTR (光纤到屋内)的一种,相比起上面社区的文章,本文因为使用成品多模线,因为成品线端子巨大,在一定程度上牺牲了布线的灵活性,但是降低了很多施工的复杂度。

扯远了,来回答一下标题上的内容。

最重要的一点是,运营商提供的方案。主流的运营商的 FTTR 套餐需要捆绑2年合约期+超过200元的每月低消,比目前我用的套餐要高很多。另外,大部分现行方案都是基于 GPON 的单模方案,该方案到终端节点只有 2.5G 的速率,如果还要兼顾无线流量,那很难满足有线部分的速度需求。

又及,本文在实际部署中实际上是光电混合方案,电网线的大部分线路是提供给 AC + AP 使用(有线2.5G,单程1.25Gbps),因此也具备了无缝漫游的能力。

再及,在写这篇文章的今天,我刚跟北京联通签了全新的 3 年 FTTR 合约,但我不打算使用他们的 FTTR 设备。因为我现在的套餐方案算上副卡,跟升级后的套餐费率一致,相当于免费获得了上行 30M -> 上行 100M 的升级。

不过这次升级之后,北京联通给我更换了华为 F50 至尊版 光猫+路由 一体机,而且明确不能通过业务员途径更换桥接拨号。现在淘宝上有大概 240 元左右的第三方路由器可以实现桥接功能,或者也可以选择能修改 MAC 地址的猫棒(北京联通仍然只使用 MAC 地址进行绑定)来进行路由器拨号。

无线布局方案(Wifi 和 IoT 网关)

既然主干网络没有选择无线,那就要单独给无线布局考量一下。

结合户型图看一下,可以看到两个明显的问题:

1、房子户型是L型,且有贯穿承重墙,传统无线布点会有盲区

2、部分 IoT 设备位于房间边缘,需要考虑无线稳定性

因此,依靠PoE的 AC+AP 方案可以有效扩展网络覆盖布局。

无线设备我倒是没怎么纠结,因为国内、国际做AC+AP的从顶级到末端就那么几家。姑且报个菜名

CiscoArubaUbntTP-Link/水星/netcoreRuijieH3CHuaweiiKuai

因为我装修的时候刚好看公司全都升级了 Aruba 的设备,而且网络改善非常明显;且 Aruba 刚好在同年推出了相对便宜、使用简单的 InstantOn 系列家用云AC 设备,于是也没怎么纠结,直接AP11d x2 搞起。

无线 IoT部分主要解决的是一些智能设备不具备 wifi 能力,将它们扩展成为可离家管理/通知的设备。目前家庭内需要漫游的智能设备主要有蓝牙协议的家庭门锁、Zigbee协议的墙壁开关和一些无线传感器。因为都是小米系的,所以也没什么可选型的,直接小米网关就行了。

因为我和夫人都比较反感随时监听(哪怕是本地监听)的设备,所以我们全屋都没有智能音箱/智能屏。

Wifi的话(橙色圈),下面那个圈基本能 cover 我的大部分需求,上面那个圈的盲区部分基本都是有线,而且是电视区域,很少有无线设备诉求。

蓝色的IoT 网络,因为全家的智能设备基本是小米,所以选择了小米智能网关2。这个没什么好说的,就是各个 zigbee/蓝牙 设备的中心点。

介绍完了选型,下面就是我目前的家庭网络拓扑。

设备拓扑(202408版)

互联网宽带选择

在北方,特别是北京,目前为止还没有其他宽带可以选择,只能选择联通宽带。

如果想听宽带通、长城、北京移动、北京电信这几家的爱恨情仇,可以回头详细说说。

硬件(202501)
北京联通从2022年开始,已经给千兆宽带用户换用 2.5G 设备,算上线损额外预留的带宽,现在的1000M带宽基本可以跑到 1300M 左右。

F50软文介绍:https://ithome.com/0/752/323.htm

所以基本网络连接也很简单,使用2.5G电模块直接连接即可。

为什么不上10G宽带?

10G家庭宽带是今年的新产品,需要社区骨干线支持,且费用过于高昂(内测999元/月,正式上线1399/月),还需要再等等。

为什么不使用“猫棒”?

“猫棒”是一种将宽带商入户光纤直接转换为电信号,使具有 SFP+ 端口的路由器不使用光猫直接可以拨号上网的模块。

通过猫棒,可以直接使用通过SFP+接口的路由器不经过光猫直接拨号上网,省去了光猫转接这一道,可以节约多媒体箱空间并省去修改光猫桥接,直接将家庭局域网网关暴露在运营商公网中,省去联系运营商修改桥接的步骤。

北京联通提供直接修改桥接、获取独立IP地址的反馈通道,必要性不高;

2024年10月起,北京联通已经拒绝所有新装/移机客户的桥接请求,但是仍然可以通过购买第三方设备(包括不限于第三方光猫、猫棒等)来实现桥接。

现在的设备选型

明确需求

目前家庭宽带主要是两人使用,其中每人有两部手机,一个移动设备(ipad或者其他移动终端),每人一台台式机电脑,家庭有一台万兆 NAS。

新装修的大部分家电都可以连wifi,加上摄像头监控和传感器等大概有30+的常驻在网设备。

总结一下的话就是需要一个带机性能和稳定性都较好的路由来承载家庭骨干网络。

当然,现在相对稳定的设备选型自然不是一次就能搞定的。在正式介绍上面拓扑图的一些设备之前,我先给大家介绍一些之前使用过但是淘汰掉的网络节点设备。

上一代方案关键组件介绍

路由器

因为有万兆,加上社区的熏陶,我第一版自然而然就想到了软路由。因为 FTTR 需要至少4个 SFP+ 网口,因此常见的社区 ARM 软路由几乎都被放弃,初期我选择了一台 X86 台式机来承载主路由。出于稳定性考虑使用了 Windows Base + HyperV ,并在上面运行了 Openwrt X86 。

这东西闲鱼二手的企业淘汰机很便宜,几百块就可以。

它提供了足够多的 PCIE 插槽让我安装 SFP+有线网卡,而且联想的工作站做工比一般品牌和自己组装要好很多。直到我淘汰它之前,在 UPS 的帮助下它甚至都没有停过机。

以及,因为 Openwrt 足够开放,我甚至可以在没有开通 IPTV 的情况下,借助一些教程,直接通过我电视上的 kodi 来白嫖 北京联通的 iptv 看电视。

它很好,但是它仍然被淘汰了。为什么?

首先自然是发热量。它毕竟是一台台式电脑,在夏天发出的巨大热量使多媒体柜附近的空调要额外长时间工作才能将屋内温度进行平衡。这一系列下来带来的附加作用就是高昂的电费。我家一直是五档电费的常客。

其次,虽然我不需要AC(因为 Aruba InstantOn 是云AC设备),但是这种软路由不具备PoE(网线供电)能力,这使得 AP 部分需要额外附加电源。分散的电源带来了更高的故障率。

光纤和再布线

在初期布线的时候,我选了运营商 FTTR 同款的单模光纤,随着网线一起埋在了墙里。后来经过学习调研发现它在单模单线情况下只能跑到2.5G。

于是又手动全屋部署了多模线。

当前方案下的关键设备介绍

路由器

经过长时间的市场调研,我发现了一款完全符合我要求的路由器,就是现在正在用的R6812TP-AC。一方面,它提供了四个 PoE 的有线网线接口(虽然只有1Gbps,但是对于 Aruba 来说足够了),另一方面它提供了高达 8 个 SFP+ 接口,通过 SFP+ 接口我可以安装光模块来满足房间内的光纤接入要求,也可以使用 SFP+转万兆电口来给 NAS 提供足够的上下行带宽。

有线

万兆设备低价选择

2019年可以说是家庭万兆的普惠元年。彼时商业机房设施大量更新,使昂贵的光纤模块、光纤网卡一下子变成了“图拉丁”垃圾价。

但是,彼一代的万兆网卡都是基于服务器标准的 OCP 2.0 接口。不过,好在 OCP 2.0 其实也是走的 PCIE 标准,那只需要做转接卡就可以了。

当然,肯定不需要自己从头设计,万能的社区可以解决一切。

如果不愿意购买成品,使用社区开源方案去 嘉立创 洗点板子回来也是非常好的。

有线网卡升级

已经被商业淘汰的设备自然很难获得驱动更新。Mellanox 从2021年起就停止对 CX-3 系列的网卡进行驱动支持,在 Windows 10/11 的新版本中会有各种稳定性问题。不过还是能磕磕绊绊用的。

最近,我也在看新的设备升级,方向是要么过渡到下一代版本的淘汰设备(CX-4,CX-5系列),要么就使用其他公司的方案(如aqc117/103)。不过这部分我也刚开始研究,等有了新的方案再分享吧。

最近从闲鱼上淘了 CX-4x 系列芯片的华为 SP333 系列万兆卡,Win10 / Win11 免驱。先这么用吧,下次搞估计就是全屋 25G 了,努力挣钱吧。

有线的其他部分

网线

有线的网线可以委托装修公司在水电布线阶段完成,但需要注意的是,如果有条件建议自行购买网线。很多装修公司提供的所谓“六类线”很多都是没有屏蔽标准的,在实际使用中很难达到标称年限。

另外,装修公司是不负责弱电的安装的(比如网线、有线电视线、光纤),自己接面板对于动手能力强的人可以,但我选择在宽带移机安装的时候请宽带师傅顺便帮我装了。据我了解,北京的大部分宽带上门装机时候都可以提供一定程度的装机部署服务,如果你自己准备网线钳+网线头,手工费也很便宜。

入户光纤

我做了入户点位移动,所以实际上联系了两次宽带师傅上门(入户线熔接、装机)。但是其实在付了装机/移机费用后,多少次都是可以的,只要提前跟宽带师傅说好就行。

无线部署

这部分倒是没什么说的,PoE网口很好用。

NAS

这部分也没什么好说的,虽然群晖这些年有些举步不前(像〇果一样),但是 DSM 仍然是这个世界上最好用的 NAS 操作系统。

白群晖可以使用 quickconnect 和平滑购买摄像头授权,而且入正属于天然正义。

UPS

https://item.jd.com/60694084041.html

参考阅读

https://cloud.tencent.com/developer/news/1310957

https://www.haoyizebo.com/posts/6a0c2301/

https://github.com/Turnedback/OCP2-Pcie

https://github.com/KCORES/OCP2PCIe/blob/master/doc/DevGuide_zh.md

https://zhuanlan.zhihu.com/p/114822136

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

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 年下半年,真的是太精彩了,尤其是太鼓达人在中国国内的圈子里。现在,虹版在中国的代理也已经有官方暗示了,而官方框体也通过各种形式进到了国内。希望中国的太鼓达人有个美好的明天。

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

前文详情: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 的启动视频好啦。大家晚安。

番禺游记

这个周末去了一趟广州番禺,也就是中国最大的大型游戏机研发销售中心。有一些对于市场规模的了解,是我之前都不知道的。特别写一篇文章记录一下。

先感谢下之前常去的一家机厅,谢谢刘经理借我一个可以打听市场的时候可以用的,小有名气的名号。

华立的梁经理还对这家厅有所记忆,还特意问了那几组三国志大战怎么样了。

【新的认知】

1、截至2018年初,大型游戏机市场知名品牌变动

目前主流海外品牌的娱乐机代理(taitosnk playmorebandai namco entsegaIGS)已经几乎全部由华立完成。个人认为这种代理权的集中对于这个市场来说并不是好事情,尤其是当代理商决策失误的时候,可能阻碍进一步新机台的代理。

举例的话,参考下华立还在卖的 DM/GF V7 ?

哦对了, KONAMI 2017年下半年到现在没有新机台面向海外推出。

至于其他的,知名品牌还是那么多,基本每个品牌都会专注于自己的一部分产品,比如 pp虎 的厂家,再比如宝辉专注模拟,等等。

2、移动支付

管理系统行业依旧是五花八门。就这么说,在蔡三村公交站等车的时候旁边的女士都在向我推销他们的管理系统。但是由于中国移动支付行业的兴起,现在已经有面向无人值守,但也兼容一般机台投币器的直接微信扫码支付设备了。

乐摇摇投币器

在番禺走访的时候,基本推荐的都是这一家的这款设备。终端的竞争还没开始还是已经结束了呢?有点意思。

3、VR

VR 很有意思。世宇科技今年出了 5 款新的 VR 游戏。其中有一款跳舞机,两款模拟(骑行之类的),两款枪战。

世宇的 VR 是在 Windows 平台上,基于 HTC Vive 开发的。

跳舞机只有 12 首歌,有点少。

不过他们说还在添加。

可能还是以体验玩法为主。

其他家的话,星力动漫城有一整个区域是 VR 小镇。但是绝大部分店家还是以 VR 座椅之类的这些来作为把戏。意思不太大。

4、商业沟通模式

不得不承认,在刚刚过去的这个周六,我大概加了我从开始使用微信以来所加过的所有人的人数总和。而且绝大部分,特别是特定机台的 to B 端介绍材料绝大部分已经都是电子化的了。

啊,好想把这个 32G 的手机换个大一点的。

【实地探访指南】

已经有很多像我一样的,特别是近水楼台的广东本地的玩家已经探访过这里了。不过就我个人还是踩了一些坑的,因此列出来,供大家参考。

某种意义上的圣地巡礼,哈哈。

强烈推荐几人成行选择租车,因为公共交通不是很好。高铁站有神州租车的站点,不过这次我没有租车。

虽说没有租车,作为替代我体验了一下滴滴。路况也是比较堵的,而且有几个比较大的急弯,红绿灯也基本都是闪黄灯,何况还是连续的村落,经常有人横穿马路。如果自驾请一定注意安全。

我的出发地是北京,从北京西坐高铁或者动卧大概十个小时就可以直达广州的高铁站——广州南站。广州南站本身就在番禺,到市桥也很方便。

地铁有7号线,在长隆换3号线就可以到达市桥

市桥算是番禺的一个市中心,在地铁站附近就可以找到去动漫产业园的公交 番27或者番7 都可以。

说是动漫产业园,其实是几个连接起来的村子。这几个村子虽然都是相邻的,但是连起来也有五六公里的长度,而公交车在非高峰时期(上班、中午、下班)往往半小时到四十五分钟一趟,非常浪费时间。

这边早上一般九点半开始营业,下午能到五六点的样子。

我的建议是坐到龙美村下车,这里是新机台的起点。龙美村——蔡三村这一线有星力动漫产业园,也是华立、世宇等企业展厅的所在地。

然后从龙美村或者蔡三村接着往远离市区的方向坐车(番27或者番51/51B),新水坑开始就是一些二手机台的集散地了。

樟边村也是个上过调查报告的地方,整个村子都在做二手游戏机的回收、翻新、拆解等工作。有惊喜。

然后由于时间的关系,比较远的地方没能成行,比如金三村之类的,那边也有一些熟悉的企业在。

每个村子用大概四十多分钟就可以走完,遇到感兴趣的店可以多坐一会儿。

【传闻和传闻确认】

1、太鼓达人

国内太鼓玩家已经非常、非常少了。不过也正因为如此,剩下的玩家都是对这个游戏有着真爱的人。

在华立刚刚从官网删掉太鼓达人 12 亚洲版的时候,我就发过朋友圈,说国内已经没有正版太鼓了。这次去华立和世宇也确认了这件事情。世宇其实就卖过一阵子太鼓,早早就停了。华立也大概在一年前彻底停止了新的太鼓达人的机台的生产。

希望是引进太鼓达人新框体之前的市场空白期吧。

2、广州世嘉和一个不知道牌子的厂家

为什么对广州世嘉这个牌子这么有印象,是因为他们的 Logo 是仿照 SEGA 的风格做的。这一次去,星力动漫产业园的广州世嘉门店没有开门,神采飞扬的门店里面也没看到舞萌机台的身影。然后因为去的比较早,在园区里闲逛的时候看到了另一个 SEA 什么开头的店,也是这个风格的 Logo 。

看来神采这是打算走到黑呀。

哈哈。

3、新机台引进

去华立了解了一下奥特曼的机器,价格挺好的,不过运营成本比较高。感觉不会推的太开。

销售完全没有听说过 Project DIVA AC 的信息,可能也是因为级别不够。

【音乐游戏二手机台概述】

如果有货的话,很便宜。

DEAC 不砍价一万,真的就是纯硬件价格了。毕竟也是2600k + 不错的显卡。

部分机台价格居高不下,比如太鼓达人 12 亚,至今还在一万多元。不过想了想,就算很便宜也没地方摆。

绝大部分机器是台湾那边的机器,铁琴、音旋风之类的。

哦对了,有一台 Ez2dj 。写着写着想起来好像是之前线人给我发过。

剩下的热门,太鼓、 ubt 、 rb 、maimai 等等 普遍都没货。当地普遍认为音乐游戏机已经不再受市场欢迎了,而且流转比较快。

感觉想要淘机器开店的,要抓紧了。

不过说回来,有一些事情让我觉得很有意思。

第一件事是有一家店摆了一台 SDVX 3 ,卖家倒是很坦诚,说是摆了好多长得像学生的人进去看。

等等,我看上去有这么嫩么?哈哈

第二件事是有一家店说他们同时有太鼓达人 12 和 13 ,然后表示,节目可以随便换,反正就是复制。

第三件事,我觉得有一些厂家可能会官方回收二手机台,然后翻新了按照新的出。

嗯,我说的是 maimai 。

我也没有实锤,只是他们这个尿性,我觉得做得出来。

 

总之,番禺是个好地方,真的准备开那玩意的时候,再来好好转转。

依旧看不起Linux

最近因为某个小项目,又一头扎进了 Bay Trail 的天坑里。自从 Intel 把 Atom 系列的性能拉到了低端桌面平台的水平之后,越来越多的 x86 架构开发板就成了大家的选择(包括我)。不过毕竟 Intel 是商业公司,还是要赚钱的。所以目前绝大部分 Bay Trail 的平台都是 Windows (特别是 Windows 10)限定的。
当然,既然是 x86 那就没有不可能。因为这一平台限定使用 ia32 的 UEFI 方式启动,因此只要找到合适的 ia32 平台的 EFI bin ,就可以在板子上成功启动各种各样的 Linux 发行版。
这期间我参考的东西还真不少。

https://wyr.me/316.html
http://linuxiumcomau.blogspot.com/2016/10/running-ubuntu-on-intel-bay-trail-and.html
https://plus.google.com/+IanMORRISON/posts/UNWdwRMqy3j

其中 第二篇 中提及, Z3735f 主板的音频芯片在直到目前最新的 Linux 内核上依旧是有问题的。特别的在 Debian 发行版中,系统会将音频线路识别为一个叫做 Intel HDMI 的音频设备,导致的结果就是开发板上的 3.5mm 音频接口和 HDMI 均没有任何音频。根据相关资料和邮件(主要是 https://www.mjmwired.net/kernel/Documentation/sound/alsa/HD-Audio-Models.txt),尝试自行编译 4.9 的 Linux 内核,包括使用 Linuxium 的成品内核,均不能解决无法正确识别声卡的问题。
有点坑,早上起来去跟厂商要回了 Win 10 的镜像,晚上使用构建 PE 将板子刷回了 Win10 。
这期间的坑也挺大的。开发板客服显然有点业余,给我的 Win10 镜像是个 wim 封装,然而拆开看了一下里面的引导并不正确。
首先需要做一个板子可以引导的 ia32 uefi 的 PE 。我使用了无忧论坛的这个模板镜像和从网上随便下的一个 Win8 PE 。

PE ISO模板:度娘盘了个盘

然后把厂家的 wim 镜像拷到优盘里面进行安装。

然后,继续 Windows 呗。坑爹的 Bay Trail 。

帝都安定日常记(一)·客厅瘦客户端选择

来帝都租的第一个单间里面就有电视,虽然很老的 sharp ,也是可以好好利用起来的。
刚刚好,之前在古都遗留下来的一个挂机PC,可以兼任这个多媒体终端的任务。

在古都的时候,受条件所限,这个 Thin PC 主要的任务是挂机和提供简易 NAS 。软件和硬件的选择是这样的:


硬件:
机箱:撒哈拉 M1
电源:淘宝工包FSP 无风扇 SFX电源 配合淘宝SFX-ATX电源挡板
主板/CPU:翔升ASL J1900-HK
内存:威刚 4G 1333
硬盘: Sandisk X110 128G SSD (Primary)
      2 x ST 2T仓库盘(均拆自3.5寸外置硬盘盘芯)
软件:
Windows 7 Ultimate
uTorrent v3
Teamviewer

这一套在挂机上是没有什么问题的,还可以跑个简易的 http 服务器之类的玩个花样。但是,这个板子一直有个问题,就是对非 UEFI 系统不太友好。毕竟是个新 Skylake 架构的平台。

于是这次有一个新的需求,有几个老问题需要解决。


需求
1)增加稳定的输出需求,主板上自带的 HDMI 1.4 接口可以解决,输入问题可以通过无线键鼠解决。
问题
1)Win7->Win10
2)SSD 太大,浪费。
3)机箱过大,太轻,共振严重

老规矩,先上配置单。


硬件:
机箱:乔斯伯 C3
电源:鑫谷GP 600P 白金版(京东换新新品),本来原来电源可以接着用的。
主板/CPU:翔升ASL J1900-HK
内存:威刚 4G 1333
硬盘: Intel 330 40G SSD (Jubeat街机拆机品)
      1 x ST 2T仓库盘(不再需要那么大的空间)
软件:
Windows 10 Pro
uTorrent v3
Teamviewer
播放器Klite Codec Pack Standard with MPC

总体来看还是很满意的,不过还是有几个问题
1)没有了主板挡板,看上去好丑=。=
2)还是比书架宽了一点点。
但是这个机箱完全解决了硬盘共振的问题,40G SSD也满足了让机械硬盘在不工作的时候认真休息的需求。效果不错。

【相关链接】
主板评测:http://diy.pconline.com.cn/570/5707109.html
相关照片: