分类: 硬件

在 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
相关照片: