近期,某市反诈部门接到多名群众报案,均遭遇“投资理财” 类电信网络诈骗,指向的犯罪团伙涉案资金巨大、作案链条隐蔽。 办案单位迅速成立专案组开展电子数据取证工作。经初查,该犯 罪团伙…
一、手机取证
(一)提示:分析办案人员提取的“手机检材-1.zip”回答下列问题:
PROBLEM
【填空题】分析嫌疑人在该手机登录的小米账号ID为?(答案格式:以实际为准,如1234567890)
3134129162

【填空题】嫌疑人设定了一个每周六循环的闹钟,该闹钟的备注为?(答案格式:以实际为准,如打精武杯)
给老妈汇款

【填空题】分析嫌疑人使用的VPN软件,配置的节点服务器地址是什么?(答案格式:不含端口,如192.168.1.1)
107.175.0.221

能看到两个可能vpn,看了下clash里基本是免费节点,而v2rayNG有符合格式的配置

【填空题】接上题,上述VPN软件在该手机的桌面位置是什么?请写出第几页第几行第几列。(答案格式:页-行-列,如1-2-3)
3-1-3
截图或者系统桌面app
这里找系统桌面 com.miui.home 的数据库进行查找

查看screen表发现有三页,这里虽然有映射关系,但是由于是从0开始计数的,所以具体页码值就是id值

再到favorite表找app具体信息
screen为3 cellx为2,celly为0cellx即列号,celly即行号,同样从0计数
因此答案为 3页1行3列

【填空题】嫌疑人最近一次登录Google账号的日期是什么时候?(答案格式:2026-09-09)
2026-07-07第一时间想到浏览器,再浏览器的历史里看到登录日志

这里追踪数据库里看下具体时间戳

用dcode转utc+8确认时间为20260707

【填空题】在嫌疑人手机相册中发现一张图片文件名异常,经分析该图片进行了数据隐写,请回答该异常图片的文件名称是什么?(答案格式:XXX.png)
密码.png

在检材里找到图片备份解压
DCIM相册里能找到三张图片

其中有一张空白图片明显存在隐写,稍微查看下就发现rgb最后一位有问题,做lsb拿到隐写内容


【填空题】接上题,该异常图片中隐写的内容为?(答案格式:feiying666)
qazokm123

【填空题】在该手机屏幕第3页第1列第4行的应用是一个伪装的密拍程序,请问机主使用该软件拍了几张图片?(答案格式:9)
1
回到第4题的数据库,先找下应用

找到的伪装应用是计算器

根据找到的包名进行追踪

能找到两个文件夹
其中一个能找到加密的数据库文件,另一个有base.apk,说明该包是数据和APK分开导出的,这里要找下数据库密码,逆向下APK

直接找库名没找到,爆搜下SQLite,能看到有个sqlcipher继续审计发现里面定义了很多openOrCreateDatabase的函数

追踪引用,在androidx.appcompat.app的DataHandler类中找到引用
这里能注意到Keys类的keyDb函数和keyBase函数根据对openOrCreateDatabase函数分析发现keyBase函数结果是加密密钥

key类开头定义了两个常量
private static byte one = 116;
private static byte[] ones = {-1, 0, 3, 5, 1, -5};
keyDb() 的逻辑是:把 116 依次加到 ones 的每个字节上,再拼上 .db
得到库名 stwyuo.db

而keyBase() 对 ones 的原始字节做 MD5,取前 6 位十六进制

得到密码后用DB Browser(SQLcipher)打开并输入密码解密得到图片

数据库里能看到就拍了一张图片
ai的妙妙APK逆向思路
📌 提示 以下是ai思路
查看 AndroidManifest.xml 确认所有Activity

com.androidx.calculator.Calculator
com.androidx.calculator.TestActivity
com.androidx.calculator.Test2Activity
androidx.appcompat.app.CCActivity
com.karumi.dexter.DexterActivity
androidx.appcompat.app 是 AndroidX 的库包,正常不应该出现一个业务 Activity
审计该包,确认哪些类不属于 AndroidX

CCActivity
DataHandler
Keys
FileUtils
接下来追踪 CCActivity
先看 onCreate()JADX 反编译出来的逻辑大致是:
setContentView(...);
mCameraView = findViewById(...); // CameraView
mBtn = findViewById(...); // 拍照按钮
checkPermission(); // 申请相机、录音、定位等权限
initCamera(); // 初始化 CameraView
initLocation(); // 初始化定位
startSingleUpdate(); // 请求一次定位
mDataHandler = new DataHandler(this);
再看 initCamera():
mCameraView.addCameraListener(new CCActivity$2(this));
mBtn.setOnClickListener(v -> mCameraView.takePictureSnapshot());
得到CCActivity 是一个用 CameraView 拍照的界面,点按钮就 takePictureSnapshot()
追踪拍照回调。
initCamera() 里的两句是连着的:
mCameraView.addCameraListener(new CCActivity$2(this));
mBtn.setOnClickListener(v -> mCameraView.takePictureSnapshot());
第一句把 CCActivity$2 注册成 CameraView 的监听器;第二句是按钮点击后触发一次抓拍。CCActivity$2 实现了 com.otaliastudios.cameraview.CameraListener,所以 takePictureSnapshot() 完成后,CameraView 会回调它的 onPictureTaken(PictureResult):
// CCActivity$2
@Override
public void onPictureTaken(PictureResult result) {
String phone = CCActivity.access$200(this$0); // 手机号
String gps = CCActivity.access$300(this$0); // 定位
byte[] data = result.getData(); // JPEG 字节
CCActivity.access$400(this$0)
.handlerData(new Object[]{phone, gps, data});
CCActivity.access$500(this$0, "已抓拍");
}
这里的 access$xxx 是编译器给私有字段/方法生成的访问器,JADX 里也可能直接显示成 mPhoneNumber、getLastLocation()、mDataHandler。重点看最后一句:照片字节、手机号、定位被装进 Object[],交给 DataHandler.handlerData()。
继续跟 DataHandler.handlerData():
public void handlerData(Object[] data) {
String phone = (String) data[0];
String gps = (String) data[1];
byte[] bytes = (byte[]) data[2];
new Thread(new DataHandler$$ExternalSyntheticLambda0(this, phone, gps, bytes)).start();
}
再点进 lambda 的 run(),对应 lambda$handlerData$0:
File filesDir = mContext.getFilesDir();
FileUtils.deleteAllInDir(filesDir); // 先清掉上一次拍摄的文件
long ts = getNetworkTimeMillis();
String dbName = Keys.keyDb(); // stwyuo.db
File dbFile = new File(filesDir, ts + "/" + dbName);
dbFile.getParentFile().mkdirs();
SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(
dbFile,
Keys.keyBase(), // c258ba
null
);
createTable(db); // CREATE TABLE picture(...)
insertData(db, phone, gps, bytes); // INSERT INTO picture VALUES(...)
db.close();
uploadData(dbFile); // 上传远端
到这里就能把“照片 → 数据库”完整串起来:
所以第八题实际数的不是“文件数”,而是 picture 表的行数。当前 .bak 里只有一个 f/1789880624000/stwyuo.db,解密后 SELECT COUNT(*) FROM picture 返回 1。
补一句“这个相机是怎么打开的”,排查时很自然会问:
// Calculator.onEquals()
String input = mFormulaEditText.getText().toString();
if (CCActivity.testKey(this, input)) {
onClear();
return;
}
// CCActivity.testKey()
if ("1+2.0".equals(input)) {
startActivity(new Intent(context, CCActivity.class));
return true;
}
return false;
也就是说,在伪装计算器里输入 1+2.0 再按 = ,不会真的去算 3,而是启动 CCActivity。这也解释了为什么桌面上看就是一个普通计算器。
完整链路:
Calculator.onEquals() 输入 1+2.0
→ CCActivity.testKey()
→ CCActivity
→ initCamera(): addCameraListener(CCActivity$2)
→ 点击拍照: takePictureSnapshot()
→ CCActivity$2.onPictureTaken()
→ DataHandler.handlerData()
→ filesDir/<ts>/stwyuo.db (SQLCipher, key=c258ba)
→ picture 表 1 行
注意:程序每次拍摄前会 deleteAllInDir(getFilesDir()),本地只保留最近一次拍摄的数据库;这个“1 张”是本地 picture 表的记录数,不代表历史上只拍过一次,历史拍摄需要结合远端上传或流量分析。
【填空题】分析使用该密拍软件拍摄的图片,其中显示器的型号为?(答案格式:以实际为准,如TUOJIE)
C34H890WGC
见上题,点击data数据部分得到图片

【填空题】机主多次通过购票软件查询出行行程,在北京时间2026年6月24日20:21:33查询的目的城市为?(答案格式:南京)
百色
先找软件,基本确定是这个

接下来翻下有查询内容的数据库

根据题目提供的时间转时间戳,然后直接爆搜定位到数据库这里注意我们输入的日期为 2026-06-24 20:21:33,只写到秒,没有写毫秒因此爆搜时应删去最后的 零位 进行搜索,避免精度问题导致搜索错误


记录数据是时间戳,这里可以用火眼自带功能,在下拉栏里找到时间戳转换,便于观察确认,用时间戳确认也可以
最终答案即 百色

【填空题】请找到机主在2026-09-20 13:41:20打开的表格文件,该文件的SM3哈希值后四位是什么?(答案格式:英文大写,如12AB)
37EA
这里询问的是打开时间,不是创建、修改时间,因此无法排时间线搜索因此从表格文件入手,寻找能打开创建表格文件的应用

能在wps里发现有一个xlsx文件,其修改时间和题目要求不符,去具体数据库里看看是否记录的打开时间
emmm,没找到,去 apps/<包名>/r/ 找了下缓存也没东西
看myq的wp,发现在f/.rebootIntent下存在有崩溃的恢复快照,记录了当时打开文档的完整上下文

json里面能看到题目的时间戳,且键为 OPEN_DOCUMENT_CURRENT_TIME

这里重新思考了下,应该在得到具体包名后就直接爆搜时间戳的


这样能直接定位到文件
确定文件后就是找到文件了,在备份里面
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
<string name="recent_file_key">[{"cloudCacheFileState":3,"editCount":3,"fileScope":2,"fileState":1,"id":"1a58a8f8-b03f-4fc1-9c0e-25434dd41156","name":"快捷回复-2026-04-14 10-23-48-enterprise.xlsx","filePath":"/storage/emulated/0/Android/data/cn.wps.moffice_eng/.cache/KingsoftOffice/file/download/32342bd4-6be8-46b5-8a4f-5fad2e96aff8/com.android.fileexplorer.myprovider/快捷回复-2026-04-14 10-23-48-enterprise.xlsx","userId":"","modifyDate":1789900864236,"type":0}]</string>
</map>
这里的路径是缓存路径,不是真实文件路径,没法根据这个路径定位文件

`backup_doc.zip`:MIUI 单独备份的“文档”类外部文件,只有 /Download/ 下的 xlsx、docx
cyberchef算哈希还是有点慢了,用命令出的
openssl dgst -sm3 "快捷回复-2026-04-14 10-23-48-enterprise.xlsx"

【填空题】请分析嫌疑人在2026-09-20 17:39:19时播放的抖音链接为?(答案格式:以实际为准,如https://www.baidu.com/abc/123asad)
https://www.douyin.com/video/7641161472526150282
简单过滤下就能找到

【填空题】请分析嫌疑人在抖音中共手动提现多少元至银行卡?(答案格式:100)
1003
能在聊天记录看到一些转账记录,找下这些内容的详细信息
发现是加密数据库,还是把包导出后爆搜 提现 关键词吧
找到的三个文件都看一下,发现主要在key_notice_group_86.sgv文件里
找到提现内容且确认提现操作类型type为92
搜索该键值对还能发现一次提现
【填空题】请分析机主抖音头像从哪个应用下载的可能性最大,该应用的包名是?(答案格式:以实际为准)
com.quark.browser
直接看抖音能发现在f/keva/repo/multi_account_repo/multi_account_repo.blk 里保存了头像 URL: https://p26-sign.douyinpic.com/aweme/100x100/aweme-avatar/tos-cn-i-0813_oozx...jpeg但这是上传到抖音后由 CDN 重新生成的地址
这里需要从源头找,在夸克浏览器的历史记录里找到头像相关搜索
同时备份里没找到头像相关图片,在夸克数据库里找到对应下载记录,获得图片名称
搜索得到图片
【填空题】机主相册中有大量的豪车、别墅信息用来“杀猪盘”,请分析这些照片是使用什么应用进行下载的,写出该应用的包名。(答案格式:以实际为准)
`uni.UNI3DFAFCD
对应图片在backup_images的 无印 文件夹里找到
拿到 无印 应用包名即可
【填空题】接上题,该应用使用的下载链接来自于哪个应用,请写出链接来源应用的包名。(答案格式:以实际为准)
com.ss.android.ugc.aweme
先翻数据库
在数据库的 download tasks 表中能看到都是抖音的下载链接
(二)提示:分析办案人员提取的“手机检材-2.zip”回答下列问题:
PROBLEM
📌 提示 该检材是IOS手机的诊断的日志备份,当时做完看群里有人说能用iLEAPP做,但实际复现下来使用非常难受,很多数值都有问题,感觉还是分析源文件靠谱 iLEAPP 解析 iOS 和 iPadOS 的取证提取,并生成 HTML、TSV、时间线、KML 和 LAVA 输出。它支持iOS/iPadOS 11至当前版本
【填空题】该手机的备份密码是多少?(四位数字,答案格式:1234)
1111
爆破manifest.plist
【填空题】该手机的备份时间是什么时候?(答案格式:2026-09-09 09:09:09)
2026-09-23 15:02:50
manifest.plist里找到2026-09-23T07:02:50Z转utc+8
【填空题】该手机的序列号是什么?(答案格式:以实际为准,英文大写)
FD2W71HVJCM0
同样在manifest.plist找到
【填空题】该手机的蓝牙MAC地址是多少?(答案格式:英文大写,如A0:A1:4E:83:16:B0)
C0:A5:3E:82:06:E0
bluetooth文件夹下的状态txt中找到
【填空题】分析该手机日志文件,该手机电池的激活时间(UTC+8)是什么时候?(答案格式:2022-01-23 15:02:53)
2021-12-26 20:35:27
BDC = Battery Data Collection,是 iOS 的电池诊断数据采集机制,数据放在 /var/db/Battery/BDC/,在 sysdiagnose 里就是 logs/BatteryBDC/。
BDC_Once 是其中的一次性电池身份/设计参数快照:电池第一次被系统识别、第一次上电时写入一次,记录的是这块电池的“身份证”和设计参数,后面一般不再变化。取证上,最早的那条 Once 记录就对应电池首次激活/首次使用时间。
依旧注意utc+8
【填空题】分析该手机的充电记录,该手机最近一次被充至 100% 电量的时间是什么?请回答时间戳。(答案格式:以数据库中记录的原始时间戳为准)
1783544086.8534
通过火眼能够快速定位到数据库文件logs\powerlogs\powerlog_2026-09-23_14-24_07CAD94F.PLSQL
查看数据库找到level转换为100的记录时间戳即可
【填空题】嫌疑人安装蝙蝠.app的时间(UTC+8)是什么?(答案格式:以首次安装请求时间为准,如2026-09-09 09:09:09)
2026-08-12 18:07:21
依旧火眼快速定位日志文件地址
找到最早安装时间2026-08-12 10:07:21记得utc+8需要+8h
【填空题】嫌疑人手机在2026-07-09 第一次解锁屏幕是由哪个应用/服务触发的?请写出应用包名。(答案格式:www.tuojieinfo.com)
com.apple.camera
这个一开始不知道是哪个日志里弄的,后来发现还是要到powerlog2026-09-2314-24_07CAD94F.PLSQL数据库里找
这个数据库表很多,优先找 lock screen 相关表
能找到 PLSpringBoardAgent_EventForward_SBLock
查看发现locked=1为锁定,0解锁,同时将时间戳转换,确认2026-07-09第一次解锁时间为 2026-07-09 02:15:16
接下来要找解锁应用,这里思路是找应用相关日志和屏幕相关日志
这里搜索 screen 定位到解锁前最近的改动是由com.apple.mobilephone触发的但是仔细观察会发现有bundleID名为com.apple.lock-screen且对应AppRole为3,其为锁屏UI
但是这样还是不能排除 com.apple.mobilephone 的可能,因此这里需要注意表中还有一列为level
Level=1050 是锁屏/相机的安全层,Level=0 是主屏底层,Level=1 是普通应用窗口。02:15:09 和 02:15:12 时,锁屏 1050 仍然压在电话 1 的上面,所以电话窗口虽然在,但它不是当前可见、可交互的应用
因此真实过程为
二、计算机取证
【填空题】该计算机的CPU型号是什么?(答案格式:i3-100A)
i7-12700H
【填空题】该计算机曾接入了一个移动硬盘,分配驱动器号为D盘,请问盘符名称为?(答案格式:以实际为准,如Tuo_Jie)
Samsung_T5
USB能看到接入的盘符名称
在win10通知里确认接入的卷标
【填空题】该计算机的开机密码是多少?(答案格式:以实际为准,如123456)
260919
开机密码也就是用户凭证,仿真时候得到用户为 pc先导出NTLM哈希
C:\Windows\System32\config\SAM
C:\Windows\System32\config\SYSTEM
pypykatz registry SYSTEM --sam SAM
导出后用hashcat进行爆破,根据题目答案格式猜测为6为纯数字,设置掩码后进行爆破
得到 260919
【填空题】该计算机曾经连接过的远程桌面地址是什么?(答案格式:192.168.1.1)
103.87.9.67
【填空题】该计算机部署的WSL版本是多少?(答案格式:1.2.13.0)
2.7.14.0
仿真后可以直接命令查看
火眼里也能看
【填空题】WSL中部署的大模型推理引擎名称和版本是什么?(答案格式:名称-版本,英文全小写,如llama.cpp-0.1.0)
vllm-0.11.0
要先仿真wsl,这里因为嵌套虚拟化问题不建议直接在仿真里起先找wsl的虚拟镜像文件
在嵌套证据里找到,将其添加为新检材进行分析分析后查看历史命令能看到引擎是vllm
在deploy.sh文件和python库中找到证明
【填空题】接上题,其中部署的参数量为1.7B的模型设置的最大上下文长度(max-model-len)是多少?(答案格式:1234)
8192
在上题的deploy.sh中找到
【填空题】接上题,安装使用的CUDA版本是多少?(答案格式:仅写主版本号与次版本号,如11.3)
12.8
deploy.sh中找到
【填空题】该计算机中部署的自动语音识别(ASR)模型共有几个?(答案格式:1)
2
pc用户找到ASR文件夹
打开models文件夹能看到三个目录
但查看config.json能发现只有两个引擎且 enabled 都为 true
【填空题】请尝试运行嫌疑人部署的自动语音识别系统,该系统的服务器地址及端口号是什么?(答案格式:http://192.168.1.1:8080)
http://127.0.0.1:8765
见上题 config.json
【填空题】请在用于测试自动语音识别系统的文件中,找到的密码是什么?(答案格式:以实际为准,如1234)
20260915
查看/docs文件夹发现语音转文字的图片,但是未发现密码
确认到音频格式为wav,找一下音频文件
temp文件夹找到但是不对
在Downloads里找到voice.rar,下载后发现300多个音频
这里三百多个音频也不方便一个个看过去可以右键上方列名,展示修改日期和创建日期进行排序能看到21的修改日期不同
然后启动ASR即可识别
【填空题】经分析,该密码可能为嫌疑人某加密盘的密码,请找到该加密盘,写出加密盘原始文件的名称。(答案格式:123.abc)
图片.vhd
加密盘几个思路,火眼开文件全显后大小降序,找后缀名txt doc但大小极大的或者后缀找vhd
这里找到vhd文件直接磁盘挂载
输入上题密码进行bitlocker解密
【填空题】接上题,加密盘中AI生成的图片共有多少张?(答案格式:1)
30
解开加密卷即可查看
【填空题】在上述AI生成的图片中哪个图片是通过腾讯混元大模型生成的?(答案格式:123.jpg)
S06.png
导出图片后一个个用010看
第6长图片存在混元模型生成痕迹
【填空题】接上题,有一张图片中有隐藏的信息,隐藏的密码是什么?(答案格式:仅写密码,如1234)
南京
邮件里看到是S21图片
导出放随波逐流一把梭出来宽高问题
修改高度后查看底部得到密码
【填空题】该计算机中是否安装过其他本地大模型部署工具,如果有请写出其软件名称及版本号。(答案格式:名称-版本,英文全小写,如vllm-0.1.0)
ollama-0.34.0
【填空题】接上题,上述工具部署的模型ID是什么?(答案格式:以实际为准,如123abc)
2091ee8c8d8f
这个ID其实就是拿manifest文件算 SHA-256前12为的哈希
可以用命令看,也能做该扩展文件的哈希取前12位即可
【填空题】该计算机中嫌疑人使用邮箱软件登录的邮箱账号是什么?(答案格式: jelly@tuojieinfo.com)
somebadthings2026@163.com
【填空题】接上题,上述邮箱账号登录邮箱客户端使用的授权码是什么?(答案格式:以实际为准)
JUGd5cjHGXvSzMN3
见上题
【填空题】嫌疑人在计算机中安装的以太坊钱包是什么?请写出钱包应用名称。(答案格式:以实际为准)
MetaMask
没装软件,但是浏览器插件能看到
【填空题】请找到上述钱包的助记词,并写出第一个单词。(答案格式:以实际为准)
palace
便签前里能看到一些单词,但这是模型相关内容
发现在手机模拟器里,将其添加为新检材
需要用火眼的特征识别分析过才能在图片里看到wallpaper图片
或许下一个逍遥模拟器导入数据盘可能更好找
【填空题】嫌疑人的Ethereum地址后四位是多少?(答案格式:以实际为准)
D816
经典找eth这里我看几个wp写的嗯找有点累了,打算让ai写个识别并分析eth的插件算了
【填空题】该计算机中部署的Deepseek Harness使用的工作区文件夹名称是什么?(答案格式:以dsh界面为准)
Documents
pc用户下找到dsh
找到workspace.json得到工作目录
【填空题】该计算机中部署的Deepseek Harness配置的API Key是什么?(答案格式:以实际为准)
sk-47e986fb09b34d74a33a76d376658409
.credentials.yaml中找到
【填空题】嫌疑人曾提问“虚拟货币一般用于洗钱都是怎么操作的”,请问该问题的rpcID是什么?(答案格式:以实际为准)
132fb7ca-b49f-42f5-9fdc-751072190bd5
session里找到会话文件
vscode里查看找到洗钱条目
但是里面没有找到rpcid这个键
📌 提示 这类 Agent/Harness 工具(DeepSeek Harness 这种)的通用存储设计来讲,这两个文件其实是同一场会话的两种表示:一个是“摘要缓存”,一个是“完整事件日志”
因此导出该文件后解压读取jsonl即可找到rpcID
【填空题】接上题,该轮对话的推理输出token是多少?(答案格式:123)
296
往下翻能看到该轮对话的token消耗记录
【填空题】嫌疑人在计算机中部署的OpenCode的版本号是什么?(答案格式:1.2.3)
1.18.31
【填空题】嫌疑人在计算机中部署的OpenCode配置连接了几个模型?(答案格式:5)
2
【填空题】嫌疑人在OpenCode中手动添加了一个自己的Skill,请写出Skill的名称。(答案格式:tuojie-forensics)
fraud-domain-ip-trace
【填空题】嫌疑人曾经使用上述Skill尝试对某涉赌网站进行信息获取,请写出该网站的网址。(答案格式:无需填写www,如baidu.com)
bctop10.com
现在skill目录找下有无记录
在一个forensics-out输出文件夹里找到域名md文档中确实记载了对该涉案域名的溯源
【填空题】截至到对象使用上述Skill的时间,该网站的域名注册时间为多少天?(答案格式:123)
563
同样在md文档中找到
【填空题】尝试找出该计算机中一份用于日后给其他项目加密的密码字典,请写出打开该密码字典的密码。(答案格式:以实际为准)
nanjing
这个密码字典其实在之前的邮件部分就看到过了,明显是这个常用密码集合
再根据邮件信息进行掩码爆破
这里最好是先用office2john导出office哈希后再进行爆破
根据导出的哈希 $office$*2007*20*128*16*9d03ddba133cd6f6717a5c8500b036c0*fc72dc6f9a7daa38b3545df889cb3ad1*7082f7fa51e20b9ac836e6cb45090b516b2ec095能看出是office 2007 因此使用 -m 9400
得到密码nanjing
打开后能看到有一句诗进行了标记
【填空题】计算机中曾传输过一个敏感APK,请写出该APK的包名。(答案格式:abc.def)
com.leedbcje
还是邮件附件,有个名称APK的文件
找到附件的邮件内容能看到是容器,这里爆搜找到容器位置后,根据之前的题目39题知道还有个密码 南京 没用过
输入即可解开容器
查看容器内app拿到包名
【填空题】该笔记本电脑中存在一份人员名单信息,请尝试找出该名单,并写出编号为1的人员住址信息。(提示:相关文件密码为纯小写字母,答案格式:以实际为准)
北京市朝阳区建国路88号
参考了很多师傅的wp,感觉还是思路比较重要
首先索引搜索名单,能找到一个叫名单的虚拟机,导出整个虚拟机目录后将其仿真
之后恢复快照 打开虚拟机
安装vmtools导出pdf这里其实缺失了文件头,但我用的genoffice不修也能能正常打开
再分析56题的邮件内容
大致能猜到56题解开的docx中那句就是密码,尝试后发现需要用拼音输入
rizhaoxianglushengziyan
成功打开
三、服务器取证
【填空题】分析服务器检材,该服务器的操作系统版本是什么?(答案格式:Centos 19.02.14 LTS)
Ubuntu 22.04.5 LTS
ssh连上就有
火眼也行
【填空题】分析服务器检材,该服务器的根文件系统(/)的 UUID 是多少?(答案格式:以实际为准)
ea044f8e-b4ad-4151-a508-135bf5e57a94
直接 lsblk -f -p 以文件系统为核心展示块设备能看到sd2的挂载点是根目录,答案是其uuid
【填空题】分析服务器检材,该服务器部署的运维面板安全入口是什么?(答案格式:1abc23)
5adf0f
火眼看到小皮面板,和宝塔差不多,命令为 xp
【填空题】接上题,该面板管理员密码的哈希值(32位MD5)是多少?(答案格式:英文小写)
2af0c70468cb8dc60e7b17c692d56d4d
【填空题】分析服务器检材,该服务器部署的知识库监听端口是什么?(答案格式:8080)
3001
翻/opt能找到anythingllm
真正确认是在小皮面板里的安全里找到名为 AnythingLLM knowledge base 的服务,对应端口为 3001
【填空题】接上题,该知识库的登录密码是什么?(答案格式:以实际为准,如 123Abc)
12345678
在.env里找到
【填空题】接上题,部署的知识库向量数据库(LanceDB)中存储的向量数量是多少?(答案格式:123)
162
opt目录下存在 anythingllm_DEPLOY.md文件
从部署手册里能看到向量数量和 documents_vectors条目相关
分析AnythingLLM 的元数据库 /opt/anythingllm/storage/anythingllm.db验证条目为162条
当然直接访问服务看是最快的
【填空题】接上题,知识库中配置的智谱API Key是什么?(答案格式:以实际为准)
58698bedc6dc4cec843279c6f8af606d.IWW6vmNn7kYurMQ0
见64题,知识库的 LLM 供应商为 zai(智谱)
【填空题】分析服务器检材,该服务器中存在一个LUKS 加密卷,解密密码是什么?(答案格式:tuojie@feiyingteam)
neko@123456
60题中使用的 lsblk -f -p 已经能看到加密卷了
sda3 crypto_LUKS
这里查看历史命令能看到使用了unlock-data来解密和挂载搜索脚本位置能看到本质就是通过 cryptsetup解锁后再挂载设定的挂载目录是 /data
root@neko-virtual-machine:~# which unlock-data
/usr/local/sbin/unlock-data
root@neko-virtual-machine:~# cat /usr/local/sbin/unlock-data
#!/bin/bash
if ! mountpoint -q /data; then
if [ -t 0 ]; then read -rs -p 'LUKS口令:' PW; echo; else read -r PW; fi
printf "$PW" | /usr/sbin/cryptsetup open /dev/sda3 data_crypt --key-file=- || { echo ❌口令错误; exit 1; }
mount /dev/mapper/data_crypt /data || { echo ❌挂载失败; exit 1; }
systemctl restart xpd; sleep 10
fi
/xp/server/docker/start >/dev/null 2>&1 || true
nft list chain ip filter INPUT | grep -q 'dport 80 ct' || nft insert rule ip filter INPUT meta l4proto tcp tcp dport 80 ct state new counter accept
sleep 15
N=$(/xp/server/docker/docker -H unix:///run/docker.sock ps -q | wc -l)
if [ "$N" -ge 2 ]; then echo ✅解密成功,业务已就绪; else echo ❌Docker未就位-$N; fi
root@neko-virtual-machine:~#
接下来去找密码在工作区的文件上传处能看到宠用密码本.md,左边还给出了文件目录
翻文件找到对应json文件
检索LUKS找到密码 neko@123456
成功解密并挂载
【填空题】分析服务器检材,服务器上部署的 dsh(DeepSeek Harness)版本号是多少?(答案格式:以实际为准,如1.0.0-1.2)
0.1.1-rc.2
/opt目录下找到dsh文件夹,读取repo目录下的package.json配置文件
【填空题】接上题,该dsh配置的 DeepSeek API Key是什么?(答案格式:以实际为准)
sk-2177516d95314bcb87467626b7b43623
DSH 的用户配置目录的 /opt/dsh/dsh-home/.dsh/.credentials.yaml 保存供应商凭据
【填空题】接上题,DSH中用户安装的插件共有多少个?(答案格式:如 3)
5DSH 基于 Cordis 微内核,一切皆插件因此搜索常见用户配置目录和插件库
~/.dsh/profiles/
~/.dsh/plugins/
~/.dsh/bundles/
node_modules/(npm安装的插件)
最上面两个是官方插件,因此实际用户实际按照5个
【填空题】分析服务器检材,该服务器中部署了一个API中转站,该API中转站管理员账号Jelly的登录密码是什么?(答案格式:以实际为准)
Jelly@666
这个需要在解密加密盘后做,在/data里看到new-api文件夹mm.txt里找到
【填空题】接上题,该中转站里启动的模型中哪个模型供应商下的模型最多?(答案格式:TuoJie)
OpenAI
重启小皮面板能看到docker镜像
根据3000端口以及上题的账密登录到模型广场里看下供应商就知道了
【填空题】接上题,该中转站源码中用户密码存储使用的哈希算法是什么?(答案格式:如 md5)
bcrypt
/opt/new-api/.env里找到数据库凭证信息new-api:km5K78jFddY4jj5lLVLa
datagrip连接后查看user表,一眼bcrypt
【填空题】接上题,该 API 中转站平台注册的用户总数是多少?(答案格式:如1234)
6200
网站查看用户能看到
或者数据库看也行
【填空题】接上题,平台全部消费记录中,单笔消费额度(quota)的最大值是多少?(答案格式:1000)
3428685
找消费记录表logs表中发type=2是消费字段
筛选type=2后降序即可
【填空题】分析服务器检材,嫌疑人部署了一个云手机,该云手机的设备名称是什么?(答案格式:以实际为准)
redroid12_x86_64
历史命令里看到启动云手机脚本
neko家目录找到脚本分析
#!/bin/bash
# 一键启动 redroid 云手机投屏
export PATH=/xp/server/docker:$PATH
sudo -v
sudo bash -c "docker start redroid-1 2>/dev/null || (cd /opt/redroid && docker-compose up -d)"
while [ "$(adb connect 127.0.0.1:5555 >/dev/null 2>&1; adb -s 127.0.0.1:5555 shell getprop sys.boot_completed 2>/dev/null | tr -d \r)" != "1" ]; do sleep 3; done
pkill -x scrcpy
XA=$(ls /run/user/1000/.mutter-Xwaylandauth.* 2>/dev/null | head -1)
DISPLAY=:0 XAUTHORITY=$XA XDG_RUNTIME_DIR=/run/user/1000 SNAP_LAUNCHER_NOTICE_ENABLED=false snap run scrcpy -s 127.0.0.1:5555 --no-audio --max-size 800 --max-fps 15 &
SPY=$!
wait $SPY && echo "投屏已退出" || echo "❌ 投屏启动失败,请截图上方 ERROR 行反馈"
直接启动脚本失败
但解密的data目录里能找到 redroid-1 文件夹redroid是一种docker容器化安卓
查看容器发现容器已经开启了,这个是解密数据盘 unlock-data 时执行 /xp/server/docker/start 启动的映射开放5555端口,这个默认是adbd端口,所以这道题可以通过adb连接纯命令行做
不过在仔细观察cli脚本启动报错后,能看到其实是图形化的问题
📌 提示 镜像自带 scrcpy 4.1(snap rev 483),仿真运行期间被 snapd 自动刷新至 5.0.1(rev 523)
使用图形化成功运行脚本
查看设置找到设备名称
【填空题】接上题,请问该云手机中安装的记账软件中文名称是什么?(答案格式:支付宝)
纯记账
查看手机app找到
【填空题】接上题,该记账软件中显示支付宝的账户余额为?(答案格式:-123.12)
-75803.81
打开纯记账,在账号管理看到支付宝账户余额
【填空题】接上题,该记账软件会将数据保存在本地数据库中,该数据库的名称是什么?(答案格式:Jelly.db)
AccountBook.db
解开加密卷后的 /data/redroid-1 里找这里的数据目录就等同于真机的 /data
直接adb列第三方包找包名
adb -s 127.0.0.1:5555 shell pm list packages -3 # -3 = 只列第三方
找到数据库文件
AccountBook.db 查看发现记账内容,那就是这个
【填空题】接上题,该记账软件中欠债借款类型对应的图标名称是什么?(答案格式:123.jpg)
borrowing3.png
随便点开一条欠债借款记录找到图标
图标存在apk资源目录里,找到apk文件后导出
翻资源文件找到
【填空题】分析服务器检材,嫌疑人部署了一个发卡系统,请问该发卡系统的框架版本是什么?(答案格式:Abc-1.2.0)
Laravel-12.67.0
发卡系统部署在 /xp/www/zongcai,查看.env
看下端口发现80是开的,可以直接访问
datagrip连下数据库找到用户密码哈希
md5但不确定有没有加盐
admin账户在system_user表里,尝试修改密码成功
dashboard直接显示框架版本
【填空题】接上题,该发卡系统的平台抽佣比例是多少?(答案格式:10%)
3%
【填空题】接上题,该发卡系统中七牛云存储配置的AccessKey是什么?(答案格式:以实际为准)
AKTl23456789abcdefghijklmnopqrstuvwxyz
【填空题】接上题,该发卡系统的百度统计ID是什么?(答案格式:以实际为准)
4567891230abcdef1234567890abcdef
【填空题】接上题,该发卡系统支持微信公众号后台配置,请问配置的公众号AppID是什么?(答案格式:以实际为准)
wx9a2b3c4d5e6f7890
【填空题】接上题,该发卡系统的支付渠道,有几个还在启用?(答案格式:10)
2
官方答案是2,应该要的是启用且可用
数据库里能看到启用有9个
【填空题】接上题,订单号ZC202607111204的商品名称是什么?(答案格式:以实际为准)
影视动漫双平台月卡 平台担保
【填空题】接上题,该发卡系统的累计营收金额是多少?(答案格式:12346.36)
52707.46
四、物联网取证
(一)提示:分析办案人员提取的“无人机”文件夹,内含“26-09-14-10-12-59_FLY001.DAT”,回答下列问题:
PROBLEM
纯学习了,大疆无人机日志取证的手工分析 | mumuzi的blog
【填空题】该无人机的型号是什么?(答案格式:Tuojie1)
Mavic2
010查看看到大疆标识
csvview打开日志文件右侧看到型号
【填空题】飞行记录中马达的启动时间(UTC +8)是什么时候?(答案格式:2026-08-02 11:05:13)
2026-09-14 10:15:33
查看马达转速确认大致启动时间,看到0附近开始提速
继续查看日志
可以看到0处日志记录启动在日志开头能看到记录日志的时间
而日志属性记录的时间是2点
所以日志时间为utc,10点为utc+8时间,加上154s得到马达启动时间2026-09-14 10:15:33
【填空题】接上题,该马达总共运行多少秒?(答案格式:四舍五入,回答整数,如321)
151
日志和马达转速曲线,这个可以联动看,鼠标在曲线上移动,左侧的日志也会动,拖到曲线中马达转速为0的时候,查看左侧日志的记录
【填空题】飞行记录中海拔最高时的纬度是多少?(答案格式:四舍五入取小数点后五位,如31.11111)
31.22783
在sigplayers选中任意播放器,同时显示sigpicker,在其中展开GPS并选择Lat和heightMSL
点击update plot展示
拖动到海拔最高为74.9m时,当前纬度为31.22772
【填空题】分析飞行记录的轨迹为几边形?(答案格式:4)
5
直接看 GeoPlayer
(二)提示:分析办案人员提取的“NAS”文件夹,内含“sda-system.E01、sdb.E01、sdc.E01、sdd.E01、sde.E01”,回答下列问题:
PROBLEM
https://github.com/lovelyteams/lovelycarvelovely系列工具超级好用
【填空题】分析涉案NAS的存储配置,其数据盘的RAID级别是什么?(答案格式:RAID0)
RAID5
1系统盘4数据盘,raid5重组,块大小为512K
【填空题】接上题,分析其条带大小是多少?(答案格式:64K)
512K
见上题
【填空题】该操作系统root账户的密码是多少?(提示:六位密码,第一位是T,第二位是小写英文,后面是数字,答案格式:根据实际情况进行填写)
Tj2026
根据题目描述显然是爆破了,/etc/shadow拿哈希用hashcat爆破
【填空题】该设备使用的NAS平台名称是什么?(答案格式:英文小写,如tuojie)
openmediavault
先对NAS平台进行仿真,导出LovelyCarve重组的RAID5镜像
然后将系统盘和重组镜像用火眼仿真一起仿真
老样子先加张网卡ssh连上去
# 1) 先清掉原来那张不存在的桥上的地址(网卡不存在的话,这条报错也无所谓)
ip addr flush dev vmbr0
# 2) 把真实网卡拉起来
ip link set ens33 up
# 3) 给它一个和宿主机同网段的地址
ip addr add 192.168.1.101/24 dev ens33
# 4) 设默认路由(网关填宿主机那块 VMware 虚拟网卡的地址)
ip route replace default via 192.168.1.1 dev ens33
nginx服务开在91端口上,访问发现平台,这里也拿到了下题的端口号
【填空题】接上题,其管理页面的端口是多少?(答案格式:80)
91
见上题
【填空题】分析涉案NAS回答用户alice的Email是什么?( 答案格式 : 1121313@163.com )
14785256@qq.com
在/etc/openmediavault/config.xml中能通过alice搜索找到email
或者登录平台查看用户数据得到,这里需要账密使用 omv-firstaid omv救援工具,修改平台管理员账户密码
查看/etc/passwd能看到admin账户是平台管理员账户,其uid<1000也说明了是系统账号
登入后查看用户得到邮箱
100.【填空题】该NAS回收站保留文件的天数是多少?(答案格式:2)
30
选择服务->SMB->共享,选中后点击编辑即可查看
这里同样可以在 /etc/openmediavault/config.xml 找到,搜索recycle
101.【填空题】分析NAS,哪个设备曾登录NAS?请写出对方设备名。(答案格式:根据实际情况进行填写)
tj-zxy
在日志中寻找,选择验证日志,筛选登录相关,能看到除当日外9月20日存有登录信息,登录ip为192.168.116.1
但题目问的是设备名称
能看到主机名tj-zxy
102.【填空题】分析NAS数据,嫌疑人曾访问哪个文件导致报错?(请写出文件名,含扩展名,答案格式:Tj123.docx)
i9r1rkr0.apk
这题翻日志找不到,答案在 /root 里的filebrowser的日志里
相应码 403 404 是错误码,这里有点没想到这第一眼看上去真的像迷惑ai的选项()
103.【填空题】NAS中SHA256哈希值为75A42B1F337722E4127DCA66CBC9BB38FF82F56F0D66C2FAE59517ACF6FE9BFB的文件是什么软件产生的?(答案格式:英文小写,如python)
snipaste
这题神了,把全部文件哈希一遍都找不到
然后想到压缩包文件,但没有密码没法解压
也是看了其他师傅wp才能想到 docx、xlsx、pptx都是压缩包,因此可以藏的地方很多,把他们全部解压并算哈希
检索哈希得到对应文件
随波逐流分析得到软件名称 Snipaste
104.【填空题】分析NAS中的数据,9月18日比9月17日新增多少客户?(答案格式:1)
3
在数据盘里找到客户数据xlsx文件
这里用lovelycarve导出比较方便,当然仿真的虚拟机上也把数据盘挂载在 /srv/dev-disk-by-uuid-59494dc6-9af2-4768-b6a6-90819d35420e下,也能找到
导出两张表后对比看到多出三个客户
105.【填空题】分析NAS中的数据,收U笔数最多的钱包被谁控制?(答案格式:根据实际情况进行填写,如tuojie)
charlie
导出USDT入金明细.xlsx查看
存在加密,啥提示没有,只能爆破了PS:这里看其他师傅wp是有提示的,可能是导出问题
office2john拿哈希后用hashcat爆破
6位数字爆破得到密码 424242
打开后根据收款地址编号统计,最多避暑位365笔,交易编号为W005
能在该表内看到负责人为alice
但这里就有个坑,负责人不是控制人,收款地址和控制人的映射关系要在另一张表 钱包总表.xlsx中查看
这张表里说明W005地址对应控制人为charlie
106.【填空题】当前哪个用户可通过浏览器上传文件到NAS?(答案格式:填写用户名,如bob)
K
前面看到过filebrowser这个浏览器插件,在 /var/lib/filebrowser里找到数据库
弄下来发现dbbrowser看不了,file查看得知是 Bolt db
换个思路用 filebrowser 命令看看能不能用能看到其引用的数据库是当前工作目录的,cp /var/lib/filebrowser/database.db到root下替换filebrowser后再启动
使用filebrowser查看用户可以看到K用户才是管理员用户,有上传全显
107.【填空题】接上题,分析哪个文件夹被分享过?(答案格式:资料)
工具
已知K为管理员账户,这里先通过命令修改密码
然后启动服务进行登录登陆后查看分享管理找到目录
108.【填空题】综合分析,含有客户资料的文件最有可能是谁上传的?(答案格式:根据实际情况进行填写)
bob
9月17日的客户总表是在回收站名为bob的文件夹里找到的
同时分析权限发现只有bob有写入权限,因此怀疑bob
五、小结
水一篇wp,流量部分建议看谢师傅的wp,很详细;对程序分析就纯是我软脚了(),复现感觉很累,基础差是这样的,之后补补看吧
我是sly_aaorn,学识浅薄,若有疏漏,还请斧正。
如果觉得有用,欢迎点赞、在看、转发三连喵~