开往2026解题活动
还挺有意思的,对我这种技术小白来说有点困难了哈哈哈哈,希望早日看到大佬的writeup
活动地址:
https://happy-newyear.travellings.cn/puzzle
第1题:签到题
Base64解码即可得到答案
第2题:看一眼时间就行?
2025年11月18日17:06,具体的秒没查到,所以按00,对应的UNIX毫秒时间戳为:1732002360000
可惜答案不对。考虑是因为秒不对,但我暂时没招了😂
第3题:时间的三重锁
Base64解码
rovvy *ROT13 is not* gybvnRkzzi *the key* Xog Iokb WWHHFS!
Wki iyeb myno *but time is* bex gsdryed leqc.ROT13 is not the key but time is
ROT13解密
ebiiltloiaExmmvKbt Vbxo JJUUSF!
Jxv vlro zlabork tfqelrq yrdp.凯撒密码位移,最终明文为:
hello world Happy New Year MMXXVI!
May your code run without bugs.可以分为两段:
hello world Happy New Year MMXXVI!(MMXXVI是罗马数字2026)
May your code run without bugs.
但是上面说了时间才是密码,我试了2026和MMXXVI的SHA1加密,都不对。
没招了。
第4题:真的靠手速?
import requests
import base64
import pytesseract
from PIL import Image
from io import BytesIO
# 配置Tesseract路径(若未添加到环境变量)
# pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'
def auto_solve_ctf():
url = "https://game4.happy-newyear.travellings.cn"
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) Chrome/120.0.0.0 Safari/537.36"}
try:
# 1. 获取题目与图片
res = requests.get(f"{url}/api/getQuestion?happy-newyear-2026", headers=headers)
data = res.json()
# 2. 处理Base64数据
base64_str = data["image_base64"].strip()
if base64_str.startswith("data:image/"):
base64_str = base64_str.split(",", 1)[1]
padding = len(base64_str) % 4
if padding != 0:
base64_str += '=' * (4 - padding)
# 3. 解码并预处理图片
img_data = base64.b64decode(base64_str)
img = Image.open(BytesIO(img_data))
# 关键预处理步骤
img = img.convert('L') # 转为灰度图
threshold = 150 # 可根据实际图片调整(0-255)
img = img.point(lambda x: 0 if x < threshold else 255, '1') # 二值化
# 4. 优化OCR识别
answer = pytesseract.image_to_string(
img,
config='--psm 6 -c tessedit_char_whitelist=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'
).strip()
print(f"OCR识别结果: {answer}")
# 5. 提交答案
res = requests.post(
f"{url}/api/submitAnswer?made-by-scared-cube",
headers=headers,
json={"token": data["token"], "answer": answer}
)
print("服务器响应:", res.json()["message"])
except Exception as e:
print(f"错误: {str(e)}")
if __name__ == "__main__":
auto_solve_ctf()自动获取Base64数据转图片,再利用Tesseract进行OCR,自动化提交,才能实现3s内提交结果获取Flag
不过我试了下,使用天若OCR识别后自动复制到剪贴板直接粘贴,手速快的话也可以实现的哈哈哈哈
第5题:写东西正经比较多所以没怎么玩过梗
这题不会,但是搜出来了。
第6题:非黑即白
import numpy as np
from PIL import Image
# 二进制字符串
binary_str = "000000000000000000000000000000000000000011111110111010000001001101001011111110010000010000110101110101100001010000010010111010001010011001001010101010111010010111010000010001000110101111010111010010111010111010010100000011101010111010010000010001010010011010100000010000010011111110101010101010101010101011111110000000000100110001100110100010000000000010011111100011110100000000010110100010011011100111001000001101101000001001010000100011001000110101000100110010010000011011000000100110111101100010000100000001110010010000101000101111110111001010010101001100111011001001101001001001100010110111001100100101110011101010001100011100001001101100000111100110111000010011111010100111010110101010010111011010011111100001100110001010001011011000110000110010010100011000001001110101100110011001100111100001100100101110101010010010010110100101010110001110010001011010001100001011101000101101100011100001110000001010011011011000101001110101101010001001001001101100000111010110011000010001110010011010101001011101100010100110010000001101001001100001111101100101000001110010011110011001001001010001101100000111001000011111011011100001110011000001101111011010111001011001101111110100000000000100110100100110110101000110110011111110111110001101101101011010111010010000010100110100110100110011000111000010111010101101011100010110111111100000010111010111000001001111001100100000110010111010010000111011000111000011101100010000010000101100101100111010010101110011111110100111001000111100010100000010000000000000000000000000000000000000000"
# 创建39x39的矩阵
matrix = []
for i in range(39):
start = i * 39
end = start + 39
row = [int(bit) for bit in binary_str[start:end]]
matrix.append(row)
# 转换为图像(黑白反转)
img_array = np.array(matrix, dtype=np.uint8) * 255 # 0->0(黑), 1->255(白)
img = Image.fromarray(img_array, 'L')
# 保存为PNG图片
img.save('tianyuan_qrcode.png')
print("二维码图片已生成: tianyuan_qrcode.png")随后解码可得Flag
第7题:巡林的信息传递
一开始我还以为是藏在频谱图里或者是隐藏在音频文件的元数据区,拖到AU里面一看懵了,不是我想的那样hhh
播放了一下才意识到是SSTV(这块还是无线电的内容哈哈哈,我看到文件名居然没反应过来),解码了一下还原出了图片。
看着这个epnzcwjvred{bb_cmf_jbzc_gcaxg_llq_xgrfaept_ruiw_lpr_gsec}应该就是Flag的格式,搜了一下维吉尼亚密码,
根据答案格式,利用AI反推了密码lyneylyneyl,解出travellings{qd_pih_ydmy_irpzt_hnf_ztnhptrg_nwxy_ylt_vhgp}但是看着就不像正确答案。然后又一次去搜了维吉尼亚密码哈哈哈哈,密码改为lyney就能解出正确答案了。解密过程也可以直接投给AI,不需要自己一个个对。
第8题:来找我吧
这题我真没招。











