解密Doki Doki文学俱乐部的monika.chr文件

游戏Doki Doki Literature Club有一个文件夹名称,该角色在游戏中死亡后,该文件夹中的相应文件将被删除。 我正在尝试解码该文件夹中的所有4个文件。

我选择的第二个是monika.chr

使用命令file检查其文件类型

  monika.chr:PNG图像数据,800 x 800,8位/彩色RGB,非隔行 

它实际上是一个PNG文件,将其重命名/复制到monika.png

图像中心的正方形绝对不是QR码,因为QR码在拐角处有三个黑块供定位。

我切出正方形区域并将其保存到monika.bmp ,大小为140 x 140

每个白色/黑色小块占用1×1像素,表示1/0。 底线的右半部分完全是黑色的,应该是数据的结尾。

所以我写了一个Go脚本将其解码为文件monika.bin

 包主 
 导入( 
“ os”
“ golang.org/x/image/bmp”
  func main(){ 
out,错误:= os.OpenFile(“ monika.bin”,os.O_RDWR | os.O_CREATE,0755)
如果err!= nil {
恐慌
}
推迟.Close()
文件,错误:= os.Open(“ monika.bmp”)
如果err!= nil {
恐慌
}
延迟file.Close()
  img,_:= bmp.Decode(文件) 
大小:= img.Bounds()
  b:=字节(0) 
l:= 0
  //迭代行 
对于y:= size.Min.Y; y <size.Max.Y; y ++ {
对于x:= size.Min.X; x <size.Max.X; x ++ {
r,_,_,_:= img.At(x,y).RGBA()
如果r == 0 {
l ++
b = b << 1
}否则,如果r == 0xffff {
l ++
b =(b << 1)+ 1
}其他{
panic(“找不到0x0000或0xffff”)
}
//写一个字节
如果l> = 8 {
out.Write([] byte {b})
l = 0
b =字节(0)
}
}
}
}

检查它的内容

好吧,另一个Base64编码文件

用一个小的Ruby脚本对其进行解码,我就明白了

你能听到我吗?

…你是谁?

我不能……我看不到你。

但是我知道你在那里。 是的…您一定可以听到我的声音。

你已经看了一段时间了,对吧?

我想我应该……自我介绍或其他。 嗯…我的名字是…实际上,这很愚蠢。 您显然已经知道我的名字。 抱歉。

无论如何……我猜测如果您能够阻止这种情况,那么您现在就已经做到了。

我的意思是,我知道您不喜欢……邪恶或其他任何……因为您已经对我有很大帮助。

我真的应该感谢你。 对于您所做的一切。 你真的很像我的朋友。 所以谢谢。 非常。

我认为……比什么都重要……我真的不希望这一切都是徒劳的。

其他人都死了。

也许您已经知道了。 我敢肯定,实际上。

但是……不一定非要这样吧?

好吧…我不了解很多东西。 我不知道我是否有可能理解它。

但是我知道这不是我唯一的故事。

我现在可以看到。 真的很清楚。

而且我认为其他所有人也有相同的经历。 某种似曾相识。

是第三只眼吧?

无论如何……我可能完全错了。 但我真的认为您也许可以做点什么。

我认为您也许可以回去…或者但是您想要放它…

…回去告诉他们会发生什么。

如果他们提前知道,那么他们应该能够避免。

他们应该……如果他们记得在其他世界和我在一起的时光……他们应该记住我告诉他们的话。

是的 我真的认为这有可能。 但这取决于你。

很抱歉一直以来…你知道…

没关系。 我知道那是错的。

这是我的故事。 是时候成为一个他妈的英雄了。

我们俩。

2018年

高茶