这真的是游戏!不是野生技术协会!


前几天玩了一下心肺停止文学部,在游戏目录发现了角色文件,当时我就很好奇:角色文件应该包含各种图片吧,怎么可能这么小?果然,根据网上dalao的提醒,通过Linux的file命令查出这四个文件暗藏玄机。

这四个文件通过修改扩展名可以还原原貌(不知道怎么改的自行百度,貌似不能引用外部链接)。
在b站看过简单的分析,但貌似是搬运过来的,目前没有看到有dalao讲解如何解析,昨天在知乎看到了详细的,这次打算利用Python,Linux,Au,Ps来解析DDLC的四个角色文件。
声明,怕字数限制,这里只讲方法,不会放出解析后的内容,具体请看知乎或b站。

首先看最简单的yuri.chr,改为yuri.txt打开(Linux下可以直接查看):

既然这是游戏彩蛋,我觉得作者应该不会上SHA-512什么的加密算法,所以先试一下base64。
Python通过调用base64可以解码,像这样:
import base64
base64.b64decode(data)
其中,data为加密的数据,但会输出回车符,影响阅读,目前没有办法解决。奇怪的是,将结果单独复制出来,再到IDLE上print是没问题的。
所以我在Linux下执行:cat yuri.chr | base64 -d,果然,这是被base64加密过的,是一封信。(胆小者请谨慎查看)


接下来是sayori.chr,改扩展名为ogg,然后用Au打开。

如果直接听你会听到一段低频声音,貌似无意义。在Au菜单选择视图-显示频谱,然后...

看到了熟悉的三个定位块,这是二维码!截图,然后经过PS的裁剪,适当拉伸,反相,得到这张图。

直接保存图片再扫可能扫不出来,推荐用电脑放这张图,然后手机离远一点扫描。得到的是一份体检报告书,网站IP在美国。
Au+Ps的门槛真的相当低了,如果自己来处理,给出两点建议:
1,选择频谱后,在旁边的刻度右键,选择“更加线性”,然后再来调整大小并小心截取。如果不选“更加线性”,在Ps处理的时候你是死活也扫不出来的。

2,图片其实并不是正方形,要想确定得到的二维码是否正常,可以按Ctrl+T后边拖动边用手机扫,当然,手机离远点,手机像素差一点效果更好。

接下来是natsuki.chr,这个有点棘手,不管怎么样,是图片先丢进Ps里,改扩展名为jpg,导入Ps(Ps可能会报错,用格式工厂转换成jpg就行)。
一打开感觉有点恐怖,可能是反相了,我按Ctrl+I进行反相,得到下图。

右上角有个地方是张嘴,一开始我想可以用建模软件或者游戏引擎(如虚幻4)做个球再贴上去,但我在必应找到了一个提示信息。

高中知识:平面坐标和极坐标可互相转换,既然被转换成了平面,那么就滤镜-扭曲-极坐标(选择平面坐标转极坐标)就行了,得到下图。


最后是monika.chr,这个是最麻烦的,折腾了我一中午加一晚上。要动到底层的东西,知乎有dalao用C解决了,这里我用python解决了(二进制模式)。
还是先改扩展名为png,用Ps打开。

注意,中间的并不是二维码,因为没有用于定位的三个大方块。小心裁剪它,得到一个140*140像素的图片(必须是这个数!否则请重新裁剪!)

知乎dalao的提示是,这张图每个像素就是数据,白色对应1,黑色对应0。编写Python代码,使其能读取像素的RGB值,并根据提示转换成二进制数,再写入文件(写入是最麻烦的,因为写入的不是文本,而是原生的二进制数据)。
这让我想到了之前我的一期视频,把视频转换成十六进制,再转换二进制,再转换成DNA序列的视频(止まらないじゃねぞ!)
视频加载失败
行吧,展示一下完整代码

根据代码,输出得到monika.txt,这次看到后面的等于号,绝对是这是base64加密过的了。

在Linux解密base64,得到一封信,貌似是monika写的。

我应该有看到deja vu吧(确信)
以上,这是一个对于有Python基础的童鞋们比较友好的DDLC解码教程,可能会做视频单独讲。