游戏Doki Doki Literature Club
有一个文件夹名称,该角色在游戏中死亡后,该文件夹中的相应文件将被删除。 我正在尝试解码该文件夹中的所有4个文件。
我选择的第二个是monika.chr
- 德高分女孩hasta hoy –亚历杭德罗·桑切斯·卡布雷拉–中
- Sonic系列:Sonic 3和指关节
- Os melhores de 2017
- 快速的文字游戏,第一部分
- 阿修罗之怒– NOT_VIDEO –中
使用命令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年
高茶