2026精武杯wp (无程序分析及流量部分)

作者:流云技术札 发布:2026-11-13 08:00 收录:2026-11-13 09:07 2 次阅读 约 11376 字
摘要:又水一篇wp()
推荐理由:本文涵盖「反诈」、「电信网络诈骗」、「电子数据取证」等多个主题,重点关注 反诈。

近期,某市反诈部门接到多名群众报案,均遭遇“投资理财” 类电信网络诈骗,指向的犯罪团伙涉案资金巨大、作案链条隐蔽。 办案单位迅速成立专案组开展电子数据取证工作。经初查,该犯 罪团伙…

一、手机取证

01

(一)提示:分析办案人员提取的“手机检材-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类开头定义了两个常量

JAVA


private static byte one = 116;

private static byte[] ones = {-1, 0, 3, 5, 1, -5};

keyDb() 的逻辑是:把 116 依次加到 ones 的每个字节上,再拼上 .db

ones 字节
计算
结果
0xff
116 + 255 = 371 → 0x73
s
0x00
116 + 0 = 0x74
t
0x03
116 + 3 = 0x77
w
0x05
116 + 5 = 0x79
y
0x01
116 + 1 = 0x75
u
0xfb
116 + 251 = 367 → 0x6f
o

得到库名 stwyuo.db


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


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


数据库里能看到就拍了一张图片

ai的妙妙APK逆向思路

📌 提示 以下是ai思路

查看 AndroidManifest.xml 确认所有Activity


CODE


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


CODE


CCActivity

DataHandler

Keys

FileUtils

POINT 1Calculator:伪装成计算器的主界面
POINT 2CCActivity:密拍界面
POINT 3DataHandler:拍照后的数据处理
POINT 4Keys:密钥/数据库名生成

接下来追踪 CCActivity

先看 onCreate()JADX 反编译出来的逻辑大致是:

JAVA


setContentView(...);

 

mCameraView = findViewById(...);   // CameraView

mBtn = findViewById(...);          // 拍照按钮

 

checkPermission();                 // 申请相机、录音、定位等权限

initCamera();                      // 初始化 CameraView

initLocation();                    // 初始化定位

startSingleUpdate();               // 请求一次定位

mDataHandler = new DataHandler(this);

再看 initCamera():

JAVA


mCameraView.addCameraListener(new CCActivity$2(this));

mBtn.setOnClickListener(v -> mCameraView.takePictureSnapshot());

得到CCActivity 是一个用 CameraView 拍照的界面,点按钮就 takePictureSnapshot()

追踪拍照回调。

initCamera() 里的两句是连着的:

JAVA


mCameraView.addCameraListener(new CCActivity$2(this));

mBtn.setOnClickListener(v -> mCameraView.takePictureSnapshot());

第一句把 CCActivity$2 注册成 CameraView 的监听器;第二句是按钮点击后触发一次抓拍。CCActivity$2 实现了 com.otaliastudios.cameraview.CameraListener,所以 takePictureSnapshot() 完成后,CameraView 会回调它的 onPictureTaken(PictureResult):

JAVA


// 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():

JAVA


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:

JAVA


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);                        // 上传远端

到这里就能把“照片 → 数据库”完整串起来:

POINT 1createTable 建的是 picture(time, phone, gps_key, gps, data BLOB);
POINT 2insertData 每拍一张就插入一行;
POINT 3data 字段是 JPEG 原始字节;
POINT 4keyDb() 决定库名 stwyuo.db,keyBase() 决定 SQLCipher 口令 c258ba(这两个函数前面已经算过)。

所以第八题实际数的不是“文件数”,而是 picture 表的行数。当前 .bak 里只有一个 f/1789880624000/stwyuo.db,解密后 SELECT COUNT(*) FROM picture 返回 1。

补一句“这个相机是怎么打开的”,排查时很自然会问:

JAVA


// Calculator.onEquals()

String input = mFormulaEditText.getText().toString();

if (CCActivity.testKey(this, input)) {

    onClear();

    return;

}

JAVA


// CCActivity.testKey()

if ("1+2.0".equals(input)) {

    startActivity(new Intent(context, CCActivity.class));

    return true;

}

return false;

也就是说,在伪装计算器里输入 1+2.0 再按  = ,不会真的去算 3,而是启动 CCActivity。这也解释了为什么桌面上看就是一个普通计算器。

完整链路:

TEXT


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,只写到秒,没有写毫秒因此爆搜时应删去最后的 零位 进行搜索,避免精度问题导致搜索错误



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

POINT 11782303693576 = 2026-06-24 20:21:33.576
POINT 21782303693000 = 2026-06-24 20:21:33.000

最终答案即 百色



【填空题】请找到机主在2026-09-20 13:41:20打开的表格文件,该文件的SM3哈希值后四位是什么?(答案格式:英文大写,如12AB)

37EA

这里询问的是打开时间,不是创建、修改时间,因此无法排时间线搜索因此从表格文件入手,寻找能打开创建表格文件的应用


能在wps里发现有一个xlsx文件,其修改时间和题目要求不符,去具体数据库里看看是否记录的打开时间

emmm,没找到,去 apps/<包名>/r/ 找了下缓存也没东西

看myq的wp,发现在f/.rebootIntent下存在有崩溃的恢复快照,记录了当时打开文档的完整上下文


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


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



这样能直接定位到文件

确定文件后就是找到文件了,在备份里面

XML


<?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算哈希还是有点慢了,用命令出的

POWERSHELL


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 表中能看到都是抖音的下载链接


02

(二)提示:分析办案人员提取的“手机检材-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 的上面,所以电话窗口虽然在,但它不是当前可见、可交互的应用

因此真实过程为

102:15:07 在锁屏上打开相机(相机允许在锁屏层运行,AppRole=6, Level=1050)。
202:15:09 退出相机,锁屏 UI 回到最上层(AppRole=3, Level=1050)。
3相机退出后,主屏(Level 0)和电话窗口(Level 1)在锁屏背后被恢复/渲染,所以你会看到 02:15:09 的 home-screen 和 02:15:12 的 mobilephone。
402:15:16.516 用户完成解锁,Locked=1 → 0。

二、计算机取证


【填空题】该计算机的CPU型号是什么?(答案格式:i3-100A)

i7-12700H



【填空题】该计算机曾接入了一个移动硬盘,分配驱动器号为D盘,请问盘符名称为?(答案格式:以实际为准,如Tuo_Jie)

Samsung_T5

USB能看到接入的盘符名称


在win10通知里确认接入的卷标



【填空题】该计算机的开机密码是多少?(答案格式:以实际为准,如123456)

260919

开机密码也就是用户凭证,仿真时候得到用户为 pc先导出NTLM哈希

CODE


C:\Windows\System32\config\SAM

C:\Windows\System32\config\SYSTEM

CODE


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 这种)的通用存储设计来讲,这两个文件其实是同一场会话的两种表示:一个是“摘要缓存”,一个是“完整事件日志”

POINT 1storages/session_projcache/sessions/session-<id>.json:投影缓存(projection cache),是为了“快速列出会话、显示标题和时间”而生成的摘要快照,内容小、可重建。
POINT 2sessions/<项目目录>/session-<id>/session.v3.jsonl.zst:权威的完整会话日志,逐条记录整场对话的每一个事件,压缩存储,用来恢复/续聊/审计。

因此导出该文件后解压读取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中那句就是密码,尝试后发现需要用拼音输入

CODE


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

BASH


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 微内核,一切皆插件因此搜索常见用户配置目录和插件库

CODE


~/.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家目录找到脚本分析

BASH


#!/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列第三方包找包名

BASH


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


四、物联网取证

03

(一)提示:分析办案人员提取的“无人机”文件夹,内含“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


04

(二)提示:分析办案人员提取的“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连上去

BASH


# 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,很详细;对程序分析就纯是我软脚了(),复现感觉很累,基础差是这样的,之后补补看吧

ssly_aaorn

我是sly_aaorn,学识浅薄,若有疏漏,还请斧正。

如果觉得有用,欢迎点赞、在看、转发三连喵~ 

转载声明:本文转载自原发布平台 (作者:流云技术札), 原文标题《2026精武杯wp (无程序分析及流量部分)》, 查看原文。 版权归原作者及原发布平台所有,本站仅作收录与展示,未对正文内容作实质性修改; 若涉及侵权请联系本站处理。