解密拿cdk,600刀额度,规则和谜题更新了

最终解密顺序是这样:

  1. 按“|”切分
  2. 七步一组,顺序按 4,2,7,1,6,3,5 重排
  3. 每组内容反转
  4. 用 “FANGYUAN” 做列换位解密
  5. ROT47
  6. Base85 解码
  7. 用 “蛊真人|不过是些许风扇罢了” 当口令,跑 PBKDF2-HMAC-SHA256
  8. 校验 HMAC tag
  9. HMAC 生成密钥流
  10. XOR 出明文

payload 结构:salt(16) || nonce(12) || tag(16) || ciphertext
PBKDF2-HMAC-SHA256
dklen = 32
key = 派生出的 32 字节

tag = HMAC-SHA256(
key,
b"fanless-tag-v2" + nonce + ciphertext
)[:16]

stream = HMAC-SHA256(
key,
b"fanless-stream-v2" + nonce + counter_4byte_big_endian
)

plaintext = ciphertext XOR stream


plain = plain.decode(“utf-8”)

print(“校验通过”)
print(“长度:”, len(plain))
print(“格式:”, plain.startswith(“sk-”))
print(“脱敏结果:”, plain[:8] + “…” + plain[-6:])

按上面规则解密拿cdk。

谜题在这:

ZA2\m+j|7WN|32:4"P2ykgm8rO3Yc|T?|!CUl$v"Wz9hNS|a~ON'|T09>%g589JG|}6J2s;K|={8|b'|t4JBdX)pb!u7C|L>!h$|bp};Jm|hcCb

不是七段,是七步。
虫书给名,风扇给句。
全角的墙不可拆,半角的墙只是内容。
方圆为列,素数为刃。
镜中有 47 道门。

更新谜面:
书名:蛊真人
口令句:不过是些许风扇罢了

import base64
import hashlib
import hmac

cipher = r'''ZA2\m+j|7WN|32:4"P2ykgm8rO3Yc|T?|!CUl$v"Wz9hNS|a~ON'|T09>%g589JG|}6J2s;K|={8|b'|t4JBdX)pb!u7C|L>!h$|bp};Jm|hcCb'''

pepper = "蛊真人|不过是些许风扇罢了"

RPM现在120
session 40
额度600刀

自己动手吧。

使用地址:
https://cch.fkcodex.com/

这解密流程简直神仙打架,最后居然还要用小说名当口令,作者是蛊真人粉丝实锤了。

小白问一下,那个“虫书给名,风扇给句”是啥意思啊?是不是说书名和后面那句都要用上?我不太确定。

没用过别碰。

又来这种帖子了,一眼看过去又是HMAC又是XOR的,最后解出来八成就是个sk-开头的API key,费这劲不如直接去注册。不过那个“镜中有47道门”暗示ROT47还挺有意思的,作者谜语人等级拉满了属于是。

楼主第4步“用FANGYUAN做列换位解密”能展开说说吗?这个“方圆”是指矩阵的行列吗?具体行数怎么定?是依据“素数為刃”里的素数吗?还是说“FANGYUAN”这八个字母本身有顺序?看迷糊了。

之前搞过类似的东西,分享一下我的踩坑经历。PBKDF2那个步骤,salt是从payload最前面取的16字节,一定要用原始字节,不能当成字符串处理。然后nonce是接着的12字节。HMAC校验tag的时候,消息的构造顺序千万别错,是b"fanless-tag-v2" + nonce + ciphertext,我一开始把nonce和ciphertext顺序反了,卡了半天。密钥流生成那里counter是从0开始递增的4字节大端序整数,每次生成64字节的HMAC输出作为流,和密文XOR。最后UTF-8解码如果报错,大概率是XOR那步出问题了。祝你好运。

你这分析挺透 但镜中47道门那个伏笔有点突兀

上次玩了一晚没解出来 这次再战

CTF这种题就是设计来劝退的 看着就头大