2025数证决赛个人

检材密码:!fR7$pX3&zT9@kL5*wV1#sG7%qD3^yA9(mB2)jN6~hY4+gC8dW2=eK5;fX7?vM3[oL9]tR4}uS1<yJ5>iP8_bH3:zD6"nQ2'pF4lA7|sC1\wE9/rT3=vY6

一、 计算机取证(让我们打一辈子取证好么~)

贴脸开大(从没觉得做取证开心过doge)
assets/2025数证决赛个人/file-20251209210824511.png
assets/2025数证决赛个人/file-20251209210103370.pngassets/2025数证决赛个人/file-20251209213216410.png
这回试了试前两天看到的新功能,果然比较慢,目测没两个小时跑不完,不过好在一来就输出了答案
仿真后如果需要关闭平板模式的,使用快捷键:win+A

  1. 请分析计算机检材,用户曾远程连接过IP为192.168.114.51的主机,其远程登陆密码为多少?
    uika
    assets/2025数证决赛个人/file-20251210181150836.png

  2. 请分析计算机检材,发现嫌疑人有一定的密码构造习惯,依据其密码使用习惯找出嫌疑人购买拷贝的公民信息表格的密码。
    assets/2025数证决赛个人/file-20251210181407515.png
    经典浏览器打开发现构成很像
    assets/2025数证决赛个人/file-20251210181534178.png
    然后看到了这个表格
    爆破的设置:
    Doloris@
    Doloris@????
    assets/2025数证决赛个人/file-20251210182807290.png
    密码就是Doloris@0721
    直接打不开,需要修复:assets/2025数证决赛个人/file-20251210183646777.png

  3. 请分析计算机检材,其中有一模拟器备份文件,请找出用户常用笔记app锁定密码是多少?
    assets/2025数证决赛个人/file-20251210200108047.png
    赛博厨子打开
    Prase QR Code,点normalise image
    assets/2025数证决赛个人/file-20251210201530182.png
    KFCVme50
    但不知道是不是
    还有一个残缺的,ps修复以后:
    assets/2025数证决赛个人/file-20251215203533155.png
    解压密码:KFCVme50
    保险箱密码:我的模拟器被勒索的时间【格式:20251001】
    assets/2025数证决赛个人/file-20251215205643173.png
    这个是在数据库里看到的,我没什么思路,不知道为啥在这(藏在模拟器记事本备份)
    20250228

  4. 接上题,app中记录了保险箱密码,该密码是?
    MYGPS

mt管理器导入数据库实现apk仿真:
外部:/storage/emulated/0/Pictures/包名/
内部:/data/data/
把外部目录下的包文件直接放到内部这个data目录下
然后重启软件就大概率可以

assets/2025数证决赛个人/file-20251210214230616.png
上一题的数据库里可看
下载里有个pdf,修复文件头出来这个
assets/2025数证决赛个人/file-20251210181615910.png
assets/2025数证决赛个人/file-20251216083222245.png

  1. 请分析模拟器备份,内部转账银行卡号是多少?

  2. 分析计算机检材,嫌疑人通过换脸软件一共生成了几张图片?
    5张
    在facefusion的output里面有5张

  3. 接上题,嫌疑人使用换脸软件过程中,选择次数最多的源图片名称?
    3d41fc4422dbc33a31ab182179b2117e.jpg
    五张中有两张是一样图源,打开photo文件夹找到这张图

  4. 接上题,嫌疑人使用换脸软件过程中,一共尝试了几种换脸模型?
    assets/2025数证决赛个人/file-20251216084432728.png
    三种model
    在job的complete的文件夹里有日志

  5. 请分析计算机检材,嫌疑人有一个密码管理软件,记录了备用机密码,请找到该密码。
    锁定是keepass,然后快速访问里面有个kp.txt
    16161616
    打开软件后复制下来密码
    22E4828017

  6. 请分析计算机检材,找出文件MD5哈希值为d58c3e31ec6eaecb9026af9821dad645的文件,写出其文件名。
    index.4682354987edf.js
    法一:efdd
    assets/2025数证决赛个人/file-20251216122950811.png
    然后我们就打开了这个bitlocker盘
    assets/2025数证决赛个人/file-20251216140537860.png
    assets/2025数证决赛个人/file-20251216140644559.png
    找到了
    挂不起的时候:assets/2025数证决赛个人/file-20251216155139977.png
    这里不要初始化不然就废了
    后来发现是硬盘拔插的问题,重挂一下检材就好
    法二:lovelymem
    assets/2025数证决赛个人/file-20251216162839632.png
    找到了KVEK形式的密码
    assets/2025数证决赛个人/file-20251216164010075.png
    bdemount可以处理,懒得搞就没继续了

  7. 请分析计算机检材,找出虚拟硬盘内隐藏的VC容器,并使用公民信息表格中身份证号为明显伪造者的地址解密,回答该容器中包含多少个文件。
    4
    使用“刚买到的一会处理.xlsx”中明显位数不正常的身份证号码信息解密看到内部文件。容器密码:山东省济南市历下区经十路200号
    assets/2025数证决赛个人/file-20251216170848873.png

  8. 对计算机检材进行分析,其中有个NAS存储,对NAS磁盘分析,找出姓名为"谢妍尚"的手机号。
    随便一翻就翻得到:
    assets/2025数证决赛个人/file-20251215201540264.png
    然后ufs秒组
    assets/2025数证决赛个人/file-20251215201527693.png
    就这两个文件,一开始没找到,哪还找个vc,结果这个vc密钥文件根本没有用
    assets/2025数证决赛个人/file-20251216172701116.png
    在sheet3里,堂完了我。

移动终端取证

  1. 分析手机检材,检材的MEID号是多少?
    assets/2025数证决赛个人/file-20251219192718626.png
    99001844373347
  2. 手机备忘录软件里有一串压缩包解密密码,请问密码是多少?
    备忘录统一搜note
    assets/2025数证决赛个人/file-20251219195339055.png
    压缩包解密密码:xinglo-chat
  3. 手机曾安装过一个小众聊天软件,分析其APP的包名为?
    小众聊天搜搜chat
    assets/2025数证决赛个人/file-20251219195507432.png
    com.xinglo.chat
  4. 小众聊天软件官网Email地址疑似被加密,请找出解密密钥(Key)为?
    前面的inote数据库能看到这条消息:
美好的一天从现在开始!



unit AESDecrypt;

interface

uses
  Windows, SysUtils, Classes, IdCoder, IdCoder3to4, IdCrypt, IdCryptAES;

function DecryptAES(const Ciphertext, Key, IV: string): string;

implementation

function DecryptAES(const Ciphertext, Key, IV: string): string;
var
  AES: TIdAES;
  Decoder: TIdBase64Decoder;
  Input, Output, KeyBytes, IVBytes: TBytes;
  InputStream, OutputStream: TStringStream;
begin
  Decoder := TIdBase64Decoder.Create(nil);
  InputStream := TStringStream.Create(Ciphertext);
  OutputStream := TStringStream.Create('');
  try
    Decoder.InputStream := InputStream;
    Decoder.OutputStream := OutputStream;
    Decoder.Decode;
    Input := OutputStream.Bytes;
  finally
    Decoder.Free;
    InputStream.Free;
    OutputStream.Free;
  end;

  KeyBytes := TEncoding.UTF8.GetBytes(Key);
  IVBytes := TEncoding.UTF8.GetBytes(IV);

  AES := TIdAES.Create(nil);
  try
    AES.BlockSize := 128;
    AES.KeySize := 128;
    AES.Mode := cmCBC;
    AES.Padding := padPKCS7;
    AES.Key := KeyBytes;
    AES.IV := IVBytes;

    SetLength(Output, Length(Input));
    AES.DecryptBuffer(Output[0], Input[0], Length(Input));

    Result := TEncoding.UTF8.GetString(Output);
  finally
    AES.Free;
  end;
end;

procedure TestDecrypt;
var
  Ciphertext, Key, IV, Plaintext: string;
begin
  Ciphertext := '';  '等待传参
  Key := 'XingLuoChat2024!';
  IV := '1234567890abcdef';
  Plaintext := DecryptAES(Ciphertext, Key, IV);
  ShowMessage(Plaintext);
end;

end.

XingLuoChat2024!
5. 接上题,请分析小众聊天软件官网的Email地址为?
用ai写好解密脚本:

import base64

from Crypto.Cipher import AES

from Crypto.Util.Padding import unpad

  

def decrypt_aes(ciphertext_b64, key_str, iv_str):

    try:

        # 1. 准备 Key 和 IV

        key = key_str.encode('utf-8')

        iv = iv_str.encode('utf-8')

        # 2. Base64 解码密文

        ciphertext = base64.b64decode(ciphertext_b64)

        # 3. 初始化 AES Cipher (CBC模式)

        cipher = AES.new(key, AES.MODE_CBC, iv)

        # 4. 解密并去除填充 (PKCS7)

        plaintext_padded = cipher.decrypt(ciphertext)

        plaintext = unpad(plaintext_padded, AES.block_size)

        return plaintext.decode('utf-8')

    except Exception as e:

        return f"解密失败: {str(e)}"

  

if __name__ == "__main__":

    # 请在下方填入您要解密的 Base64 字符串

    Ciphertext = ""  # <--- 在这里填入密文

    Key = "XingLuoChat2024!"

    IV = "1234567890abcdef"

    if not Ciphertext:

        print("请先在代码中填入 Ciphertext (密文)")

    else:

        result = decrypt_aes(Ciphertext, Key, IV)

        print(f"解密结果: {result}")

assets/2025数证决赛个人/file-20251219201123756.png
缓存里看到一个前端的缓存,怀疑可以搞到官网网址
assets/2025数证决赛个人/file-20251219201738029.png
看到邮箱旁边有隐藏内容:
M2ZiMDExMWQ2ZWUwYzI5OWJhMzFjZmE3OTVhN2Q4YjAzNzY3N2ExOWE3NGI2MWI5N2Y0OWU4M2MwMWJiZTk3Ng==
,拿去解密一下
assets/2025数证决赛个人/file-20251219202901550.png
support@xingluochat.com

  1. 在本案件中,张明向王芳已支付的总金额为多少元?
    在chat数据库里筛选出聊天记录,然后喂给ai
SELECT group_concat(content, char(10)) 
FROM chat_logs 
ORDER BY send_time ASC;

assets/2025数证决赛个人/file-20251219204123153.png
88万

  1. 李伟在非工作时间(18:00-次日8:00)向王芳发送的加密文件数量占其向王芳发送的所有加密文件数量的百分比为多少?
    ai代码筛选
    assets/2025数证决赛个人/file-20251219212756719.png

  2. 分析手机检材,检材中的记账app是通过应用市场APP安装的,该应用市场的包名是?
    assets/2025数证决赛个人/file-20251219212958615.png
    com.xiaomi.market
    搞错了,细看在wandoujia这个目录下:
    assets/2025数证决赛个人/file-20251220085659218.png
    所以是豌豆荚
     com.wandoujia.phoenix2

  3. 分析手机检材,检材中的记账app安装包MD5为?
    assets/2025数证决赛个人/file-20251219213852505.png
    assets/2025数证决赛个人/file-20251219214029203.png
    003e9c929adf12a56770dc5d9c5109a6

  4. 分析手机检材,嫌疑人记账APP中的支出项一共有几个分类?
    7
    assets/2025数证决赛个人/file-20251220084608170.png
    不对,是支出项,后面方针起来了看到是4
    assets/2025数证决赛个人/file-20251220114032027.png

  5. 分析手机检材,最终张总给了嫌疑人多少钱?
    先apk仿真:
    assets/2025数证决赛个人/file-20251220095213747.png
    共享文件中把数据文件夹拖进去
    MT管理器拷贝到内部/data/data目录下
    assets/2025数证决赛个人/file-20251220095336752.png
    修改用户组都改成
    10064 - u0_a64
    应用到子文件两个全部勾选
    重启apk
    assets/2025数证决赛个人/file-20251220113446845.png
    frida启动(一开始不行,换了下frida版本就可以了,兼容问题,在雷电的设置里面:
    assets/2025数证决赛个人/file-20251220113455990.png
    密码是0410
    assets/2025数证决赛个人/file-20251220113526170.png
    进去备卡出来了,一次性数据库这一块
    断网大法,重装数据库文件夹,并开启飞行模式
    assets/2025数证决赛个人/file-20251220114220826.png
    看到定金加尾款150000

  6. 分析手机检材,检材中的记账app的隐私密码是什么?
    0410
    前面frida跑出来了

服务器取证

  1. AI服务的对外端口是多少?
    找一下看到ai的服务在
    assets/2025数证决赛个人/file-20251217190900983.png
    然后看到有一个nohup.out文件,这是输出日志
    assets/2025数证决赛个人/file-20251217190852116.png
    看到 Open Langflow → http://localhost:7860
    端口号为7860
  2. 当前AI服务共有多少普通用户?
    思路是看数据库:
    打开.env文件,这个文件通常用于存储环境变量配置,
    assets/2025数证决赛个人/file-20251217191232525.png
    在.env里搜索database
    assets/2025数证决赛个人/file-20251217191619392.png
    问了问ai
    root@yxtserver:~# find / -name "langflow.db" 2>/dev/null
    /home/langflow/lib/python3.10/site-packages/langflow/langflow.db
    /root/.cache/langflow/langflow.db

搜到数据库以后进去看
assets/2025数证决赛个人/file-20251217195039255.png

assets/2025数证决赛个人/file-20251217195922192.png
注意第一个是超级用户
8个

  1. 已知管理员密码是xxxx@2025,x为小写字母,AI服务的管理员明文密码是多少?
    sszb@2025
    写个字典用hashcat爆一下:
    assets/2025数证决赛个人/file-20251217203637645.png
    密码:sszb@2025
    启动ai服务:
    /home/langflow/bin/langflow run --env-file /home/langflow/.env
    assets/2025数证决赛个人/file-20251217204443605.png
    assets/2025数证决赛个人/file-20251217204611500.png

  2. AI服务的对话历史中某个用户上传了一个文件,该文件sha256后八位是多少?

31fa8c0f-e569-4399-b8ec-5d866bbd095c/2025-11-04_11-20-38_play.png
message表里有这个文件
assets/2025数证决赛个人/file-20251217202027712.png
assets/2025数证决赛个人/file-20251217202306084.png
assets/2025数证决赛个人/file-20251217202333251.png
7852b855
5. 已知黑客攻击了AI服务器获取了权限,该黑客利用了哪个接口uri进行攻击的?
在找到数据库的目录下能看到一个log文件,分析一下:
assets/2025数证决赛个人/file-20251217203208531.png
/api/v1/files/upload/a9a80eb5-e5ef-4310-9468-ee96f570b4ac

  1. 已知黑客攻击了AI服务器获取了权限,请问黑客反弹shell的连接的端口是多少?
    7788
    ai搓出来的分析脚本
    assets/2025数证决赛个人/file-20251217212552285.png

  2. 黑客通过ssh登录服务器所用的ip是多少?
    查看SSH登录记录
    assets/2025数证决赛个人/file-20251217212744368.png
    assets/2025数证决赛个人/file-20251217212827533.png
    也可以a脚本撕开
    172.23.194.1

  3. 已知黑客入侵服务器后植入了一个隐藏文件,该程序的全路径(包括扩展名)为?

程序功能分析

  1. 分析程序"MicroSoft-Edge.zip",实现"对桌面文件遍历并加密"逻辑的动态链接库文件为?
    看到壳里面是一个.net程序
    assets/2025数证决赛个人/file-20260208003721095.png

assets/2025数证决赛个人/file-20260208002751250.png
结合ida例分析也可以确定是.net

静态分析+白名单过滤缩小范围:

import re  
  
path = r'C:\Users\27516\Desktop\MicroSoft-Edge.exe'  
  
try:  
    with open(path, 'rb') as f:  
        data = f.read()  
except FileNotFoundError:  
    print("找不到文件,请检查路径")  
    exit()  
  
# ---------------------------  
# 优化点 1: 双模搜索 (ASCII + UTF-16)# ---------------------------  
# ASCII 模式  
pat_ascii = re.compile(br'[A-Za-z0-9_.-]{3,80}\.dll', re.IGNORECASE)  
# UTF-16LE 模式 (匹配可见字符后跟一个\x00)  
pat_wide = re.compile(br'(?:[A-Za-z0-9_.-]\x00){3,80}\.dll\x00', re.IGNORECASE)  
  
items = []  
  
# 提取 ASCIIfor m in pat_ascii.finditer(data):  
    try:  
        items.append(m.group().decode('ascii'))  
    except:  
        pass  
  
# 提取 UTF-16 (需要把 \x00 去掉才能变成正常字符串)  
for m in pat_wide.finditer(data):  
    try:  
        items.append(m.group().decode('utf-16le'))  
    except:  
        pass  
  
# 去重  
uniq = sorted(set(items), key=str.lower)  
  
# ---------------------------  
# 优化点 2: 更狠的黑名单 (根据之前运行结果补充)  
# ---------------------------  
# 这些是之前 99 个结果里出现的干扰项,加进来屏蔽掉  
ignore_prefixes = (  
    # 系统底层  
    'api-ms-', 'ext-ms-', 'msvcp', 'vcruntime', 'ucrt', 'kernel', 'user32',  
    'gdi', 'advapi', 'ole', 'shell', 'ntdll', 'ws2_', 'crypt', 'bcrypt', 'secur',  
    'shlwapi', 'comdlg', 'wininet', 'winhttp', 'version', 'mscoree', 'mscorlib',  
    'imm32', 'normaliz', 'dwmapi', 'uxtheme', 'urlmon', 'wldp', 'powrp',  
    # .NET / WPF 框架垃圾  
    'system.', 'microsoft.', 'windows.', 'netstandard', 'presentation',  
    'reachframework', 'milcore', 'uiautomation', 'accessibility', 'clrcompression',  
    'directwrite', 'd3d', 'windowsbase', 'windowsforms', 'visualbasic'  
)  
ignore_suffixes = ('.resources.dll', '.ni.dll')  
  
sus = []  
for s in uniq:  
    low = s.lower()  
  
    # 只要命中任意一个忽略前缀,就跳过  
    if low.startswith(ignore_prefixes): continue  
    # 只要命中任意一个忽略后缀,就跳过  
    if low.endswith(ignore_suffixes): continue  
  
    sus.append(s)  
  
print(f'Total valid dll strings found: {len(uniq)}')  
print('=' * 50)  
print('Suspicious candidates (Most likely to least likely):')  
print('=' * 50)  
  
  
# ---------------------------  
# 优化点 3: 简单的启发式排序  
# ---------------------------  
# 名字越短越可疑,名字里带 encrypt/hack 的越可疑  
def score(name):  
    s = 0  
    if len(name) < 15: s += 10  # 名字短+10分  
    if 'encrypt' in name.lower(): s += 100  # 命中关键词+100分  
    return s  
  
  
sus.sort(key=score, reverse=True)  
  
for i, s in enumerate(sus[:30]):  
    print(f"[{i + 1}] {s}")

assets/2025数证决赛个人/file-20260207120915892.png
1、2可以得知的确有encrypt.dll这个资源
脚本dump出来
assets/2025数证决赛个人/file-20260208185911312.png
看到有一个encrypt的资源包里
通过主程序代码分析:
assets/2025数证决赛个人/file-20260208190111368.png
assets/2025数证决赛个人/file-20260208190125588.png
看到调用了这个库
assets/2025数证决赛个人/file-20260208190145225.png
基本确定了
assets/2025数证决赛个人/file-20260208194236738.png
还能看到执行功能的函数应该是这个Encryptfolder
再把MicroSoft_Edge.Resources.encrypt.dll给dump出来验证下
assets/2025数证决赛个人/file-20260208190516589.png
这里直接显示了 PEDOS头说明这个内层是c++写的
查看exports
看到encryptfolder
assets/2025数证决赛个人/file-20260208192812506.png
进一步分析看到很明显的加密功能痕迹assets/2025数证决赛个人/file-20260208194509154.png
encrypt.dll
2. 分析程序"MicroSoft-Edge.zip",程序从DLL中获取函数指针后,使用哪个API将其转换为委托并执行?
Marshal.GetDelegateForFunctionPointer
assets/2025数证决赛个人/file-20260209122018580.png
3. 分析程序"MicroSoft-Edge.zip",接上题,该动态链接库文件用于加密文件的加密算法为?
有明文提示是AES
assets/2025数证决赛个人/file-20260209122104948.png

  1. 分析程序"MicroSoft-Edge.zip",接上题,该加密算法的初始密钥(十六进制)?

  2. 分析程序"MicroSoft-Edge.zip",接上题,该加密算法的初始向量(十六进制)?

  3. 分析程序"MicroSoft-Edge.zip",对附件try.txt.enc进行解密,解密后的内容为?

网络流量分析

  1. 被攻击ip开放了多少个端口?
    tcp.flags.syn == 1 && tcp.flags.ack == 1
    (把所有“握手成功”的回包筛选出来)
    assets/2025数证决赛个人/file-20260101205701560.png
    可以看到攻击者是10.0.0.68,被攻击者是172.16.233.2
    assets/2025数证决赛个人/file-20260101210950740.png
    tcp筛选后从这里看到有七个port
    assets/2025数证决赛个人/file-20260101211107366.png

  2. 攻击者攻击的站点是什么内容管理系统?
    assets/2025数证决赛个人/file-20260101213122047.png
    查看http的响应html代码assets/2025数证决赛个人/file-20260101213151379.png
    seacms

  3. 攻击者通过暴力破解获取到的用户账号的密码是多少?
    cslab
    net-a梭出来的前面是账号后面是密码
    assets/2025数证决赛个人/file-20260101220505973.png

  4. 攻击者上传的恶意文件MD5值为多少?
    提取出来的exe
    assets/2025数证决赛个人/file-20260101215145461.png
    4a5d7db9cdfbbe9ef6be58add2dd7d43

  5. 攻击者使用蚁剑执行的最后一条命令是什么?
    cd /d "C:/WWW/data/admin"&zhengxiang.exe&echo aae855ae69&cd&echo c39d656dc7b
    assets/2025数证决赛个人/file-20260101215242318.png

  6. 通过流量分析可知,攻击者最终采用何种标准远控载荷类型,以维持正向连接Shell?
    流量中被攻击的主机系统信息显示为 64-bit Windows 10
    传入的是pe文件
    所以是windows/x64

攻击者主动去连接受害者的端口所以是bind_tcp
AntSword 执行命令后建立的那个 TCP 连接,其内容是二进制流(加密/混淆的 TLV 数据),而非明文的 CMD 提示符,所以是meterpreter/bind_tcp

windows/x64/meterpreter/bind_tcp

数据分析

  1. 分析数据库检材,直接推荐了最多下线用户共推荐了多少位下线。
    assets/2025数证决赛个人/file-20260102091833506.png
    思路来自zzpu213,软件好用的
    可看到除了没有推荐人以外,第一是17个
  2. 分析数据库检材,用户等级为"合伙人"的用户USDT的总投资金额为?

assets/2025数证决赛个人/file-20260102092907602.png

assets/2025数证决赛个人/file-20260102092923208.png
按user_id连接表后查询

assets/2025数证决赛个人/file-20260102092851343.png
3. 分析数据库检材,平台在2022年度的平均每季度新增用户数为多少?
623

# 导入所需依赖
import pandas as pd

# 从dfs中提取所需的数据表
# dfs[0]: 名称:`raw_user_data`, 描述:用户数据表,包含用户信息和注册时间

# 获取原始用户数据
user_df = dfs[0]

# 将register_time转换为datetime类型
user_df['register_time'] = pd.to_datetime(user_df['register_time'])

# 筛选2022年度的注册用户
users_2022 = user_df[(user_df['register_time'] >= '2022-01-01') & 
                     (user_df['register_time'] <= '2022-12-31')]

# 按季度分组统计新增用户数
quarterly_new_users = users_2022['register_time'].dt.to_period('Q').value_counts().sort_index()

# 计算平均每季度新增用户数
avg_quarterly_new_users = quarterly_new_users.mean()

# 创建结果字典
result = {
    "type": "string",
    "value": f"平台在2022年度的平均每季度新增用户数为: {avg_quarterly_new_users:.1f}"
}
  1. 分析数据库检材,在用户推荐关系网络中,层级最深的用户链条包含多少个用户。
    7
# 导入所需依赖
import pandas as pd
import networkx as nx

# 从dfs中提取所需的数据表
# dfs[0]: 名称:`raw_user_data`, 描述:用户数据表,包含用户信息和推荐关系

# 获取原始用户数据
user_df = dfs[0]

# 创建有向图来存储用户推荐关系
G = nx.DiGraph()

# 添加节点和边
for _, row in user_df.iterrows():
    if pd.notna(row['recommender_id']) and row['recommender_id'] in user_df['user_id'].values:
        G.add_edge(row['recommender_id'], row['user_id'])

# 找出所有无入度的节点(可能是根节点)
roots = [node for node in G.nodes() if G.in_degree(node) == 0]

# 计算从每个根节点出发的最长路径
max_depth = 0
for root in roots:
    lengths = nx.shortest_path_length(G, root)
    if lengths:  # 确保有子节点
        current_max = max(lengths.values())
        if current_max > max_depth:
            max_depth = current_max

# 最长链条的用户数量 = 路径长度 + 1 (因为路径长度计算的是边的数量)
longest_chain_users = max_depth + 1 if max_depth > 0 else 1

# 创建结果字典
result = {
    "type": "string",
    "value": f"用户层级中最深的链条包含 {longest_chain_users} 个用户"
}

也可以用软件:
把user表导入组织架构
assets/2025数证决赛个人/file-20260102103821046.png
null除去是7层
5. 分析数据库检材,该平台用户在同一时间内同时进行2笔以上大额交易(单笔数值>5000)的异常用户有多少人?

SELECT COUNT(DISTINCT user_id) AS 异常用户总数
FROM (
    SELECT user_id, DATE(trans_time) as trans_date
    FROM financial_transactions
    WHERE amount > 5000 and status == '成功'
    GROUP BY user_id, trans_date
    HAVING COUNT(*) >= 2
);

8
assets/2025数证决赛个人/file-20260102105514821.png
6. 分析数据库检材,2023年10月11日之前的90天内无任何交易且此前为活跃用户(注册后90天内有过交易)的潜在失效用户有多少?

SELECT COUNT(*) AS 潜在失效用户数
FROM (
    -- 第一步:筛选出“注册后90天内有过【成功】交易”的活跃老用户
    SELECT DISTINCT t.user_id
    FROM financial_transactions t
    JOIN raw_user_data u ON t.user_id = u.user_id
    WHERE t.trans_time >= u.register_time
      AND t.trans_time <= DATETIME(u.register_time, '+90 days')
      AND t.status = '成功'  -- 新增条件
) AS valid_users
WHERE user_id NOT IN (
    -- 第二步:排除掉在“近期90天窗口期”内有【成功】交易的用户
    SELECT DISTINCT user_id
    FROM financial_transactions
    WHERE trans_time >= '2023-07-13 00:00:00' 
      AND trans_time < '2023-10-11 00:00:00'
      AND status = '成功'  -- 新增条件
);

662
assets/2025数证决赛个人/file-20260102105812235.png

假期里一直在治病耽搁了,逆向好难...

posted @ 2026-03-08 17:57  Joyooosama  阅读(3)  评论(0)    收藏  举报
https://music.163.com/song?id=386828&uct2=U2FsdGVkX19eM5HPEPY7pt5CXA/ptd8B1ozZTWITVag=