2026FIC初赛
2026FIC初赛
计算机部分
1.分析计算机检材,操作系统版本号为
答案:23.1
解题思路:查看系统信息

2.分析计算机检材,李安弘曾收到一份免费领取token的邮件的疑似钓鱼邮件,其发送用户邮箱为
解题思路:查看邮件 领取token的邮件-查看发件人。Lha回复给hf

3.分析计算机检材,李安弘电脑中记录的黄金换现金的商家联系方式为
答案:13612817854
解题思路:仿真之后可以看到语音记事本,打开可以看到联系方式。

4.分析计算机检材,推广设计图中的apk下载链接为
答案:https://drive.google.com/file/d/1z3aRS-lkaJYKm7Cp1XjtUmVPsOEVW2fV/view?usp=sharing
解题思路:附件中有enc和加密html文件1,还有public,可以恢复私钥。
EXP:
1 | from pathlib import Path |
解密得到二维码图片,扫码得到地址

5.分析计算机检材,李安弘电脑vpn软件开放的代理端口为
答案:9527
解题思路:仿真后找clashverge的设置找端口

6.分析计算机检材,李安弘电脑中AI软件当前使用的模型类型为
答案:OpenRouter
解题思路:仿真后打卡UOS AI 设置里面有模型类型

7.分析计算机检材,李安弘电脑中AI软件当前使用的模型apiKey为
答案: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
解题思路:找配置文件,找到basic数据库,查看数据库得到


8.分析计算机检材,李安弘电脑中勒索软件提供的解密服务联系方式为
解题思路:从邮件入手,钓鱼邮件存在github仓库,访问*https://github.com/z583985166这个人的仓库,已发布的有windows的exe,下载下来是一个exe。分析之后可以找到勒索信息,程序里硬编码的勒索信息是:
解密请 联系zheniyexin@tutanota.com
9.分析计算机检材,李安弘电脑中记录的存放黄金的保险柜编号是
答案:997546
解题思路:对exe文件分析,恢复mp4文件
exe程序原理:
- main.main 先构造通配符 *.mp4,只处理当前目录下的 MP4 文件。 - 然后对每个文件调用 main._a(path, 0x539),这里的 0x539 就是十进制 1337。 - main._a 会: 1. os.ReadFile 读整个文件。 2. 用 bytes.Index 找到第一个 stco。 3. 读取 stco 里的 entry_count。 4. 把这个表里的每个 4 字节大端偏移值都加上 1337。 5. 再写回原文件。 stco 是 MP4 的 chunk offset 表。它一旦整体被加偏移,播放器就会去错误位置找媒体数据,于是视频看起来像“被加密”了。实际上 内容没被 AES/RC4 之类真正加密,只是索引表被平移了。所以恢复方法也很直接:把同一批 stco 偏移值逐个减回 1337。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111

```python
#!/usr/bin/env python3
import argparse
import glob
import pathlib
import shutil
import struct
import sys
DELTA = 0x539
def recover_file(path: pathlib.Path, delta: int, backup: bool) -> bool:
data = bytearray(path.read_bytes())
idx = data.find(b"stco")
if idx < 0:
print(f"[skip] {path} 未找到 stco")
return False
if idx + 12 > len(data):
print(f"[skip] {path} stco 结构不完整")
return False
entry_count = struct.unpack_from(">I", data, idx + 8)[0]
table_start = idx + 12
table_end = table_start + entry_count * 4
if table_end > len(data):
print(f"[skip] {path} stco 表越界,entry_count={entry_count}")
return False
for i in range(entry_count):
off = table_start + i * 4
value = struct.unpack_from(">I", data, off)[0]
fixed = (value - delta) & 0xFFFFFFFF
struct.pack_into(">I", data, off, fixed)
if backup:
backup_path = path.with_suffix(path.suffix + ".bak")
if not backup_path.exists():
shutil.copy2(path, backup_path)
path.write_bytes(data)
print(f"[ok] {path} 已修复,entry_count={entry_count}")
return True
def expand_inputs(patterns: list[str]) -> list[pathlib.Path]:
result: list[pathlib.Path] = []
for pattern in patterns:
matches = [pathlib.Path(p) for p in glob.glob(pattern)]
if matches:
result.extend(matches)
else:
result.append(pathlib.Path(pattern))
seen: set[pathlib.Path] = set()
unique: list[pathlib.Path] = []
for item in result:
resolved = item.resolve()
if resolved not in seen:
seen.add(resolved)
unique.append(item)
return unique
def main() -> int:
parser = argparse.ArgumentParser(
description="恢复被 get_token_windows.exe 篡改的 MP4 stco 偏移表"
)
parser.add_argument(
"targets",
nargs="*",
default=["*.mp4"],
help="要修复的文件或通配符,默认是当前目录下的 *.mp4",
)
parser.add_argument(
"--delta",
type=lambda x: int(x, 0),
default=DELTA,
help="样本使用的偏移增量,默认 0x539",
)
parser.add_argument(
"--no-backup",
action="store_true",
help="不生成 .bak 备份",
)
args = parser.parse_args()
targets = expand_inputs(args.targets)
if not targets:
print("没有匹配到任何文件", file=sys.stderr)
return 1
fixed = 0
for target in targets:
if not target.exists():
print(f"[skip] {target} 不存在")
continue
if target.is_dir():
print(f"[skip] {target} 是目录")
continue
if recover_file(target, args.delta, not args.no_backup):
fixed += 1
return 0 if fixed else 2
if __name__ == "__main__":
raise SystemExit(main())
10.分析计算机检材,李安弘电脑中记录的保险柜密码是
答案:583985
解题思路:文件中存在et文件,在home/tool里面还有加密方法(txt)

1 | 隐藏点阵的编码方式——AlternativeText = ((x+100 ^ 85)*1000) + (y+100 ^ 85)结合 execelcrypt.txt,核心是它把每个点的坐标写进了形状的 AlternativeText: |
手机部分
1.分析手机检材,该手机型号为【不区分大小写】【不区分空格】【不区分换行符 (不考虑末尾)】【不区分全半角】 【参考格式:HUAWEIP90】
答案:Redmi Note 7 Pro
解题思路:查看基本信息的设备信息

2.分析手机检材,李安弘手机计划前往迪拜的日期是【不区分大小写】【不区分空格】【不区分换行符 (不考虑末尾)】【不区分全半角】 【参考格式:20260101】
答案:20260606
解题思路:在手机自带的笔记的数据库找到。

3.分析手机检材,李安弘手机中与网站搭建人员沟通所使用的app安装日期为【不区分大小写】【不区分空格】【不区分换行符 (不考虑末尾)】【不区分全半角】 【参考格式:20260101】
答案:20260414
解题思路:在PC部分可以看到网站技术联系uuutalk,

所以可以确定软件是uuutalk,到应用列表搜索,可以看到安装时间。

4.分析手机检材,李安弘手机中与网站搭建人员沟通所使用的app,存放聊天数据的数据库为【不区分大小写】【不区分空格】【不区分换行符 (不考虑末尾)】【不区分全半角】 【参考格式:message.db】
答案:wk_9628874a3c6b403593766496fa985893.db
解题思路:到上面软件的数据库文件可以找到加密db文件,密码就是文件名。

5.分析手机检材,存放聊天数据的数据库的解密密码为【不区分大小写】【不区分空格】【不区分换行符 (不考虑末尾)】【不区分全半角】 【参考格式:123456】
答案:9628874a3c6b403593766496fa985893
解题思路:详见上题,文件名就是密码。
6.分析手机检材,李安弘购买云服务器商家的收款备用钱包地址为【不区分大小写】【不区分空格】【不区分换行符 (不考虑末尾)】【不区分全半角】 【参考格式:1】
答案:TN8vQzB3n7W5wVca9W4kL2wP7xY9zM5nU1
解题思路:数据库可以找到

7.分析手机检材,李安弘手机中给网站搭建人员第一次转账的交易hash前6位为【不区分大小写】【不区分空格】【不区分换行符 (不考虑末尾)】【不区分全半角】 【参考格式:1】
答案:26266f
解题思路:可以在数据库中找到图片,是交易截图,看一下TXID即可。


8.分析手机检材,手机中使用的AI软件李安弘主动向AI提问了几次【不区分大小写】【不区分空格】【不区分换行符 (不考虑末尾)】【不区分全半角】 【参考格式:1】
答案:5
解题思路:在pocketpaiai中,可以找到数据库,

答案在message表中,共计5条。

9.分析手机检材,李安弘手机使用的AI软件调用本地AI模型及版本为【不区分大小写】【不区分空格】【不区分换行符 (不考虑末尾)】【不区分全半角】 【参考格式:Fic2.6】
答案:Qwen3.5
解题思路:在上题的文件中可以找到model文件夹。

10.分析手机检材,李安弘曾使用无人机航拍,分析其飞行轨迹,其在哪个县进行飞行【不区分大小写】【不区分空格】【不区分换行符 (不考虑末尾)】【不区分全半角】 【参考格式:平安县】
答案:米脂县
解题思路:无人机航拍,我们可以在应用列表找到大疆软件,可以到文件中搜索dji,
在飞行record中可以找到两条飞行日志,现可通过脚本分析日志飞行轨迹,


1 | import struct |
得到答案去谷歌地图,


11.李安弘最近安装了一个视频类APP,该APP声明了多个敏感权限用于收集用户隐私。请选择其中涉及用户隐私的敏感权限。
A. READ_CONTACTS
B. READ_SMS
C. RECEIVE_BOOT_COMPLETED
D. READ_CALL_LOG
E. SEND_SMS
答案:ABD
解题思路:放到雷电或者jadx分析一下。

12.上述APP启动后会加载一个色情网站。请找出该APP当网络不可用时APP加载的本地离线页面路径。【不区分大小写】【不区分空格】【不区分换行符 (不考虑末尾)】【不区分全半角】
答案:file:///android_asset/www/index.html
解题思路:需要将上题APK包导出,用JADX进行逆向分析,在主逻辑处我们可以看到WebView,强行给z2赋值为fasle,所以最后加载的只能是file:///android_asset/www/index.html。

13.上述APP将非法收集的用户隐私数据上传至远程服务器。上传地址在代码中经过编码处理。请找出编码方式,还原出完整的上传服务器URL。【不区分大小写】【不区分空格】【不区分换行符 (不考虑末尾)】【不区分全半角】
答案:https://api.sp-live88.com/collect/userdata
解题思路:可以找到uploader函数,这里用base64解码,

得到答案。

14.该APP在本地创建了SQLite数据库存储收集到的用户信息。请分析代码,写出用于存储用户信息的表名【不区分大小写】【不区分空格】【不区分换行符 (不考虑末尾)】【不区分全半角】
答案:user_collection
解题思路:直接搜索文本database。

15.该APP的assets目录中存在一个加密配置文件config.dat。请解密该文件,写出其中的USDT钱包地址【不区分大小写】【不区分空格】【不区分换行符 (不考虑末尾)】【不区分全半角】
答案:TXqH7sVn8bR4kL2mN9pW6xJ3cY5dF1gA
解题思路:直接搜索config.dat可以找到加密逻辑,提取config_seed的值,位置在res/values/strings.xml
hotclub_2026_sec,然后解密即可。

1 | import hashlib |
输出,答案是TXqH7sVn8bR4kL2mN9pW6xJ3cY5dF1gA
1 | AES密钥: 3ffc0b996b851d80 |
16.该APP前端JS代码可以直接调用Android原生方法获取用户隐私数据。请分析暴露了哪些方法用于获取通讯录?【不区分大小写】【不区分空格】【不区分换行符 (不考虑末尾)】【不区分全半角】
答案:getContactsList()
解题思路:NativeBridge 桥接类中带有 @JavascriptInterface 注解、专门读取通讯录的接口:
JS 调用方式:window.AppNative.getContactsList();

17.当主上传服务器不可达时,APP会获取备用服务器地址。请分析备用服务器的完整域名和端口【不区分大小写】【不区分空格】【不区分换行符 (不考虑末尾)】【不区分全半角】 a.b.c:80
答案:backup.sp-live88.xyz:8443
解题思路:datauploader这里可以看到主服务器失败会调用backup备用。我们需要分析\lib\arm64-v8a。

1 | 核心解密函数在 0x1324,逻辑是两段: |
1 | from __future__ import annotations |

服务器取证
需要两个镜像一起仿真,退出容器环境,安装ssh。
1 | sudo apt update |


1.该服务器主机操作系统版本为 【不区分大小写】【不区分空格】【不区分换行符 (不考虑末尾)】【不区分全半角】 【参考格式:0.9】
答案:Debian GNU/Linux 13 (trixie)
解题思路:cat /etc/os-release

2.该服务器根分区硬盘的uuid号为 【不区分大小写】【不区分空格】【不区分换行符 (不考虑末尾)】【不区分全半角】 【参考格式:a1b2-c3】
答案:3231e52f-5e15-44c4-b224-e29cb4201c0e
解题思路:cat /etc/fstab

3.该服务器中最新的docker镜像创建时间为 【不区分大小写】【不区分空格】【不区分换行符 (不考虑末尾)】【不区分全半角】 【参考格式:2020-01-01T00:00:00.012345678Z】
答案:2026-04-16T07:15:50.535713491Z
解题思路:查看镜像创建时间
1 | docker images --format "{{.Repository}}:{{.Tag}} {{.CreatedAt}}" |

4.该服务器根分区快照路径为 【不区分大小写】【不区分空格】【不区分换行符 (不考虑末尾)】【不区分全半角】 【参考格式:/abc/def】
答案:/root/history
解题思路:列出所有的btrfs子卷,

查看子卷的详细信息,

5.该网站后台管理入口对应的文件名为 【不区分大小写】【不区分空格】【不区分换行符 (不考虑末尾)】【不区分全半角】 【参考格式:123.txt】
答案:user.php
解题思路:查看本机所有 TCP/UDP 正在监听的端口
1 | ss -tunlp |

1 | cat /etc/nginx/sites-enabled/default 查看目录 |

查看根目录,(这里可以看到是苹果CMS)

答案user.php
6.该网站设置的icp备案号为 【不区分大小写】【不区分空格】【不区分换行符 (不考虑末尾)】【不区分全半角】 【参考格式:icp123】
答案:icp1919810
解题思路:直接查看ip对应的网站

7.该网站设置的主域名为 【不区分大小写】【不区分空格】【不区分换行符 (不考虑末尾)】【不区分全半角】 【参考格式:abc.com】
解题思路:上面的题可以知道是苹果CMS,

这样就可以找配置了,答案是www.2026fic.forensix

8.该网站分类3中,视频的拼音为 【不区分大小写】【不区分空格】【不区分换行符 (不考虑末尾)】【不区分全半角】 【参考格式:abc】
答案:sipaanshe
解题思路:网站看不到,

去找database,

SSH+MYSQL:先SSH连接服务器ip,再连接上图的mysql。

得到答案,sipaanshe

9.该站点设置页面中,被使用的前端模板来自于哪个源文件? 【不区分大小写】【不区分空格】【不区分换行符 (不考虑末尾)】【不区分全半角】 【参考格式:abc.def】
答案:info.ini
解题思路:使用的前端模板配置(来自/var/www/html/maccms10/application/extra/maccms.php)

可以看到配置文件

10.该网站的伪静态规则配置文件sm3值为 【不区分大小写】【不区分空格】【不区分换行符 (不考虑末尾)】【不区分全半角】 【参考格式:ABC123】
答案:e73407468e6f52af54c7b14632eeeb9be25b05106d06c4c3085fc843c223793f
解题思路:伪静态规则配置在Nginx站点配置文件中,可以到nginx配置中找到,

计算sm3,
1 | openssl dgst -sm3 /etc/nginx/sites-available/default |

11.该网站关联的数据库的ip地址为 【不区分大小写】【不区分空格】【不区分换行符 (不考虑末尾)】【不区分全半角】 【参考格式:1.1.1.1】
答案:10.0.3.100
解题思路:上面题只能看到hostname是mytidb,看不到ip,可以去hosts查看。(/etc/hosts)

12.该网站数据库使用了哪一类容器技术 【不区分大小写】【不区分空格】【不区分换行符 (不考虑末尾)】【不区分全半角】 【参考格式:abc】
答案:LXC
解题思路:docker没有数据库的容器,所以不是docker,ip有lxcbr0,可以去配置看下是否对应数据库。

可以看到对应的就是刚刚的数据库名字,开机会自启。

13.运行在4000端口的备份数据库版本号为 【不区分大小写】【不区分空格】【不区分换行符 (不考虑末尾)】【不区分全半角】 【参考格式:v1.1.1】
答案:v7.5.0
解题思路:过滤4000端口,查看版本。
1 | lxc-attach -n mytidb -- ss -tlnp | grep 4000 |
1 | cat /db/tidb/etc/systemd/system/tidb.service |

14.新注册用户数量最多的日期为 【不区分大小写】【不区分空格】【不区分换行符 (不考虑末尾)】【不区分全半角】 【参考格式:2000/1/1】
答案:36386
解题思路:之前题目的数据库查询
1 | SELECT |

15.马慧美最后一次登录该网站的ip为 【不区分大小写】【不区分空格】【不区分换行符 (不考虑末尾)】【不区分全半角】 【参考格式:1.1.1.1】
答案:51.43.21.163
解题思路:sql语句查询Ma Hui Mei
1 | SELECT |

16.以下哪个文件系统未被使用
A.ntfs
B.btrfs
C.xfs
D.Lvm
答案:A
解题思路:可以看到btrfs 和 lvm,AC没有,但是ntfs在Windows系统,所以更可能是A
1 | lsblk -f #此命令将显示块设备的文件系统信息,包括文件系统类型、UUID、标签等。 |

17.该服务器安装了以下那些数据库服务
A.mysql
B.GuessDB
C.tidb
D.postgresql
E.Mariadb
答案:ACD
解题思路:AC是有的,按之前的题目得到的,执行命令可以看到有DE
1 | dpkg -l | grep -iE 'mariadb|postgres|guessdb' #一个用于列出已安装软件包的命令,适用于基于 Debian 的 Linux 系统(如 Ubuntu)。它会显示系统中所有已安装的软件包及其相关信息,包括名称、版本和描述 |

确认有没有E,发现没有,所以是ACD。

互联网取证
1.售卖卡密的公开群组ID为 【不区分大小写】【不区分空格】【不区分换行符 (不考虑末尾)】【不区分全半角】 【参考格式:@abc123】
答案:@FIC_2026
解题思路:查看/var/www/html/maccms10/application/extra/maccms.php,找到该链接。

2.备份数据库中视频图片的文件名为 【不区分大小写】【不区分空格】【不区分换行符 (不考虑末尾)】【不区分全半角】 【参考格式:abc.png】
答案:7b3fdd9d464ce48e7f20cd45f918c9a6.jpg
解题思路:连接服务器部分第13题提到的备份服务器,改端口为4000即可,
查看mac_vod,找到这个文件。7b3fdd9d464ce48e7f20cd45f918c9a6.jpg。

3.ngrok提供的域名为 【不区分大小写】【不区分空格】【不区分换行符 (不考虑末尾)】【不区分全半角】 【参考格式:a.b.c】
答案:blemish-junior-unengaged.ngrok-free.dev
解题思路:
1 | ngrok http 80 #80端口的本地 Web 服务暴露到公网,生成一条公网可访问的临时域名,外网任何人都能打开你的本地网站。 |
查看ngrok的80端口。

二进制程序取证
1.分析U盘检材,找到其中保存的加密程序SampleVC.exe,请给出这个exe程序的md5值? (答案格式:c4ca4238a0b923820dcc509a6f75849b)
答案:764789DD9C095D74B6B258CF0F7568B2
解题思路:计算哈希。

2.分析SampleVC.exe,该程序编译的日期可能是什么? 【不区分大小写】【不区分空格】【不区分换行符 (不考虑末尾)】【不区分全半角】 (答案格式:2025-06-06)
答案:2026-04-17 13:53:20
解题思路:放到PE工具查看。

3.分析SampleVC.exe,正确的密码是什么? 【不区分大小写】【不区分空格】【不区分换行符 (不考虑末尾)】【不区分全半角】 (答案格式:abcdefghABCDEFGH)
答案:PleaseRunAsAdmin
解题思路:
1 | 在函数 `0x140002200` 附近可以看到: |
4.分析U盘检材,利用SampleVC.exe解密U盘中被加密的文件,解密后的文件的后缀是什么? 【不区分大小写】【不区分空格】【不区分换行符 (不考虑末尾)】【不区分全半角】 (答案格式:exe)
答案:vhd
解题思路:a1 是 U 盘加密源文件路径;程序读取原加密文件,拼接后缀 .vhd 生成解密输出文件;打开 *.vhd 文件以二进制写入模式保存解密后数据。

5.分析U盘检材,找到被加密的交易记录,统计李安弘虚拟币收款地址钱包总收款金额为 【不区分大小写】【不区分空格】【不区分换行符 (不考虑末尾)】【不区分全半角】 【参考格式:1.00】
答案:186948.09
解题思路:
解密vc得到vhd,
1 | def rc4_decrypt(file_in_path: str, file_out_path: str, rc4_key: bytes): |
挂载之后,清洗一下数据,

得到答案186948.09





