2025年第五届全国刑事技术技能比武个人赛(上)

感觉计算机最后的2B题目有点恶心人了,加上服务器与物联网会在下半篇更新

电子物证-手机部分

1、(1 分)根据华为手机备份分析,手机型号是什么?[答案格式:HUAWEIMate30][手机取证]

HUAWEI P20 Pro

image

2、(1 分 ) 根 据 小 米 手 机 备 份分析,手机 IMEI 是多少? [ 答案格式:123456789012345/123456789012345][手机取证]

861144040007290/861144040007308

image

3、(1 分)根据华为手机备份分析,使用的”备份(localBackup)”APP 的版本号是多少?[答案格式:13.0.2.110][手机取证]

15.0.1.210

image

4、(1 分)根据华为手机备份分析(备份密码为:a1B2C3D4#),通讯录中“耗子”的手机号码是 多少?[答案格式:13112345678][手机取证]

19013265438

image

5、(1 分)根据华为手机备份分析,机主设置了在哪一天“给‘耗子’送‘鱼’”这个提醒? [答 案格式:2023-01-01][手机取证]

2025-11-19

image

6、(1 分)根据小米手机备份分析,机主的家庭地址所在省份是什么? [答案格式:海南省][手机取证]

黑龙江省

image

7、(1 分)根据小米手机备份分析,请给出WIFISSID为“work_5G”的密码是多少? [答案格 式:123456789][手机取证]

mywifi_12345

image

8、(1 分)根据小米手机备份分析,在其相册中有一张照片使用photoshop篡改过,请给出这张照片的名称是什么?[答案格式:IMG_20200101_010101.jpg][手机取证]

IMG_20240719_191634.jpg

image

感觉应该是这个,截屏时间是2024年,但是时间是2025年

9、(1 分)同上,请分析出此照片使用photoshop 的修改时间是?[答案格式:2025:01:01 01:01:01][手机取证]

2025-08-07 16:02:00

10、(1 分)根据小米手机备份分析,手机中登录过几个QQ号?[答案格式:5][手机取证]

3

image

11、(1 分)根据小米手机备份分析,在微信中,好友“wxid_8gmzat7zjnmf22(SunShine)”发给 嫌疑人一个文件名为“membership_commission.sql”数据库脚本文件,请给出这个文件的 SM3 后六位是多少?([答案格式:abcdef][手机取证]

d1f7f2

image

12、(1 分)同上,通过“membership_commission.sql”脚本文件,请给出会员级别为”gold”的 会员人数是多少?(字母小写) [答案格式:1][手机取证]

15

这个地方我选择写脚本将sql执行完成后转变成excel文件

import sqlite3
import pandas as pd
from pathlib import Path

sql_path = Path("13membership_commission.sql")
db_path = Path("temp.db")
excel_path = Path("13membership_commission.xlsx")

conn = sqlite3.connect(db_path)
with open(sql_path, "r", encoding="utf-8") as f:
    conn.executescript(f.read())

tables = pd.read_sql_query("SELECT name FROM sqlite_master WHERE type='table';", conn)
table_names = tables["name"].tolist()

with pd.ExcelWriter(excel_path, engine="openpyxl") as writer:
    for table in table_names:
        df = pd.read_sql_query(f"SELECT * FROM {table}", conn)
        df.to_excel(writer, sheet_name=table, index=False)

conn.close()

image

13、(1 分)同上,通过“membership_commission.sql”脚本文件,请给出会员级别为“silver”且消费金额高于同级别会员(silver)平均消费金额的会员数量是多少? [答案格式:3][手机取 证]

16

先筛选silver,然后计算平均值

image

image

14、(1 分)根据小米手机备份分析,在微信中,好友“wxid_8gmzat7zjnmf22(SunShine)”发给 嫌疑人一个文件“客户信息.xls”,但此文件有密码保护,已知密码为4位数字,请给出这个文件的密码是多少? [答案格式:0000][手机取证]

1973

passwarekit跑一下

image

image

聊天记录有,一开始没注意

image

15、(1 分)根据小米手机备份分析,请统计“客户信息.xls”中“电话”列不为空且“城市” 为“北京”的数据总共有多少条? [答案格式:123456][手机取证]

301

先移除密码,然后写个脚本统计

import pandas as pd

file_path = "客户信息.xls"

xls = pd.ExcelFile(file_path)

total_count = 0
sheet_counts = {}

for sheet_name in xls.sheet_names:
    df = pd.read_excel(file_path, sheet_name=sheet_name, dtype=str)

    if "电话" in df.columns and "城市" in df.columns:
        filtered = df[
            (df["电话"].astype(str).str.strip() != "") &
            (df["城市"].astype(str).str.strip() == "北京")
        ]
        count = len(filtered)
        sheet_counts[sheet_name] = count
        total_count += count
    else:
        sheet_counts[sheet_name] = "none"

print("各表统计结果:")
for name, count in sheet_counts.items():
    print(f"  {name}: {count}")

print(f"\n共有 {total_count} 条数据。")

image

16、(1 分)根据小米手机备份分析,app“umanager”使用Sqlite数据库存储数据,其中记录 用户信息的表“users”数据已被用户删除,请分析用户名为“uUser_eelum”的电话号码是 多少?[答案格式:13112345678][手机取证]

13601043742

image

17、(1 分)同上,在“umanager”app中有一个配置文件config.json.enc,但此文件使用AES对 称加密,请分析此加密密钥是什么?[答案格式:123456789abcdef][手机取证]

82572cc8b07bb7b5

导出base.apk后,jadx反编译

image

18、(1 分)同上,在配置文件config.json.enc 中记录了管理员admin的密码,请给出其密码是 什么?[答案格式:123456][手机取证]

a13579

image

19、(1 分)根据小米手机备份分析,“umanager”app中有一个transactions.json 文件记录了每个用户收入与支出,请统计用户ID为1512的总收入是多少?[答案格式:10000][手机取证]

194445

import json

with open("transactions.json", "r", encoding="utf-8") as f:
    data = json.load(f)

total_income = sum(
    item["amount"] for item in data
    if item["user_id"] == 1512 and item["type"] == "income"
)

print(total_income)

20、(1 分)根据小米手机备份分析,在app“v2rayNG”中类型为“VLESS”的代理有多少个?[答案格式:101][手机取证]

483

image

电子物证-计算机部分

C1-3

在电子数据检验中,因某个U盘检材存在不稳定的扇区,每次镜像都会因这些不稳定扇区导致生成的目标文件无法稳定。为了尽最大可能可靠地固定这个U盘的原始数据,我们采用了间断性计算哈希的方法。具体方法为:对U盘每1M的数据计算SHA256哈希,将这些哈希值以二进制的方式顺序保存为一个哈希列表文件,再计算这个哈希列表文件的哈希,同时记录不稳定扇区所在的1M 块号。 实际检验中,我们对这个U盘做了2次副本,分别为disk#1.dd和disk#2.dd,对disk#1.dd 按上述算法计算的哈希列表文件为sha256list#1.bin,disk#2.dd未生成哈希列表。 现提供C1-3目录下的disk#2.dd和sha256list#1.bin 文件,请分析后回答问题1~3。

1、(1 分) U 盘的第几M存在不稳定扇区(编号从0开始)___[答案格式:123][计算机取证]

96

乍一看没看懂,读了好几遍,意思应该是用两次镜像的哈希列表对比来找不稳定扇区。

import os

hash_size = 32

def read_hash_list(filename):
    with open(filename, "rb") as f:
        data = f.read()
    return [data[i*hash_size:(i+1)*hash_size] for i in range(len(data)//hash_size)]

hashes1 = read_hash_list("sha256list#1.bin")

hashes2 = []
block_size = 1024*1024  # 1M
with open("disk#2.dd", "rb") as f:
    while True:
        block = f.read(block_size)
        if not block:
            break
        import hashlib
        hashes2.append(hashlib.sha256(block).digest())

unstable_blocks = []
for idx, (h1, h2) in enumerate(zip(hashes1, hashes2)):
    if h1 != h2:
        unstable_blocks.append(idx)

print(unstable_blocks)

2、(1 分)这个不稳定扇区影响了哪个文件,请给出文件名:____[答案格式:abc123][计算机取证]

file147

定位到不稳定扇区块号是 96。

image

第 97 个 1MB 块,每块大小 1MB = 1,048,576 字节,按照扇区排序,每个文件大小是2MB,那应该会影响第49个文件,file147

3、(1 分)请按相同的思路,对disk#2.dd计算哈希,但哈希算法改为MD5,即以1M为块单位,先计算每块的MD5哈希,将这些哈希值二进制顺序写入到一个列表文件,再计算这个列表文件的MD5哈希。完成上述操作后回答,最终MD5哈希值的后6位是多少(字母大写) [答 案格式:A1B2C3][计算机取证]

877ebc

把上面的脚本改一改:

import hashlib

block_size = 1024 * 1024
hash_size = 16

input_file = "disk#2.dd"
output_file = "md5list_disk2.bin"

hashes = []

with open(input_file, "rb") as f_in:
    block_index = 0
    while True:
        block = f_in.read(block_size)
        if not block:
            break
        md5_hash = hashlib.md5(block).digest()
        hashes.append(md5_hash)
        block_index += 1
        if block_index % 100 == 0:
            print(f"已处理 {block_index} 块")

with open(output_file, "wb") as f_out:
    for h in hashes:
        f_out.write(h)

print(f"输出文件:{output_file}")

image

C4

data.csv 文件是一份来自某个涉案团伙的绩效提成表。表中包含三列数据:订单号、销售 ID、提成额。提成额的算法为:如果是周一至周五的订单,销售额的5%为提成;如果订单 是周六日的,提成额为销售额的10%。 请据此规则,通过分析计算后回答问题4。

4、(1 分) ID 为 S006 的销售人员2024年第3季度的销售额是多少__[答案格式:123][计算机取证]

提示:订单号中包含一个日期值,为订单产生时的时间记录,提成算法中涉及到的日期与此日期值相同。

3034690

借助datetime​函数可以判断当天是周几

import pandas as pd
from datetime import datetime

df = pd.read_csv("data.csv")

def extract_date(order_id):
    import re
    match = re.search(r'(\d{8})', str(order_id))
    if match:
        return datetime.strptime(match.group(1), "%Y%m%d")
    return None

df['日期'] = df['订单号'].apply(extract_date)
# print(df[['日期']].head(500))
def get_quarter(dt):
    if dt.month in [1,2,3]:
        return 1
    elif dt.month in [4,5,6]:
        return 2
    elif dt.month in [7,8,9]:
        return 3
    else:
        return 4

df['季度'] = df['日期'].apply(get_quarter)

def calc_sales(row):
    weekday = row['日期'].weekday()
    if weekday < 5:
        return row['提成额'] / 0.05
    else:
        return row['提成额'] / 0.10

df['销售额'] = df.apply(calc_sales, axis=1)

sales_id = "S006"
quarter = 3

result = df[(df['销售ID'] == sales_id) & (df['季度'] == quarter)]
total_sales = result['销售额'].sum()

print(f"{sales_id} 2024年第{quarter}季度销售额:", total_sales)

C5

加壳是保护程序不被反编译的一种重要手段。现在已知,esend.exe是一个被简单加过壳 的应用程序,其工作原理是在特定条件下搜集用户的敏感信息,并自动发送至某个电子邮箱。 又知这个邮箱的后缀是trek2025.ngo。

5、(1 分) 请分析一下这个电子邮箱的用户名是什么____[答案格式:123abc][计算机取证]

提示:脱壳后查找字符串。

7736

先查壳,是UPX,可以直接脱出来

image

image

按照提示strings

image

C6-8

在提供的虚拟机磁盘文件C6-8\disk.vmdk.7z中,有一个用于业绩统计的软件(路径为虚拟磁盘主分区根目录下的perf_stat_v6\perf_stat.exe),因部分文件破坏,系统无法启动,复制软件出来直接运行,提示“程序运行环境异常...”。 根据已知线索,程序运行时,需要先读取某个名称为.pem的密钥文件,再访问注册表 HKEY_CLASSES_ROOT(简称 HKCR)中的某个键值。 说明:HKCR是HKEY_CURRENT_USER\Software\Classes 与 HKEY_LOCAL_MACHINE\SOFTWARE\Classes 的合并视图,前者优先,后者在前者不存在时生效。

请通过技术手段尝试构建此应用程序所需环境,回答问题6~8。

提示:可利用微软官方的processmonitor工具,或你擅长的方法。

6、(1 分) 程序运行时需要依赖的一个.pem的文件名称叫什么____[答案格式:ABC123.pem][计算机取证]

cert.pem

取证后寻找perf_stat.exe​发现运行不了程序,缺少flutter_windows.dll​文件,导出后反编译dll,查找字符串

image

7.、(1 分)程序运行时需要访问的注册表键值中,用到了 HKCR下某个文件扩展名的子键值, 如:HKCR.bat\CombinedValidation,这是一个 REG_SZ 类型的字符串值,记录了一个以大写字符串形式表示的哈希值。请问:该哈希字符串值的最后6个字符是什么(字母大写) ___[答案格式:AB123C][计算机取证]

BC10B5

没有ProcessMonitor,看名字应该是个进程分析工具,火绒是自带的

image

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Notifications\41911A28A3BC10B5

8、(1 分)使用用户名admin,密码trek2025登陆系统,当对程序仿真运行起来后,看到的ID为1014的用户,其提成总计是多少____[答案格式:123][计算机取证]

272601

image

C9

C9 目录下的perf_stat.exe,是这个业绩查询系统的V1版本,其数据库data_v1.db中密码字段存储的内容为用户密码的单向哈希值,已知哈希算法是MD5。

请破解admin用户的密码明文,并使用密码明文登陆系统后,回答问题9。

9、(1 分) ID 为 1066 的用户,其提成总计是多少__[答案格式:123][计算机取证]

提示1:可以关注密码提示问题。 提示2:系统对数据库密码字段的修改有校验,不太容易修改密码。

245343

image

爆破一下20000001-20251231,密码是20191001​,但这些题,好像。。。不用登陆,直接取证数据库不就好了

image

C10

C10 目录下的perf_stat.exe,是这个业绩查询系统的V2版本,其数据库data_v2.db中记录的 用户密码算法未知,但好在我们成功获取到了id为1001用户的登录密码“trek2025”。 已知这个系统使用的用户密码算法同样适用于admin管理员,请利用这个信息,尝试登陆 这个系统,回答问题10。

10、(1 分)ID 为 1042 的用户,其提成总计是多少__[答案格式:123][计算机取证]

328513

image

C11

C11 目录下的perf_stat.exe,是这个业绩查询系统的V3版本,其数据库data_v3.db中记录的 用户密码算法未知。但我们在同级目录下发现了一个用于命令方式修改密码的ChsaPassword 程序。分析得知,这是一段用.net编译的程序,我们对其反编译后,生成了 "C11\V3.ChsaPassword\Program.cs"。 请利用上述信息,解除这个系统的口令限制,登陆系统后,回答问题11。

11、(1 分) ID 为 1082 的用户,其提成总计是多少__[答案格式:123][计算机取证]

分析C#编码,核心加密逻辑:

private static string ComputePasswordHash(string password, string salt)
{
    string shA512Hex = ComputeSHA512Hex(ComputeSHA512Hex($"{salt}{password}i love trek2025").ToUpperInvariant());
    return ComputeSHA256Hex(salt + shA512Hex);
}
  • 拼接:<salt><password>i love trek2025
  • SHA512 一次,转大写
  • SHA512 再一次
  • 再用 SHA256 对 <salt> + 前面结果​ 做哈希

密码修改逻辑:

string newSalt = GenerateSalt(12);
string newHash = ComputePasswordHash(newPassword, newSalt);
string finalStored = $"#3@{newSalt}@{newHash}";
UPDATE users SET password=@newPassword WHERE username=@user
  • 验证旧密码:

    • 用户输入旧密码
    • ComputePasswordHash​ 验证
  • 输入新密码并确认
  • 生成新 salt:GenerateSalt(12)​,随机 12 位字母+数字

后面算数题目就不看了

C14

14、(1 分) C14\data.pdf 文件无法打开,怀疑进行了简单的加密,请分析文件结构,尝试解密 文件,并回答文件第一页中记录的密码是什么____[答案格式:Aa12b3][计算机取证]

看了文件结构,没啥密码提示,怀疑是异或

a = 0x25504446
c = 0x82F7E3E1

mask = a ^ c
hex(mask)

image

image

发布者

AndyNoel

一杯未尽,离怀多少。