2026聚合杯决赛计算机全解
密码:2026JuheCup@SZ86#Jie46
1.请分析计算机检材,自启动清理脚本所删除临时文件的完整路径是什么?【答案格式:C:\Users\Public\Temp\demo.txt】
C:\Users\Administrator\AppData\Local\Temp\enclog.txt
Open: file-20260810233651184.png

挂载计算机镜像后发现删除相关的脚本文件
Open: file-20260810233820245.png

2.请分析计算机检材,VC 加密容器的外层加密卷密码是什么?【答案格式:根据实际值填写】
K7$s2xxN5!kR
看到music文件夹下有几个音频,挨个查看频谱图,得到第一个Big Big World.wav里的隐写信息
Open: file-20260810234010396.png

Open: file-20260809115738373.png

3.请分析计算机检材,外层密码所对应的 VC 加密容器文件名称是什么?【答案格式:demo.vc】
secure.vc
通过大小筛选和加密判断得到三个VC容器
Open: file-20260809113549587.png

挨个试了下密码发现是secure.vc
4.请分析计算机检材,其中 26×26 字母方阵图片所对应的密码专用对照表属于哪种密码?【答案格式:凯撒密码】
维吉尼亚密码
Open: file-20260810234302991.png

5.请分析计算机检材,财务收入明细表的文件密码是什么?【答案格式:根据实际值填写】
锁定后发现该表需要密码
Open: file-20260810234349878.png

结合VC打开的信息,以及上一题的提示,明显是维吉尼亚加密
Open: file-20260810234411769.png

Open: file-20260810234451813.png

Open: file-20260810234503760.png

Open: file-20260810234925432.png
但是正常解密出来的明文无法打开表格,于是下来研究了下

在密文K和Q中间加一个G能得到明文:
ADWGHTJJECHTBASDCFGHHGRRGZCDDSGDJZ
而这个可以打开表格,可能是题目有点bug
6.请分析计算机检材,接上题,月度收入最高与最低两个月份的金额之差是多少元?【答案格式:123456】
1425980
筛选数据得到:
最高:2025年3月,1,630,960 元
-
最低:2026年6月,204,980 元
-
差额:1,630,960 − 204,980 = 1,425,980 元。
- 计算机取证问答题6 分未提交
7.请分析计算机检材,接上题,月度收入最低月份的实体矿机高级版销售台数是多少?【答案格式:12】
1
同上
-
月度收入最低月为 2026年6月;
-
该月“实体矿机-高级版”销售
1台(78,800 元)。
8.请分析计算机检材,老板“老K”的住址是什么?【答案格式:根据实际值填写】
厦门市思明区中山路1号中华城
Open: file-20260810235421522.png

看到老K即韩鑫明
在Picture目录下有对应的XX信息和住址
(图)
9.请分析计算机检材,其中有一张含老板「老K」的公司三人团建照片,该图片 SHA1 哈希值的后六位是什么?【答案格式:012345,小写】
229ed7
在邮件里找到图片是一张附件,源文件是image_email.eml, 是 MIME 多段邮件,附件就是其中一段 base64 文本,可以根据这个性质搓出来
Open: file-20260810235836245.png

Open: file-20260811001145587.png

Open: file-20260811001206233.png

Open: file-20260811001233223.png

sha1:d374db307a9db925a8e8ded84ad8fa30e3229ed7
10.请分析计算机检材,BitLocker 恢复密钥被藏于某张图片中,该图片的文件名称是什么?【答案格式:demo.png】
Scr.txt
这里比较坏的是,出题人在这个文件夹里放的所有的文件都是有lsb隐写含有二维码的图片,不能拿到一个就跑去用。如果看到报错时候“第一组有错误”而想改数字爆破就走偏了。
Open: file-20260811000731048.png

最后找到这个图呢,也算是有所提示,是个打了码的恢复密钥截图
Open: file-20260811000910788.png

11.请分析计算机检材,接上题,BitLocker 恢复密钥的前六位是什么?【答案格式:123456】
682385
同上得到恢复密钥:682385-539220-507012-534138-615637-168982-003938-619234
Open: file-20260811001005046.png

12.请分析计算机检材,VPN 工具的订阅链接是什么?【答案格式:根据实际值填写】
https://node.netch.top/uploads/2026/06/1-20260624.yaml
bitlocker盘打开后有一个新建文本文档,推测是订阅链接

13.请分析计算机检材,虚拟币钱包地址"0x447a7a0a918ba02521ce248fe9a96a5fb92570d5"对应机主的开户银行是什么?【答案格式:XX银行】
中信银行
Open: file-20260811015851497.png

在信息倒卖交易记录.csv中锁定曾涛健,看到是中信银行
14.请分析计算机检材,接上题,该用户的身份证号是什么?【答案格式:根据实际值填写】
XXXXXXXXXXXXXXXXXX
BitLocker盘里有一个身份信息.zip,发现是伪加密
Open: file-20260811083349242.png

Open: file-20260811083425765.png

用手机号确定,得到sfzOpen: file-20260811083546985.png

可看到表格的打开后丢失了精度
Open: file-20260811085340485.png

换一个编辑器得到身份证号XXXXXXXXXXXXXXXXXX
15.请分析计算机检材,存放隐藏加密卷密码密文的文件,其 SHA256 哈希值后六位是什么?【答案格式:012345,小写】
734103
密文文件:C:\Users\Public\Documents\encrypted_password.bin(89 字节)
Open: file-20260811084154284.png

Open: file-20260811084328135.png

- SHA256:
c36251444e43a9b91ced89a671eea2dacdb8979e5016b6551f52bcc175734103
16.请分析计算机检材,接上题,解密该密文文件所用密钥的后六位是什么?【答案格式:根据实际值填写】
149a00
Open: file-20260811084529664.png

根据提示寻找密钥
Open: file-20260811084552574.png

17.请分析计算机检材,VC 加密容器的隐藏加密卷密码是什么?【答案格式:根据实际值填写】
Open: file-20260811085523549.png

分析分区3下encrypt.py文件
Open: file-20260811085616244.png

Open: file-20260811085931968.png

代码里用 os.urandom 分别生成 16 字节的 salt 和 12 字节的 nonce,密钥部分则是把密钥字符串通过 PBKDF2-HMAC-SHA256 迭代 10 万次,派生出 32 字节的 AES 密钥,最后用 AES-256-GCM 加密明文,再把 salt、nonce、认证标签 tag 和密文按顺序拼在一起
接下来解密,参考脚本:
import hashlib
from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes
from cryptography.hazmat.backends import default_backend
KEY = "c5c24328b5b99c343efe43ad6825164efa9f6ebd1176a334d1c20b9c9d149a00"
import os
candidates = [
r"C:\hlnet\work4\encrypted_password.bin",
r"C:\hlnet\4-1786239705\PC.E01\分区3\Users\Public\Documents\encrypted_password.bin",
os.path.join(os.path.dirname(os.path.abspath(__file__)), "encrypted_password.bin"),
]
path = next((p for p in candidates if os.path.exists(p)), None)
if path is None:
raise FileNotFoundError("找不到 encrypted_password.bin,请把文件放到脚本同目录")
data = open(path, "rb").read()
assert len(data) == 89, "文件长度应为 89 字节,实际 %d" % len(data)
salt, nonce, tag, ct = data[:16], data[16:28], data[28:44], data[44:]
print("文件位置:", path)
print("文件大小:", len(data))
print("salt :", salt.hex())
print("nonce :", nonce.hex())
print("tag :", tag.hex())
print("ciphertext:", ct.hex())
kdf = hashlib.pbkdf2_hmac("sha256", KEY.encode("utf-8"), salt, 100000)
print("派生AES密钥:", kdf.hex())
cipher = Cipher(algorithms.AES(kdf), modes.GCM(nonce, tag), backend=default_backend())
dec = cipher.decryptor()
plain = dec.update(ct) + dec.finalize()
print("明文密码 :", plain.decode("utf-8"))
Open: file-20260811090723900.png

得到明文:7s#Q2vL$9mP%4dFxN5!kR3@dF6#jM8H4@bW9*nR6#jF5%
18.请分析计算机检材,挖矿木马连接的远控服务器地址(要带端口)是什么?【答案格式:a.b.com:1234】
secure-cdn.update-srv.net:4444
打开内层VC后看到了木马源代码
Open: file-20260811090925259.png

Open: file-20260811091929557.png
分析混淆规则:
nsigned char key = _xor_c2_host[0]; // 数组第 0 字节 = XOR 密钥
size_t len = sizeof(_xor_c2_host) - 1;
for (size_t i = 1; i <= len; i++)
_xor_c2_host_decrypted[i - 1] = _xor_c2_host[i] ^ key; // 其余字节逐个异或密钥
Open: file-20260811092050512.png

static unsigned char _xor_c2_host[] = {
0xC0, 0xB3, 0xA5, 0xA3, 0xB5, 0xB2, 0xA5, 0xED, 0xA3, 0xA4, 0xAE, 0xEE,
0xB5, 0xB0, 0xA4, 0xA1, 0xB4, 0xA5, 0xED, 0xB3, 0xB2, 0xB6, 0xEE, 0xAE,
0xA5, 0xB4,
};
key = `0xC0`。
0xB3 ^ 0xC0 = 0x73 = 's'
0xA5 ^ 0xC0 = 0x65 = 'e'
0xA3 ^ 0xC0 = 0x63 = 'c'
0xB5 ^ 0xC0 = 0x75 = 'u'
0xB2 ^ 0xC0 = 0x72 = 'r'
0xA5 ^ 0xC0 = 0x65 = 'e'
...
逐个解完 = secure-cdn.update-srv.net。
端口:
Open: file-20260811092155741.png

key = 0x9A:0xAE ^ 0x9A = 0x34 = '4',五个字节全解成 4444
故答案为:secure-cdn.update-srv.net:4444
19.请分析计算机检材,木马用于加密通信的最终密钥(十六进制)是什么?【答案格式:根据实际值填写】
863744bf590d1d46fc2f124263d07ece
xor_strings.h第 308-313 行的三个宏:#define XOR_ENC_KEY_B64_KEY 0xD8 #define XOR_ENC_KEY_B64_LEN 16 #define XOR_ENC_KEY_B64_DATA \ 0xBA, 0xB5, 0x8E, 0x81, 0x96, 0x90, 0xB4, 0xAF, 0x95, 0xA2, 0xBB, 0xEB, 0xB9, 0xEA, 0x8E, 0xEDcrypto.c第 151-171 行aes_key_derive()使用这三个宏生成最终密钥。
② 第一步:XOR 解出 Base64 字符串
key = 0xD8,16 字节数据逐个异或(手算前几个):
0xBA ^ 0xD8 = 0x62 = 'b'
0xB5 ^ 0xD8 = 0x6D = 'm'
0x8E ^ 0xD8 = 0x56 = 'V'
0x81 ^ 0xD8 = 0x59 = 'Y'
...
解完 = bmVYNHlwMzc3a2V5(16 字符 Base64)。
③ 第二步:Base64 解码得到种子
按 4 字符一组解:
bmVY -> neX
NHlw -> 4yp
Mzc3 -> 377
a2V5 -> key
→ 种子 neX4yp377key(12 字节)。
④ 第三步:aes_key_derive 逐字节展开
crypto.c 第 163-171 行核心逻辑:
for (int i = 0; i < AES_KEYLEN; i++) { // AES_KEYLEN = 16
uint8_t b = seed[i % seed_len]; // 种子循环取字节
int rot = (i * 3 + 1) & 7; // 循环左移位数
b = (uint8_t)((b << rot) | (b >> (8 - rot)));
b ^= (uint8_t)(0x5A + i * 7); // 再异或常数
out_key[i] = b;
}
逐字节计算表(i、取的种子字节、循环左移位、左移结果、异或常数、输出):
i=00 seed[00]=6e rot=1 rotl=dc xor=5a -> 86
i=01 seed[01]=65 rot=4 rotl=56 xor=61 -> 37
i=02 seed[02]=58 rot=7 rotl=2c xor=68 -> 44
i=03 seed[03]=34 rot=2 rotl=d0 xor=6f -> bf
i=04 seed[04]=79 rot=5 rotl=2f xor=76 -> 59
i=05 seed[05]=70 rot=0 rotl=70 xor=7d -> 0d
i=06 seed[06]=33 rot=3 rotl=99 xor=84 -> 1d
i=07 seed[07]=37 rot=6 rotl=cd xor=8b -> 46
i=08 seed[08]=37 rot=1 rotl=6e xor=92 -> fc
i=09 seed[09]=6b rot=4 rotl=b6 xor=99 -> 2f
i=10 seed[10]=65 rot=7 rotl=b2 xor=a0 -> 12
i=11 seed[11]=79 rot=2 rotl=e5 xor=a7 -> 42
i=12 seed[00]=6e rot=5 rotl=cd xor=ae -> 63
i=13 seed[01]=65 rot=0 rotl=65 xor=b5 -> d0
i=14 seed[02]=58 rot=3 rotl=c2 xor=bc -> 7e
i=15 seed[03]=34 rot=6 rotl=0d xor=c3 -> ce
得到 16 字节密钥:86 37 44 BF 59 0D 1D 46 FC 2F 12 42 63 D0 7E CE
十六进制即 863744bf590d1d46fc2f124263d07ece。
20.请分析计算机检材,木马持久化时保存自身可执行文件的路径是什么?【答案格式:/usr/bin/demo】
/usr/lib/systemd/systemd-resolved
xor_strings.h 第 85-114 行三个持久化路径数组
Open: file-20260811092644238.png

混淆规则与第 18 题相同(首字节=密钥):
数组:_xor_persist_path_1
key: 0xA4
得到明文:/usr/lib/systemd/systemd-resolved

浙公网安备 33010602011771号