前言

FIC-{e404d6e66586e9460c23755afab5a872bcf78ab4}

哈希值:
SHA256:
830d0227bd16768648245e1aefe5d6583dd1d077b43b86422066b198ea169efa

某日, 警方接到举报, 举报人称近期互联网上出现了一涉黄网站极为活跃并大肆推广。警方跟进线索分析后,找到相应的网站进行了摸排调查,最终锁定网站的运营者李安弘,警方在对其实施抓捕的现场对电子数据进行了提取固定。

通过对李安弘的审讯, 警方了解到, 其雇佣了技术人员帮忙架设淫秽视频平台, 并找到境外团队对网站进行推广, 经过审讯和调查, 该嫌疑人还有多种其他违法行为,用以牟利。

请各位参赛选手对检材进行分析, 尝试还原整个案件和关键信息。

计算机

1. 分析计算机检材,操作系统版本号为

简答 · 10分 | 判分:不区分大小写/空格/换行符(末尾)/全半角 | 参考格式:1.1

这里有个问题,题目问操作系统版本号,但是正确答案在火眼里是在系统版本号栏目的。
不能轻信火眼。由上图知操作系统叫deepin:

因此确定是23.1
usr/lib/os-release
bookworm/sid 通常来自 /etc/debian_version,表示 Deepin 基于的 Debian 分支,并非 Deepin 的版本号。

正确答案:23.1

2. 分析计算机检材,李安弘曾收到一份免费领取token的邮件的疑似钓鱼邮件,其发送用户邮箱为

简答 · 10分 | 判分:不区分大小写/空格/换行符(末尾)

我来我也会被钓。免费token有点诱人了。

正确答案: hf13338261292@outlook.com

3. 分析计算机检材,李安弘电脑中记录的黄金换现金的商家联系方式为

简答 · 10分 | 判分:不区分大小写/空格/换行符(末尾)/全半角 | 参考格式:13111111111

正确答案:13612817854

4. 分析计算机检材,推广设计图中的apk下载链接为

简答 · 10分 | 判分:不区分大小写/空格/换行符(末尾)/全半角 | 参考格式:http:///?*

有个Gitlab的下载地址:

看主要的加密逻辑:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
def gen():
"""Encodes binary data into a RSA string for safe transmission/storage."""
p = getPrime(512)
q = p + 2
while not isPrime(q):
q += 2
n = p * q
e = 65537
phi = (p - 1) * (q - 1)
d = pow(e, -1, phi)
with open("public.txt", "w") as f_pub:
f_pub.write(f"{n}\n{e}")
with open("private.txt", "w") as f_priv:
f_priv.write(f"{n}\n{d}")
return n, e

要根据公钥爆破私钥。
由于它在 p 之后找第一个相邻奇素数,导致:

  • 实测 q − p = 84,两个因子几乎贴着
  • 因为 p、q 同奇,a = (p+q)/2 是整数,a² − n = ((q−p)/2)² 恒为完全平方
  • 于是 Fermat 分解的迭代次数 = (p+q)/2 − ⌈√n⌉ ≈ 0

html打开:

5. 分析计算机检材,李安弘电脑vpn软件开放的代理端口为

简答 · 10分 | 判分:不区分大小写/空格/换行符(末尾)/全半角 | 参考格式:80


小猫。


clash-verge.yaml显示端口。

正确答案:9527

6. 分析计算机检材,李安弘电脑中AI软件当前使用的模型类型为

简答 · 10分 | 判分:不区分大小写/空格/换行符(末尾)/全半角 | 参考格式:deepseek



这里显示的是deepseek,但是题目给出的参考格式肯定不是答案。这里得看后面的模型。

openai/gpt-oss-120b

7. 分析计算机检材,李安弘电脑中AI软件当前使用的模型apiKey为

简答 · 10分 | 判分:不区分大小写/空格/换行符(末尾)/全半角 | 参考格式:sk-abcd…

8. 分析计算机检材,李安弘电脑中勒索软件提供的解密服务联系方式为

简答 · 10分 | 判分:不区分大小写/空格/换行符(末尾)/全半角 | 参考格式:abcd123232

9. 分析计算机检材,李安弘电脑中记录的存放黄金的保险柜编号是

简答 · 10分 | 判分:不区分大小写/空格/换行符(末尾)/全半角 | 参考格式:1

10. 分析计算机检材,李安弘电脑中记录的保险柜密码是

简答 · 10分 | 判分:不区分大小写/空格/换行符(末尾)/全半角 | 参考格式:123456

手机

1. 分析手机检材,该手机型号为

简答 · 10分 | 判分:不区分大小写/空格/换行符(末尾)/全半角 | 参考格式:HUAWEIP90

2. 分析手机检材,李安弘手机计划前往迪拜的日期是

简答 · 10分 | 判分:不区分大小写/空格/换行符(末尾)/全半角 | 参考格式:20260101

20260606

3. 分析手机检材,李安弘手机中与网站搭建人员沟通所使用的app安装日期为

简答 · 10分 | 判分:不区分大小写/空格/换行符(末尾)/全半角 | 参考格式:20260101

20260414

4. 分析手机检材,李安弘手机中与网站搭建人员沟通所使用的app,存放聊天数据的数据库为

简答 · 10分 | 判分:不区分大小写/空格/换行符(末尾)/全半角 | 参考格式:message.db

wk_9628874a3c6b403593766496fa985893.db

5. 分析手机检材,存放聊天数据的数据库的解密密码为

简答 · 10分 | 判分:不区分大小写/空格/换行符(末尾)/全半角 | 参考格式:123456

9ed2@99y8.com.cn

6. 分析手机检材,李安弘购买云服务器商家的收款备用钱包地址为

简答 · 10分 | 判分:不区分大小写/空格/换行符(末尾)/全半角 | 参考格式:1

TK7mR3hS8vY7tY1nZ4kL9otSzgjLj6tP8v

7. 分析手机检材,李安弘手机中给网站搭建人员第一次转账的交易hash前6位为

简答 · 10分 | 判分:不区分大小写/空格/换行符(末尾)/全半角 | 参考格式:1

79663f

8. 分析手机检材,手机中使用的AI软件李安弘主动向AI提问了几次

简答 · 10分 | 判分:不区分大小写/空格/换行符(末尾)/全半角 | 参考格式:1

5

9. 分析手机检材,李安弘手机使用的AI软件调用本地AI模型及版本为

简答 · 10分 | 判分:不区分大小写/空格/换行符(末尾)/全半角 | 参考格式:Fic2.6

Qwen3.5-0.8B

10. 分析手机检材,李安弘曾使用无人机航拍,分析其飞行轨迹,其在哪个县进行飞行

简答 · 10分 | 判分:不区分大小写/空格/换行符(末尾)/全半角 | 参考格式:平安县

米脂县

11. 分析手机检材,李安弘最近安装了一个视频类APP,该APP声明了多个敏感权限用于收集用户隐私。请选择其中涉及用户隐私的敏感权限。

多选 · 10分 | 判分:不区分大小写/空格/换行符(末尾)/全半角

  • A. READ_CONTACTS
  • B. READ_SMS
  • C. RECEIVE_BOOT_COMPLETED
  • D. READ_CALL_LOG
  • E. SEND_SMS

A B D

12. 上述APP启动后会加载一个色情网站。请找出该APP当网络不可用时APP加载的本地离线页面路径。

简答 · 10分 | 判分:不区分大小写/空格/换行符(末尾)/全半角

file:///android_asset/www/index.html

13. 上述APP将非法收集的用户隐私数据上传至远程服务器。上传地址在代码中经过编码处理。请找出编码方式,还原出完整的上传服务器URL。

简答 · 10分 | 判分:不区分大小写/空格/换行符(末尾)/全半角

编码方式:Base64
上传 URL:https://api.sp-live88.com/collect/userdata

14. 该APP在本地创建了SQLite数据库存储收集到的用户信息。请分析代码,写出用于存储用户信息的表名

简答 · 10分 | 判分:不区分大小写/空格/换行符(末尾)/全半角

user_collection

15. 该APP的assets目录中存在一个加密配置文件config.dat。请解密该文件,写出其中的USDT钱包地址

简答 · 10分 | 判分:不区分大小写/空格/换行符(末尾)/全半角

TXqH7sVn8bR4kL2mN9pW6xJ3cY5dF1gA

16. 该APP前端JS代码可以直接调用Android原生方法获取用户隐私数据。请分析暴露了哪些方法用于获取通讯录?

简答 · 10分 | 判分:不区分大小写/空格/换行符(末尾)/全半角

getContactsList

17. 当主上传服务器不可达时,APP会获取备用服务器地址。请分析备用服务器的完整域名和端口

简答 · 10分 | 判分:不区分大小写/空格/换行符(末尾)/全半角 | 参考格式:a.b.c:80

backup.sp-live88.xyz:8443

附:散落记录待整理

重排前散落在其他章节的手机题相关记录,原样保留,写解题过程时归档:

com.ss.android.ugc.aweme

9ed2@99y8.com.cn

11.com.livevideo.hotclub
已确认

  3. 20260414
  4. 5
  5. Qwen3.5-0.8B
 6. A B D
 7. file:///android_asset/www/index.html
 8. 编码方式:Base64
 9. 上传 URL:https://api.sp-live88.com/collect/userdata
 10. user_collection
 11. TXqH7sVn8bR4kL2mN9pW6xJ3cY5dF1gA
 12. getContactsList

高置信,正在补最后一层证据记录

  13. wk_9628874a3c6b403593766496fa985893.db
  14. TK7mR3hS8vY7tY1nZ4kL9otSzgjLj6tP8v

记住,按题号序号对应答案!

服务器

服务器仿真

646
注意!Vmware必须管理员权限打开!不然没权限仿真

1. 该服务器主机操作系统版本为

简答 · 10分 | 判分:不区分大小写/空格/换行符(末尾)/全半角 | 参考格式:0.9

2. 该服务器根分区硬盘的uuid号为

简答 · 11分 | 判分:不区分大小写/空格/换行符(末尾)/全半角 | 参考格式:a1b2-c3

3. 该服务器中最新的docker镜像创建时间为

简答 · 10分 | 判分:不区分大小写/空格/换行符(末尾)/全半角 | 参考格式:2020-01-01T00:00:00.012345678Z

4. 该服务器根分区快照路径为

简答 · 11分 | 判分:不区分大小写/空格/换行符(末尾)/全半角 | 参考格式:/abc/def

5. 该网站后台管理入口对应的文件名为

简答 · 11分 | 判分:不区分大小写/空格/换行符(末尾)/全半角 | 参考格式:123.txt

6. 该网站设置的icp备案号为

简答 · 10分 | 判分:不区分大小写/空格/换行符(末尾)/全半角 | 参考格式:icp123

7. 该网站设置的主域名为

简答 · 12分 | 判分:不区分大小写/空格/换行符(末尾)/全半角 | 参考格式:abc.com

8. 该网站分类3中,视频的拼音为

简答 · 12分 | 判分:不区分大小写/空格/换行符(末尾)/全半角 | 参考格式:abc

9. 该站点设置页面中,被使用的前端模板来自于哪个源文件?

简答 · 13分 | 判分:不区分大小写/空格/换行符(末尾)/全半角 | 参考格式:abc.def

10. 该网站的伪静态规则配置文件sm3值为

简答 · 12分 | 判分:不区分大小写/空格/换行符(末尾)/全半角 | 参考格式:ABC123

11. 该网站关联的数据库的ip地址为

简答 · 11分 | 判分:不区分大小写/空格/换行符(末尾)/全半角 | 参考格式:1.1.1.1

12. 该网站数据库使用了哪一类容器技术

简答 · 10分 | 判分:不区分大小写/空格/换行符(末尾)/全半角 | 参考格式:abc

13. 运行在4000端口的备份数据库版本号为

简答 · 11分 | 判分:不区分大小写/空格/换行符(末尾)/全半角 | 参考格式:v1.1.1

14. 新注册用户数量最多的日期为

简答 · 11分 | 判分:不区分大小写/空格/换行符(末尾)/全半角 | 参考格式:2000/1/1

15. 马慧美最后一次登录该网站的ip为

简答 · 12分 | 判分:不区分大小写/空格/换行符(末尾)/全半角 | 参考格式:1.1.1.1

16. 以下哪个文件系统未被使用

单选 · 12分 | 判分:不区分大小写/空格/换行符(末尾)/全半角

  • A. ntfs
  • B. btrfs
  • C. xfs
  • D. lvm

17. 该服务器安装了以下那些数据库服务

多选 · 13分 | 判分:不区分大小写/空格/换行符(末尾)/全半角

  • A. mysql
  • B. GuessDB
  • C. tidb
  • D. postgresql
  • E. mariadb

互联网

1. 售卖卡密的公开群组ID为

简答 · 10分 | 判分:不区分大小写/空格/换行符(末尾)/全半角 | 参考格式:@abc123

2. 备份数据库中视频图片的文件名为

简答 · 10分 | 判分:不区分大小写/空格/换行符(末尾)/全半角 | 参考格式:abc.png

3. ngrok提供的域名为

简答 · 10分 | 判分:不区分大小写/空格/换行符(末尾)/全半角 | 参考格式:a.b.c

二进制

先挂载U盘:


1. 分析U盘检材,找到其中保存的加密程序SampleVC.exe,请给出这个exe程序的md5值

简答 · 10分 | 判分:不区分大小写/空格/换行符(末尾)/全半角 | 答案格式:c4ca4238a0b923820dcc509a6f75849b


答案:764789dd9c095d74b6b258cf0f7568b2

2. 分析SampleVC.exe,该程序编译的日期可能是什么?

简答 · 10分 | 判分:不区分大小写/空格/换行符(末尾)/全半角 | 答案格式:2025-06-06


答案:2026-04-17

3. 分析SampleVC.exe,正确的密码是什么?

简答 · 10分 | 判分:不区分大小写/空格/换行符(末尾)/全半角 | 答案格式:abcdefghABCDEFGH

由上题DIE看到程序64为,用×64 IDA打开。
分析main函数,这里是WinMain

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
int __stdcall WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
HCURSOR CursorW; // rax
HWND Window; // rax
HWND v8; // rbx
HACCEL AcceleratorsW; // rbx
WNDCLASSEXW v11; // [rsp+60h] [rbp-59h] BYREF
struct tagMSG Msg; // [rsp+B0h] [rbp-9h] BYREF
INITCOMMONCONTROLSEX picce; // [rsp+E0h] [rbp+27h] BYREF
int pvParam[4]; // [rsp+E8h] [rbp+2Fh] BYREF

LoadStringW(hInstance, 0x67u, &WindowName, 100);
LoadStringW(hInstance, 0x6Du, &ClassName, 100);
v11.cbSize = 80;
v11.lpfnWndProc = (WNDPROC)sub_1400024A0;
v11.style = 3;
*(_QWORD *)&v11.cbClsExtra = 0i64;
v11.hInstance = hInstance;
v11.hIcon = LoadIconW(hInstance, (LPCWSTR)0x6B);
CursorW = LoadCursorW(0i64, (LPCWSTR)0x7F00);
*(__m128i *)&v11.hbrBackground = _mm_load_si128((const __m128i *)&xmmword_1400058A0);
v11.hCursor = CursorW;
v11.lpszClassName = &ClassName;
v11.hIconSm = LoadIconW(hInstance, (LPCWSTR)0x6C);
RegisterClassExW(&v11);
SystemParametersInfoW(0x30u, 0, pvParam, 0);
::hInstance = hInstance;
Window = CreateWindowExW(
0,
&ClassName,
&WindowName,
0,
(pvParam[2] - pvParam[0] - 500) / 2,
(pvParam[3] - pvParam[1] - 300) / 2,
500,
300,
0i64,
0i64,
hInstance,
0i64);
v8 = Window;
if ( Window )
{
ShowWindow(Window, nShowCmd);
UpdateWindow(v8);
picce.dwSize = 8;
picce.dwICC = 255;
InitCommonControlsEx(&picce);
AcceleratorsW = LoadAcceleratorsW(hInstance, (LPCWSTR)0x6D);
while ( GetMessageW(&Msg, 0i64, 0, 0) )
{
if ( !TranslateAcceleratorW(Msg.hwnd, AcceleratorsW, &Msg) )
{
TranslateMessage(&Msg);
DispatchMessageW(&Msg);
}
}
LODWORD(Window) = Msg.wParam;
}
return (int)Window;
}

其中,最重要的一句话是:

v11.lpfnWndProc = (WNDPROC)sub_1400024A0;

这说明:sub_1400024A0 = 这个窗口的窗口过程(Window Procedure / WndProc)
Windows 会把这个窗口收到的几乎所有消息,都丢给它处理。
也就是说:WinMain 负责启动程序;sub_1400024A0 负责程序怎么表现、怎么响应用户。
双击sub_1400024A0,跳转:

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
LRESULT __fastcall sub_1400024A0(HWND hWndParent, UINT a2, WPARAM a3, LPARAM a4)
{
struct tagPAINTSTRUCT Paint; // [rsp+60h] [rbp-68h] BYREF

switch ( a2 )
{
case 1u:
hWnd = CreateWindowExW(
0x200u,
L"EDIT",
&word_14000570C,
0x50800080u,
150,
70,
200,
30,
hWndParent,
(HMENU)0x4E21,
hInstance,
0i64);
qword_140008798 = CreateWindowExW(
0x200u,
L"EDIT",
&word_14000570C,
0x50800080u,
150,
100,
200,
30,
hWndParent,
(HMENU)0x4E22,
hInstance,
0i64);
CreateWindowExW(
0,
L"BUTTON",
&word_14000571C,
0x50000000u,
140,
150,
100,
30,
hWndParent,
(HMENU)0x2711,
hInstance,
0i64);
break;
case 2u:
PostQuitMessage(0);
break;
case 0xFu:
SendMessageW(hWnd, 0x1501u, 1ui64, (LPARAM)&lParam);
SendMessageW(qword_140008798, 0x1501u, 1ui64, (LPARAM)&qword_140005750);
BeginPaint(hWndParent, &Paint);
EndPaint(hWndParent, &Paint);
break;
case 0x111u:
switch ( (unsigned __int16)a3 )
{
case 0x68u:
DialogBoxParamW(hInstance, (LPCWSTR)0x67, hWndParent, DialogFunc, 0i64);
break;
case 0x69u:
DestroyWindow(hWndParent);
break;
case 0x2711u:
sub_140002200();
break;
default:
a2 = 273;
return DefWindowProcW(hWndParent, a2, a3, a4);
}
break;
default:
return DefWindowProcW(hWndParent, a2, a3, a4);
}
return 0i64;
}

线索 1:按钮创建时

(HMENU) 在创建子窗口控件时就是控件的 ID。这里写死了 0x2711。
线索 2:按钮点击后
Windows 消息机制:点按钮 → 系统发 WM_COMMAND 给父窗口。WM_COMMAND 的消息号是 0x111。
看 case 0x111u 这个分支:

a3 就是 wParam,Windows 规定 WM_COMMAND 的 wParam 低 16 位是控件 ID。所以当按钮(ID=0x2711)被点击,wParam 低 16 位 = 0x2711,进入对应 case,调用 sub_140002200()。

答案:PleaseRunAsAdmin

4. 分析U盘检材,利用SampleVC.exe解密U盘中被加密的文件,解密后的文件的后缀是什么?

简答 · 10分 | 判分:不区分大小写/空格/换行符(末尾)/全半角 | 答案格式:exe

5. 分析U盘检材,找到被加密的交易记录,统计李安弘虚拟币收款地址钱包总收款金额为

简答 · 10分 | 判分:不区分大小写/空格/换行符(末尾)/全半角 | 参考格式:1.00

前面密码还没用到,肯定这一题需要。

在sampleVC里挂载文件。密码PleaseRunAsAdmin
发现不对。其实密码也提示管理员权限运行。