首页
社区
课程
招聘
[原创]第七题:戌时·暗能潜流
发表于: 2026-8-21 09:17 50

[原创]第七题:戌时·暗能潜流

2026-8-21 09:17
50

1. 从等长样例确定主体数据位

Hello 和 abcd! 的长度相同,因此只依赖长度的摘要/填充位在逐位差分时
完全相消。把明文拆成高、低半字节后做模 16 差分,7 个发生变化的明文
半字节恰好对应密文中的 7 个变化位置。结合其余样例,可分离出每个 12 位
输出单元中的真实数据位置:

满 6 个数据位:0, 2, 3, 5, 8, 10
余 4 个数据位:4, 6, 7, 9
余 2 个数据位:8, 10

其余位置是固定的 4/5 标签;末组不满时再按输入长度填入固定的
2233 摘要单元。因此密文长度总是 12 的倍数,摘要扰动确实只与输入
长度(更准确地说是 2*len(plain) mod 6)有关。

2. 半字节偏移

令密钥三位为 a,b,c = 1,2,1,基础偏移为:

s = a + b + c = 4

ASCII 字节拆成高、低半字节后:

H' = (H + s + a) mod 16 = (H + 5) mod 16
L' = (L + s)     mod 16 = (L + 4) mod 16

3. HexMaze 位置重排

先把整个已偏移的半字节序列反转。随后每 6 位一组,以中间密钥数字
b=2 作为路线宽度:先取头 2 位,再逆序取尾 2 位,最后取中间剩余位。
完整分组的位置表是:

[0,1,2,3,4,5] -> [0,1,5,4,2,3]

尾组只有 4 位或 2 位时,同一规则自然退化为:

4 位:[0,1,3,2]
2 位:[0,1]

最后根据上一节的数据位置表嵌入 12 位输出单元,并填固定标签和长度摘要。

4. 密钥 121 三位的作用

  • 第一位 a=1:区分高、低半字节,高半字节比低半字节多循环偏移 1;
    同时令长度摘要的成对值由 2 扩为 2/3。
  • 中间位 b=2:规定 HexMaze 每组“取头/取尾”的宽度为 2,也是长度摘要
    基值 2。
  • 最后一位 c=1:作为奇偶方向位;1 表示在分组路线前反转整个半字节
    序列。
  • 三位之和 1+2+1=4 是低半字节循环偏移和固定标签的基值,高半字节
    使用 4+1=5。

5. 验证

solve.py 同时实现了解密和正向加密。它会先逐组验证四个样例,再把解出
的 FLAG 正向加密;只有重新得到题目中完全相同的 144 位密文才通过断言。


冰与火的战歌:Windows内核攻防实战高级班!从零到实战,融合AI与Windows内核攻防全技术栈,打造具备自动化能力的内核开发高手。

上传的附件:
收藏
点赞 ・0
打赏
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回