[HGANE 2025]Compress dot new
本文最后更新于5 天前,其中的信息可能已经过时,如有错误请发送邮件到big_fw@foxmail.com

gpt不会,claude帮我做出来了

解题步骤

首先解析提供的 JSON 格式 Huffman 树结构 然后遍历编码后的二进制字符串 使用 0/1 在 Huffman 树中导航:

  • 0 表示选择左子树(a)
  • 1 表示选择右子树(b)

当到达叶子节点时,得到对应的字符 ASCII 码 最后将所有解码出的 ASCII 码转换为字符串

脚本

import json

Huffman树结构

huffman_tree = {
"a": {
"a": {
"a": {
"a": {
"a": {"s": 125},
"b": {
"a": {"s": 119},
"b": {"s": 123}
}
},
"b": {
"a": {"s": 104},
"b": {"s": 105}
}
},
"b": {
"a": {"s": 101},
"b": {"s": 103}
}
},
"b": {
"a": {
"a": {
"a": {"s": 10},
"b": {"s": 13}
},
"b": {"s": 32}
},
"b": {
"a": {"s": 115},
"b": {"s": 116}
}
}
},
"b": {
"a": {
"a": {
"a": {
"a": {
"a": {"s": 46},
"b": {"s": 48}
},
"b": {
"a": {
"a": {"s": 76},
"b": {"s": 78}
},
"b": {
"a": {"s": 83},
"b": {
"a": {"s": 68},
"b": {"s": 69}
}
}
}
},
"b": {
"a": {
"a": {"s": 44},
"b": {
"a": {"s": 33},
"b": {"s": 38}
}
},
"b": {"s": 45}
}
},
"b": {
"a": {
"a": {"s": 100},
"b": {
"a": {"s": 98},
"b": {"s": 99}
}
},
"b": {
"a": {
"a": {"s": 49},
"b": {"s": 51}
},
"b": {"s": 97}
}
}
},
"b": {
"a": {
"a": {
"a": {"s": 117},
"b": {"s": 118}
},
"b": {
"a": {
"a": {"s": 112},
"b": {"s": 113}
},
"b": {"s": 114}
}
},
"b": {
"a": {
"a": {"s": 108},
"b": {"s": 109}
},
"b": {
"a": {"s": 110},
"b": {"s": 111}
}
}
}
}
}

编码数据

encoded_data = "00010001110111111010010000011100010111000100111000110000100010111001110010011011010101111011101100110100011101101001110111110111011011001110110011110011110110111011101101011001111011001111000111001101111000011001100001011011101100011100101001110010111001111000011000101001010000000100101000100010011111110110010111010101000111101000110110001110101011010011111111001111111011010101100001101110101101111110100100111100100010110101111111111100110001010101101110010011111000110110101101111010000011110100000110110101011000111111000110101001011100000110111100000010010100010001011100011100111001011101011111000101010110101111000001100111100011100101110101111100010110101110000010100000010110001111011100011101111110101010010011101011100100011110010010110111101110111010111110110001111010101110010001011100100101110001011010100001110101000101111010100110001110101011101100011011011000011010000001011000111011111111100010101011100000"

def decode_byte(node, bits, index):
"""解码单个字节"""
while 's' not in node:
if index >= len(bits):
return None
node = node['a'] if bits[index] == '0' else node['b']
index += 1
return {'byte': node['s'], 'new_index': index}

def decode_huffman(tree, encoded):
"""解码整个数据"""
result = []
i = 0
while i < len(encoded):
decoded = decode_byte(tree, encoded, i)
if not decoded:
break
result.append(decoded['byte'])
i = decoded['new_index']
return bytes(result)

解码并输出结果

decoded_data = decode_huffman(huffman_tree, encoded_data)
print("解码结果:")
print(decoded_data.decode('ascii'))

flag是hgame{Nu-Shell-scr1pts-ar3-1nt3r3st1ng-t0-wr1te-&-use!}

文末附加内容
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇