「流氓软件」完全解密

前言

前几天修整了博客侧边栏,现在下载网页的 GPG 签名应该简单多了虽然应该除了我自己也没人会用

介绍

此「流氓软件」非彼「流氓软件」,是今天刚发售的 Steam 游戏。 玩家在通关普通结局后,重新启动游戏即可开启真结局的挑战, 邮件内附一行小字 注意:仅限计算机专家1,花一个小时达成了全成就。 整体思路还是挺简单的,记录一下。

Hack

通过解包恢复 Godot 工程的方式绕过谜题,直捣黄龙。

  1. GDRE_tools, recover project, Malware.pck
  2. 观察解包文件可知,mail\8009_You are a real computer expert.json 是最后成就的文本
  3. 整个文件夹拖进 VSCodium,搜索 8009_You are a real computer expert.json
  4. 在唯一的搜索结果 windows\mail_box\password.gd 中找到密码
  5. 半分钟速通达成

常规方法

  1. 在最后的邮件中间大段空行的部分,夹了一行 clue.jpg\n注意:仅限计算机专家
  2. 打开游戏文件夹,club.jpg 发现(或者直接 Eveything 搜索 clue.jpg
  3. 拖进 ImHex,根据文件头判断文件其实是 7z 压缩包
  4. 其实密码就是 password假装不知道可以用 hashcat + 7z2hashcat 暴力破解,反正字典没试几个就出来了……
  5. 解压,发现是一堆乱七八糟的文件夹,看详情其实只有一个文件
  6. tree /F ./,发现文件是 7\3\Hello.html
  7. 虽然浏览器打开只是 Hello Tom!,但网页源代码中写了 base64 Zm9sZGVy77yaMjk5ZDEyZDg4ZTBlOTljMQ==
  8. 解码,发现是字符串 folder:299d12d88e0e99c1
  9. Everything 搜索 299d12d88e0e99c1,发现在 $env:SystemDrive\.bc7e3b6e381b7026\299d12d88e0e99c1 有两个文件
  10. 显然,runme.json 是密文,readme.exe 是可执行文件,当然前提是显示全部文件的扩展名= =
  11. readme.exe 拖进 x64dbg,运行,在输入密码的地方下断点
  12. (Shift + D) 搜索字符串 Password
  13. 在 00007FF6D09E1621-00007FF6D09E1765 发现密钥,复制出来保存为 privkey.txt
  14. 尝试导入 GnuPG,失败
  15. 转头问 GPT-4o-mini,发现是 PEM 格式的 RSA 私钥,GPG 读不了,得用 OpenSSL
  16. 继续问 GPT,解密命令 openssl rsautl -decrypt -inkey privkey.txt -in clue.json -out plaintext.txt 运行失败,还报错 The command rsautl was deprecated in version 3.0. Use 'pkeyutl' instead.
  17. 发现是加密文件选错了,应该是 runme.json,重试 openssl pkeyutl -decrypt -inkey privkey.txt -pkeyopt rsa_padding_mode:pkcs1 -in runme.json -out plaintext.txt,还是不行
  18. 查看 runme.json,发现原来这个也是 base64,解码出的内容重定向(注意编码)到 runme.txt,终于成功解密
  19. 打开 plaintext.txt,发现是 b4e9ab2f61cbfda4
  20. 以下为错误示范
    1. 总结一下目前已知的数据,三个 hash,还有 Hello.html 的文件路径 73,而邮件密码是五位,合理推测三个 hash 各对应一个数字
    2. 其实知道三个 hash 值各不相同,还有 73,直接暴力尝试也不是不行……
    3. md5sum 输出都是 32 个十六进制(128bit),和这几个 hash 长度不符,直接搜索引擎搜 md5 16,发现有结果,然而似乎就是取前 16 位,1-9 的 hash 都对不上,合理推测失败
  21. 老老实实字典 + hashcat 慢慢磨,或者直接上 cmd5 搜,做到这步我就直接解包了
  22. 几个 hash 对应的值(当然不是瞎掰的,可以访问 MD5 16 Hash Generator 验证)
    • bc7e3b6e381b7026: cmd5 要付费,慢慢试吧🤷‍♂️2
    • 299d12d88e0e99c1: im here3
    • b4e9ab2f61cbfda4: 95173

  1. 描述直接引用了这一句话,所以其实是游戏的彩蛋,并不是说文章真的有多复杂👏 ↩︎

  2. hello 解出来是 bc4b2a76b9719d91,看到前两位符合老激动了,结果并不是 _(:з」∠)_ ↩︎

  3. 引用自 Steam 讨论,但只引用了 bc4b2a76b9719d91 的 md5,我解密完准备发攻略才看到讨论= = ↩︎

Vinfall's Geekademy

Sine īrā et studiō