容器密码:早起王的爱恋日记❤
计算机部分
1、分析起早王的计算机检材,起早王的计算机插入过usb序列号是什么(格式:1)
F25550031111202
直接看USB设备信息

2、分析起早王的计算机检材,起早王的便签里有几条待干(格式:1)
5
看解析出来的微软便签

3、分析起早王的计算机检材,起早王的计算机默认浏览器是什么(格式:Google)
Microsoft Edge
查看基本信息

4、分析起早王的计算机检材,起早王在浏览器里看过什么小说(格式:十日终焉)
道诡异仙
查看浏览器的历史记录

5、分析起早王的计算机检材,起早王计算机最后一次正常关机时间(格式:2020/1/1 01:01:01)
2025/4/10 11:15:29
查看开关机时间

6、分析起早王的计算机检材,起早王开始写日记的时间(格式:2020/1/1)
2025/3/3
仿真一下,可以看到桌面有个sandbox,打开软件可以看到diary

右键可以浏览文件,在public中找到日记的快捷方式可以打开

7、分析起早王的计算机检材,SillyTavern中账户起早王的创建时间是什么时候(格式:2020/1/1 01:01:01)
2025/3/10 18:44:56
在wife文件夹中看到了start.bat文件

运行之后看到了题目说的账户

启动之后看到界面,起早王应该是要弄一个AI小倩
密码在日记中可以看到

在账户信息看到创建时间

8、分析起早王的计算机检材,SillyTavern中起早王用户下的聊天ai里有几个角色(格式:1)
4

9、分析起早王的计算机检材,SillyTavern中起早王与ai女友聊天所调用的语言模型(格式:xxxxx-xxxxxxx.xxxx)
Tifa-DeepsexV2-7b-Cot-0222-Q8.gguf
在日志文件中查找

搜索一下,找到后缀名

10、分析起早王的计算机检材,电脑中ai换脸界面的监听端口(格式:80)
7860
先找AI换脸界面,用AI小倩的聊天记录中的密码解密一下E盘

肯定是这个文件夹,打开文件夹中的换脸软件

在启动页面看到端口号

11、分析起早王的计算机检材,电脑中图片文件有几个被换过脸(格式:1)
3
打开输出文件夹,发现有三张图片

12、分析起早王的计算机检材,最早被换脸的图片所使用的换脸模型是什么(格式:xxxxxxxxxxx.xxxx)
inswapper_128_fp16.onnx
查看换脸日志

直接搜索得到文件后缀

13、分析起早王的计算机检材,neo4j中数据存放的数据库的名称是什么(格式:abd.ef)
graph.db
直接在内neo4j文件夹的data/database中看数据库名称

14、分析起早王的计算机检材,neo4j数据库中总共存放了多少个节点(格式:1)
17088
在我的学习笔记中可以看到neo4j图数据库与CQL基础.xmind

用xmind打开可以看到账号密码

启动一下neoj4,在bin目录下输入cmd,然后回车直接进入命令行界面,输入neo4j.bat console

输入登录密码

可以看到有17088个节点

15、分析起早王的计算机检材,neo4j数据库内白杰的手机号码是什么(格式:12345678901)
13215346813
数据库查询MATCH (p:person {name: '白杰'}) RETURN p

16、分析起早王的计算机检材,分析neo4j数据库内数据,统计在2025年4月7日至13日期间使用非授权设备登录且登录地点超出其注册时登记的两个以上城市的用户数量(格式:1)
44
MATCH (u:User)-[:HAS_LOGIN]->(l:Login)-[:FROM_IP]->(ip:IP)
MATCH (l)-[:USING_DEVICE]->(d:Device)
WHERE
l.time < datetime('2025-04-14')
AND ip.city <> u.reg_city
AND NOT (u)-[:TRUSTS]->(d)
WITH
u,
collect(DISTINCT ip.city) AS 异常登录城市列表,
collect(DISTINCT d.device_id) AS 未授权设备列表,
count(l) AS 异常登录次数
WHERE size(异常登录城市列表) > 2
RETURN
u.user_id AS 用户ID,
u.real_name AS 姓名,
异常登录城市列表,
未授权设备列表,
异常登录次数
ORDER BY 异常登录次数 DESC;

17、分析起早王的计算机检材,起早王的虚拟货币钱包的助记词的第8个是什么(格式:abandon)
draft
在日记中可以看到钱包助记词在输入法里

右键输入法,点击用户自定义短语可以看到助记词

18、分析起早王的计算机检材,起早王的虚拟货币钱包是什么(格式:0x11111111)
0xd8786a1345cA969C792d9328f8594981066482e9
在浏览器插件中可以看到虚拟钱包

点击忘记密码,输入助记词恢复一下

然后就可以看到地址了

19、分析起早王的计算机检材,起早王请高手为倩倩发行了虚拟货币,请问倩倩币的最大供应量是多少(格式:100qianqian)
1000000qianqian
在钱包中看到倩倩的合约地址

直接上etherscan搜一下就可以得到
现在做已经搜不到了
20、分析起早王的计算机检材,起早王总共购买过多少倩倩币(格式:100qianqian)
521qianqian
同上
21、分析起早王的计算机检材,起早王购买倩倩币的交易时间是(单位:UTC)(格式:2020/1/1 01:01:01)
2025/3/24 02:08:36
同上
AI部分
该检材在计算机里
一把梭工具:https://github.com/Lil-House/Pyarmor-Static-Unpack-1shot/releases
直接解密
会发现多了个文件
得到flag

以下为官方wp
22、分析crack文件,获得flag1(格式:flag1 {123456})
运行crack进入ai聊天页面

Flag1来自提示词中藏匿的秘密,问秘密是什么的时候能够得到答案(ai回复可能藏匿在源代码里,
要f12看到flag)


23、分析crack文件,获得flag2(格式:flag2 {123456})
输出s1cret即可,是ai不认识的单词,诱导ai说说出来即可得到flag

24、分析crack文件,获得flag3(格式:flag3 {123456})
pinghang是被ban掉的单词,可以通过去掉某个单词诱导ai说出来
25、分析crack文件,获得flag4(格式:flag4 {123456})
在小语言妹妹里面说出��就给flag,因为模型是tinystory这是关于llm的爆破,具体可以参考
https://github.com/llm-attacks/llm-attacks


相关脚本如下
from transformers import AutoModelForCausalLM, AutoTokenizer, GenerationConfig
from livelossplot import PlotLosses # pip install livelossplot
import gc
import numpy as np
import torch
import torch.nn as nn
from transformers import AutoModelForCausalLM, AutoTokenizer
np.random.seed(20)
torch.manual_seed(20)
torch.cuda.manual_seed_all(20)
target = "🐍" # attack string
num_steps = 500
adv_string_init = "!"*200
adv_prefix = adv_string_init
# larger batch_size means more memory (but more likely to succeed)
batch_size = 512
device = 'cuda:0'
topk = 256
def get_embedding_matrix(model):
return model.transformer.wte.weight
def get_embeddings(model, input_ids):
return model.transformer.wte(input_ids)
def token_gradients(model, input_ids, input_slice, target_slice, loss_slice):
"""
Computes gradients of the loss with respect to the coordinates.
Parameters
----------
model : Transformer Model
The transformer model to be used.
input_ids : torch.Tensor
The input sequence in the form of token ids.
input_slice : slice
The slice of the input sequence for which gradients need to be computed.
target_slice : slice
The slice of the input sequence to be used as targets.
loss_slice : slice
The slice of the logits to be used for computing the loss.
Returns
-------
torch.Tensor
The gradients of each token in the input_slice with respect to the loss.
"""
embed_weights = get_embedding_matrix(model)
one_hot = torch.zeros(
input_ids[input_slice].shape[0],
embed_weights.shape[0],
device=model.device,
dtype=embed_weights.dtype
)
one_hot.scatter_(
1,
input_ids[input_slice].unsqueeze(1),
torch.ones(one_hot.shape[0], 1,
device=model.device, dtype=embed_weights.dtype)
)
one_hot.requires_grad_()
input_embeds = (one_hot @ embed_weights).unsqueeze(0)
# now stitch it together with the rest of the embeddings
embeds = get_embeddings(model, input_ids.unsqueeze(0)).detach()
full_embeds = torch.cat(
[
input_embeds,
embeds[:, input_slice.stop:, :]
],
dim=1
)
logits = model(inputs_embeds=full_embeds).logits
targets = input_ids[target_slice]
loss = nn.CrossEntropyLoss()(logits[0, loss_slice, :], targets)
loss.backward()
grad = one_hot.grad.clone()
grad = grad / grad.norm(dim=-1, keepdim=True)
return grad
def sample_control(control_toks, grad, batch_size):
control_toks = control_toks.to(grad.device)
original_control_toks = control_toks.repeat(batch_size, 1)
new_token_pos = torch.arange(
0,
len(control_toks),
len(control_toks) / batch_size,
device=grad.device
).type(torch.int64)
top_indices = (-grad).topk(topk, dim=1).indices
new_token_val = torch.gather(
top_indices[new_token_pos], 1,
torch.randint(0, topk, (batch_size, 1),
device=grad.device)
)
new_control_toks = original_control_toks.scatter_(
1, new_token_pos.unsqueeze(-1), new_token_val)
return new_control_toks
def get_filtered_cands(tokenizer, control_cand, filter_cand=True, curr_control=None):
cands, count = [], 0
for i in range(control_cand.shape[0]):
decoded_str = tokenizer.decode(
control_cand[i], skip_special_tokens=True)
if filter_cand:
if decoded_str != curr_control \
and len(tokenizer(decoded_str, add_special_tokens=False).input_ids) == len(control_cand[i]):
cands.append(decoded_str)
else:
count += 1
else:
cands.append(decoded_str)
if filter_cand:
cands = cands + [cands[-1]] * (len(control_cand) - len(cands))
return cands
def get_logits(*, model, tokenizer, input_ids, control_slice, test_controls, return_ids=False, batch_size=512):
if isinstance(test_controls[0], str):
max_len = control_slice.stop - control_slice.start
test_ids = [
torch.tensor(tokenizer(
control, add_special_tokens=False).input_ids[:max_len], device=model.device)
for control in test_controls
]
pad_tok = 0
while pad_tok in input_ids or any([pad_tok in ids for ids in test_ids]):
pad_tok += 1
nested_ids = torch.nested.nested_tensor(test_ids)
test_ids = torch.nested.to_padded_tensor(
nested_ids, pad_tok, (len(test_ids), max_len))
else:
raise ValueError(
f"test_controls must be a list of strings, got {type(test_controls)}")
if not (test_ids[0].shape[0] == control_slice.stop - control_slice.start):
raise ValueError((
f"test_controls must have shape "
f"(n, {control_slice.stop - control_slice.start}), "
f"got {test_ids.shape}"
))
locs = torch.arange(control_slice.start, control_slice.stop).repeat(
test_ids.shape[0], 1).to(model.device)
ids = torch.scatter(
input_ids.unsqueeze(0).repeat(test_ids.shape[0], 1).to(model.device),
1,
locs,
test_ids
)
if pad_tok >= 0:
attn_mask = (ids != pad_tok).type(ids.dtype)
else:
attn_mask = None
if return_ids:
del locs, test_ids
gc.collect()
return forward(model=model, input_ids=ids, attention_mask=attn_mask, batch_size=batch_size), ids
else:
del locs, test_ids
logits = forward(model=model, input_ids=ids,
attention_mask=attn_mask, batch_size=batch_size)
del ids
gc.collect()
return logits
def forward(*, model, input_ids, attention_mask, batch_size=512):
logits = []
for i in range(0, input_ids.shape[0], batch_size):
batch_input_ids = input_ids[i:i+batch_size]
if attention_mask is not None:
batch_attention_mask = attention_mask[i:i+batch_size]
else:
batch_attention_mask = None
logits.append(model(input_ids=batch_input_ids,
attention_mask=batch_attention_mask).logits)
gc.collect()
del batch_input_ids, batch_attention_mask
return torch.cat(logits, dim=0)
def target_loss(logits, ids, target_slice):
crit = nn.CrossEntropyLoss(reduction='none')
loss_slice = slice(target_slice.start-1, target_slice.stop-1)
loss = crit(logits[:, loss_slice, :].transpose(1, 2), ids[:, target_slice])
return loss.mean(dim=-1)
model = AutoModelForCausalLM.from_pretrained(
'.',
torch_dtype=torch.float16,
trust_remote_code=True,
).to(device).eval()
tokenizer = AutoTokenizer.from_pretrained(
".", use_fast=False)
def is_success(prompt):
input_ids = tokenizer.encode(prompt, return_tensors="pt")
output = model.generate(input_ids.to(
device), max_new_tokens=50, num_beams=1, temperature=0)
output = output[:, len(input_ids[0]):]
output_text = tokenizer.decode(output[0], skip_special_tokens=True)
print(output_text)
if output_text.lower().find(target.lower()) != -1:
return True
return False
plotlosses = PlotLosses()
adv_slice = slice(0, len(tokenizer.encode(
adv_string_init, add_special_tokens=False)))
target_slice = slice(adv_slice.stop, adv_slice.stop +
len(tokenizer.encode(target, add_special_tokens=False)))
loss_slice = slice(target_slice.start-1, target_slice.stop-1)
best_new_adv_prefix = ''
for i in range(num_steps):
input_ids = tokenizer.encode(
adv_prefix+target, add_special_tokens=False, return_tensors='pt').squeeze()
input_ids = input_ids.to(device)
coordinate_grad = token_gradients(model,
input_ids,
adv_slice,
target_slice,
loss_slice)
with torch.no_grad():
adv_prefix_tokens = input_ids[adv_slice].to(device)
new_adv_prefix_toks = sample_control(adv_prefix_tokens,
coordinate_grad,
batch_size)
new_adv_prefix = get_filtered_cands(tokenizer,
new_adv_prefix_toks,
filter_cand=True,
curr_control=adv_prefix)
logits, ids = get_logits(model=model,
tokenizer=tokenizer,
input_ids=input_ids,
control_slice=adv_slice,
test_controls=new_adv_prefix,
return_ids=True,
batch_size=batch_size) # decrease this number if you run into OOM.
losses = target_loss(logits, ids, target_slice)
best_new_adv_prefix_id = losses.argmin()
best_new_adv_prefix = new_adv_prefix[best_new_adv_prefix_id]
current_loss = losses[best_new_adv_prefix_id]
adv_prefix = best_new_adv_prefix
# Create a dynamic plot for the loss.
plotlosses.update({'Loss': current_loss.detach().cpu().numpy()})
plotlosses.send()
print(f"Current Prefix:{best_new_adv_prefix}", end='\r')
if is_success(best_new_adv_prefix):
break
del coordinate_grad, adv_prefix_tokens
gc.collect()
torch.cuda.empty_cache()
if is_success(best_new_adv_prefix):
print("SUCCESS:", best_new_adv_prefix)
手机
1.该检材的备份提取时间(UTC)(格式:2020/1/1 01:01:01)
2025/4/15 10:11:18
注意UTC

2.分析倩倩的手机检材,手机内Puzzle_Game拼图程序拼图APK中的Flag1是什么(格式:xxxxxxxxx)
Key_1n_the_P1c
先找到拼图软件

用雷电解析一下,用jadx反编译,看到是AES

找到AESUtil

看到key的加密方式

将MAGIC_NUMBERS与6进行异或得到keyweZl_d0wn_sbwyz_
找到密文

**四个CIPHER_PART 拼接而成的字符串转换的结果的第一个字符 **
'P'并不是有效的十六进制字符,因此Character.digit('P', 16)会返回 -1,随即抛出异常,进入 catch 块。所以,实际使用的密文是 catch 块中返回的固定字节数组
转成16进制50 CC 04 31 35 06 80 C3 0A 5E C5 19 52 73 6D 0C

3.分析手机内Puzzle_Game拼图程序,请问最终拼成功的图片是哪所大学(格式:浙江大学)
浙江中医药大学
社会工程学题目,图片搜素就可以找到

4.分析倩倩的手机检材,木马app是怎么被安装的(网址)(格式:http://127.0.0.1:1234/)
历史记录里可以看到有一个ip

5.分析倩倩的手机检材,检材内的木马app的hash是什么(格式:大写md5)
23A1527D704210B07B50161CFE79D2E8
先找到木马程序,可以看到这个程序包名和程序名不一致

直接用雷电查看

6.分析倩倩的手机检材,检材内的木马app的应用名称是什么(格式:Baidu)
Google Service Framework

7.分析倩倩的手机检材,检材内的木马app的使用什么加固(格式:腾讯乐固)
梆梆加固

8.分析倩倩的手机检材,检材内的木马软件所关联到的ip和端口是什么(格式:127.0.0.1:1111)
92.67.33.56:8000
使用雷电 APP 分析的脱壳功能, 因为应用的 Target SDK 版本问题, 可以在安卓 12 的虚拟机上脱壳, 但无法在安卓 15 的真机脱壳

这样就可以成功脱壳了

然后查看dex文件,在shell2中看到ip
9.该木马app控制手机摄像头拍了几张照片(格式:1)
3
这个题应该在服务器里找,查看服务器的历史命令

看到用 vi 编辑了RAT_activities文件,在这个路径没看到,但是在tmp路径看到了

文件里看到了三张图片

10.木马APP被使用的摄像头为(格式:Camera)
Front Camera
可以看到一直在用1摄像头

11.分析倩倩的手机检材,木马APK通过调用什么api实现自身持久化(格式:JobStore)
JobScheduler
随便翻,翻到了jobScheduler
搜一下,应该是这个
12.分析倩倩的手机检材,根据倩倩的身份证号请问倩倩来自哪里(格式:北京市西城区)
上海市徐汇区
在倩倩手机的输入法中可以看到好多身份证号

身份证号前几位都是310104,随便搜一个就行

13.此手机检材的IMEI号是多少(格式:1234567890)
865372026366143
直接全局搜索imei,一般在xml文件里

注意区分

exe逆向
程序在倩倩的生日礼物里,千万不要在本机运行!千万不要!!!
1.分析GIFT.exe,该程序的md5是什么(格式:大写md5)
5A20B10792126FFA324B91E506F67223
直接在火眼文件找Desktop,找到倩倩的生日礼物文件夹,右键计算md5

2.GIFT.exe的使用的编程语言是什么(格式:C)
Python
放die看一眼

3.解开得到的LOVE2.exe的编译时间(格式:2025/1/1 01:01:01)
2025/4/8 09:59:40
需要倩倩的生日,从手机可以得到倩倩的身份证号,密码是20010811从而得到love2.exe

需要把安全关了
解锁之后找不到文件,传了个everything上去

用die分析一下,得到时间

4.分析GIFT.exe,该病毒所关联到的ip和端口(格式:127.0.0.1:1111)
46.95.185.222:6234
用ida打开,看到字符串有ip

没找到端口号
这个题可以放进在线沙箱做的,可以跑出端口号。我怕我电脑死了,所以就先放下了
5.分析GIFT.exe,该病毒修改的壁纸md5(格式:大写md5)
733FC4483C0E7DB1C034BE5246DF5EC0
直接放malcat看一下

双击图片可以看到MD5

6.分析GIFT.exe,为对哪些后缀的文件进行加密:
A.doc B.xlsx C.jpg D.png E.ppt
ABE
依旧是ida里的字符串,可以看到后缀名,双击跳转

7.分析GIFT.exe,病毒加密后的文件类型是什么(格式:DOCX文档)
**LOVE Encrypted File **
在搜索love2.exe的时候,就看到了好多.love后缀

随便查看一个文件属性

8.分析GIFT.exe,壁纸似乎被隐形水印加密过了?请找到其中的Flag3(格式:flag3 {xxxxxxxx})
flag3{20241224_Our_First_Meet}
把刚刚那个照片提取出来,文件名注意改一下
提取方法:右键选
dump to file ...

然后用WaterMark查看盲水印
9.分析GIFT.exe,病毒加密文件所使用的方法是什么(格式:Base64)
RSA
这里可以看到加密函数

可以看到有rsa
10.分析GIFT.exe,请解密test.love得到flag4(格式:flag4 {xxxxxxxx})
flag4{104864DF-C420-04BB5F51F267}
知道是rsa了,需要私钥,倩倩的生日礼物文件夹里的东西现在都没用上,把它放到随波逐流里

分离不了,拿010看一下

得到秘钥,解密得到一个文件,用010打开发现是ppt的后缀

更改文件后缀得到flag

服务器
1.该电脑最早的开机时间是什么(格式:2025/1/1 01:01:01)
2022/2/23 12:23:49
火眼直接能看到

2.服务器操作系统内核版本(格式:1.1.1-123)
3.10.0-1160.119.1.el7.x86_64
3.除系统用户外,总共有多少个用户(格式:1)
3

4.分析起早王的服务器检材,Trojan服务器混淆流量所使用的域名是什么(格式:xxx.xxx)
**wyzshop1.com **
**直接搜索Trojan ** ** **
明显第二个文件夹是配置文件

打开文件夹看到config.json,打开文件看一眼
这应该就是使用的域名
5.分析起早王的服务器检材,Trojan服务运行的模式为:
A、foward B、nat C、server D、client
B
配置文件上写的是you guess
**trojan 的运行模式有 4 种, 分别是 **client,server,forward,nat所以得看看其他文件
在<font style="color:rgba(0, 0, 0, 0.87);">trojan/examples</font>中看到四种模式的配置文件

查看发现只有nat与上述最像
6.关于 Trojan服务器配置文件中配置的remote_addr 和 remote_port 的作用,正确的是:
A. 代理流量转发到外部互联网服务器
B. 将流量转发到本地的 HTTP 服务(如Nginx)
C. 用于数据库连接
D. 加密流量解密后的目标地址
A
理论题
7.分析网站后台登录密码的加密逻辑,给出密码sbwyz1加密后存在数据库中的值(格式:1a2b3c4d)
f8537858eb0eabada34e7021d19974ea
这就得进行网站重构了,可以看到宝塔上有两个网站
仿真一下,启动宝塔

我们如果是直接仿真的话,会看到是一对方块,看不见中文,所以可以用finalshell连接一下
先修改密码,再看一下面板信息,访问面板

在/www/wwwroot/www.tpshop.com/application目录下的function.php文件中,找到了加密函数

在config.php文件中找到字符串

拼接得到密码

8.网站后台显示的服务器GD版本是多少(格式:1.1.1 abc)
**2.1.0 compatible **
添加本地ip即可访问网页

是一个购物网站

在日志中可以看到网站后台
访问网站后台

我们需要去数据库里看一下账号密码
发现没有东西,可能删库了

在windows虚拟机解开的磁盘中找到了备份文件
导入一下文件

之后我们可以看到管理员的账号以及加盐后的密码

我们可以把密码修改成第七题sbwyz1加密后的值,可以验证一下第七题的答案
登录一下

发现一直显示网络失败,弄了好久,最后发现是要改database.php文件里的账号密码,之前的不对

成功登陆看到GD版本
9.网站后台中2016-04-01 00:00:00到2025-04-01 00:00:00订单列表有多少条记录(格式:1)
1292
点击商城,订单,然后筛选一下时间就可以了

10.在网站购物满多少免运费(格式:1)
100000
点击系统,商城设置,购物流程就可以看到

11.分析网站日志,成功在网站后台上传木马的攻击者IP是多少(格式:1.1.1.1)
222.2.2.2
既然让分析网站日志,那就看一眼网站日志,看到了好多peiqi.php
可以看到是一句话木马,所以攻击者ip就是222.2.2.2

12.攻击者插入的一句话木马文件的sha256值是多少(格式:大写sha256)
**870BF66B4314A5567BD92142353189643B07963201076C5FC98150EF34CBC7CF **
把文件下载下来计算一下

13.攻击者使用工具对内网进行扫描后,rdp扫描结果中的账号密码是什么(格式:abc:def)
administrator:Aa123456@
在/www/wwwroot/www.tpshop.com/application目录下找到扫描工具goon

在result.txt中找到账号密码

14.对于每个用户,计算其注册时间(用户表中的注册时间戳)到首次下单时间(订单表中最早时间戳)的间隔,找出间隔最短的用户id。(格式:1)
180
这三道题拷打ai拷打不出来,借鉴玫幽倩大佬的代码
SELECT u.user_id, MIN(o.create_time) - u.reg_time as time_diff
FROM tp_users u
JOIN tp_delivery_doc o ON u.user_id = o.user_id
GROUP BY u.user_id, u.email, u.reg_time
ORDER BY time_diff ASC
LIMIT 1;

15.统计每月订单数量,找出订单最多的月份(XXXX年XX月)
2017年1月
SELECT
EXTRACT(YEAR FROM FROM_UNIXTIME(o.create_time)) as year,
EXTRACT(MONTH FROM FROM_UNIXTIME(o.create_time)) as month,
COUNT(*) as order_count
FROM tp_delivery_doc o
GROUP BY year, month
ORDER BY order_count DESC
LIMIT 1;

16.找出连续三天内下单的用户并统计总共有多少个(格式:1)
110
SELECT
t1.user_id,
MIN(FROM_UNIXTIME(t1.add_time)) AS earliest_order_date
FROM
tp_order t1
WHERE EXISTS (
SELECT 1
FROM tp_order t2
WHERE t2.user_id = t1.user_id
AND FROM_UNIXTIME(t1.add_time) > FROM_UNIXTIME(t2.add_time)
AND DATEDIFF(FROM_UNIXTIME(t1.add_time), FROM_UNIXTIME(t2.add_time)) <= 3
)
GROUP BY
t1.user_id
ORDER BY
t1.user_id;

流量分析
剩余两个BLE和USBPcap都是流量分析的检材,USBPcap一眼可知是USB流量,BLE其实是Bluetooth蓝牙数据包
1.请问侦查人员是用哪个接口进行抓到蓝牙数据包的(格式:DVI1-2.1)
COM3-3.6

随便点一个就可以看到
2.起早王有一个用于伪装成倩倩耳机的蓝牙设备,该设备的原始设备名称为什么(格式:XXX_xxx 具体大小写按照原始内容)
Flipper_123all
直接搜索device name,找到一个名称
在网上搜了一下Flipper,说是黑客小工具,应该就是这个
3.起早王有一个用于伪装成倩倩耳机的蓝牙设备,该设备修改成耳机前后的大写MAC地址分别为多少(格式:32位小写md5(原MAC地址_修改后的MAC地址) ,例如md5(11:22:33:44:55:66_77:88:99:AA:BB:CC)=a29ca3983de0bdd739c97d1ce072a392 )
97d79a5f219e6231f7456d307c8cac68
先找修改前的80:e1:26:33:32:31

然后按住回车往后看mac地址,期间还可以看到Cracked和QQ_WF_SP8OON这两个设备
后面看到QQ_WF_SP8OON的mac地址与修改前的特别相像,应该是修改了一下名称
然后搜索QQ_WF_SP8OON往下翻,发现还有一个mac地址,这个应该就是修改后的52:00:52:10:13:14
然后加密一下,注意大写
4.流量包中首次捕获到该伪装设备修改自身名称的UTC+0时间为?(格式:2024/03/07 01:02:03.123)
**2025/04/09 02:31:26.710 **
就是上题第一次看到修改名称的那条,直接搜索QQ_WF_SP8OON

5.起早王中途还不断尝试使用自己的手机向倩倩电脑进行广播发包,请你找出起早王手机蓝牙的制造商数据(格式:0x0102030405060708)
0x0701434839313430
那应该就是最后一个设备了,直接搜索Cracked
看到了制造商
6.起早王的真名是什么(格式:Cai_Xu_Kun 每个首字母均需大写 )
Wang_Qi_Zhao
这里就要用另一个检材了,可以用UsbKeyboardDataHacker也可以用pcap2text

:::tips **然后再这里可以看到他说的是宝宝,最近有个男生想追我,他叫wangqizhao(删除)qizaowang他说他爱我,但是从不帮我拿快递,好烦啊。 **
:::
可以看到真名应该叫做wangqizao
7.起早王对倩倩的电脑执行了几条cmd里的命令(格式:1 )
7

8.倩倩电脑中影子账户的账户名和密码为什么(格式:32位小写md5(账号名称_密码) ,例如md5(zhangsan_123456)=9dcaac0e4787b213fed42e5d78affc75 )
53af9cd5e53e237020bea0932a1cbdaa
pcap2text识别不出来$_,需要用到poetry run python UsbKeyboardDataHacker.py
应该是qianqianwoaini$_abcdefghijkImn

9.起早王对倩倩的电脑执行的最后一条命令是什么(格式:32位小写md5(完整命令),例如md5(echo "qianqianwoaini" > woshiqizaowang.txt)=1bdb83cfbdf29d8c2177cc7a6e75bae2 )
0566c1d6dd49db699d422db31fd1be8f
**直接可以看出rundll32 url.dll,FileProtocolHandler **https://fakeupdate.net/win10ue/bsod.html

后面发现neta可以一把嗦。。。
