这次混了个预赛二等奖,但同样未能成功晋级,菜炸了(( 唉好好复现学习一下吧 以下是在w8nn9z、1n1t两位爷的帮助下一起尝试完成的复现Orz

服务器取证部分复现起来有点耗时耗力,暂时先搁置了。。。也许等下一次打取证比赛前会想起更新吧()

数据取证部分在网上没找到标准答案,就不复现了。

手机取证

1

分析安卓手机检材,手机的IMSI是?

img

460036641292715

2

养鱼诈骗投资1000,五天后收益是?

在QQ聊天记录里可以找到

img

175

3

分析苹果手机检材,手机的IDFA是?

img

E477D4C7-BD02-4979-BC9D-5C5DE7BD1F17

4

Telegram应用的卸载时间是?

过滤卸载记录

img

2025-04-17-10:51:39

5

机主hotmail邮箱地址是?

telegram聊天记录中有提到

img

hostsixer@hotmail.com

6

苹果电脑开机密码是?

在手机截屏里

img

12345678

7

Telegram加密通讯中,加密聊天信息用到的第二个解密载体是?

在mac的备忘录中找到《蜜语规则》

img

2.mp4

8

贾韦码的内部代号是?

在苹果手机的office文件中找到聊天话术V2.docx,其中有提到被害者代号

img

48

9

特快专递的收货地址是?

还是在上一题的文档中有提到

img

西红市中山路35号PGS健身房

APK取证

1

分析安卓检材,远控工具包名是?

可以看到QQ聊天记录中传了一个apk文件

img

用jadx看一下可以确定这个apk就是手机中已经安装的rustdesk

img

com.carriez.flutter_hbb

2

远控工具中继服务器IP是?

直接去配置文件里面翻就能找到

img

59.110.10.229

3

远控工具ID服务器端口是?

由上题可知

21116

4

远控工具中继服务器Key是?

由上题可知

WIUqzRq1Ocx4QNnsF26dZQijKdyd2L9OfaT55hDlQCI=

5

远控工具中收藏的远程ID是?

仍可以翻配置文件找到

img

1807892422

6

远程控制该手机的手机型号是?

翻配置文件

img

google-Pixel

7

监听工具包名是?

在apk列表中可以找到

img

com.example.liekai

8

监听工具代码主入口是?

用jadx看一下这个apk

img

com.example.liekai.MainActivity

9

监听工具的签名算法是?

img

SHA256RSA

10

监听工具运行多少秒后会跳转成黑色幕布?

可以把逆向出来的代码丢给ds

img

1.000

11

监听工具运行后,黑色幕布上字符串是?

用安卓开发者助手可以看到

img

pgs比武专用

12

监听工具检测到多少分贝开始录音?

在程序的开头有这样一个页面

img

70

13

监听工具录音连续几秒没有检测到声音停止录音?

由上题

4

14

监听工具保存文件存储路径的数据库名称是?

img

recordings.db

15

监听工具保存录像文件的文件夹是?

img

recording

16

监听工具数据库中保存音视频文件的路径使用什么加密?

ds 逆向一下 encryption_utils.dart

img

Salsa20

17

录音的文件采用什么加密方式?

由上题,密钥长度是32个字节,256bits

AES-256

18

录像文件加密秘钥的最后一位是?

ds 给出静态的key数据,但是明显有点问题

比如这个 454 显然不属于 uint8

img

用 frida hook 能拿到真正的加密密钥,转一下hex

img

0x4D

19*

原始文件md5为3b4d**55ae的创建时间是?

计算机取证

1

分析贾韦码计算机检材,计算机系统Build版本为?

img

18362

2

计算机最后一次正常关机的时间为?UTC +0

要求UTC+0 !!!

img

2025-04-18 03:20:54

3

计算机网卡的MAC地址为?

img

00-0C-29-0F-69-00

4

计算机用户“贾韦码” 安全标识符SID为?

img

S-1-5-21-3733482367-3411043098-2536183883-1001

5

计算机默认浏览器为?

img

Google Chrome

6

计算机默认浏览器版本为?

img

135.0.7049.96

7

机主通过浏览器搜索国外社交软件为?

img

Telegram

8

机主的邮箱账号为?

img

tqmdavidjohnson300@gmail.com

9

计算机装过一款反取证软件为?

img

VeraCrypt.exe

10

计算机通过Xshell远程连接的ip地址为?

img

192.168.56.129

11

机主曾买过一个美国的TG账号,请给该账号的原两步验证密码?

邮件中有提到

img

13770603

12

给出其电脑内加密容器的解密密码?

进入VR场景,在受害人家卧室的衣柜里发现有一个暗门

img

进入后桌上放着一张纸条,上面有密码

img

在pc的图片文件夹中找到加密容器

img

hashcat爆破

1
hashcat -m 13721 -a 3 dsf2wecasdcqwed12434 Pgs?d?d?d?dd3j
img

Pgs8521d3j

13

给出其电脑内加密容器挂载的盘符?

img

F

14

给出其电脑内存放了多少张伪造身份证?

挂载得到的容器,里面都是伪造身份证

img

1023

15

找出任敏的身份证编号?

3.jpg就是要找的

img

430529195112085460

16

找出其电脑内存放的密钥文件,计算其MD5?

可以看到曾查看过一个可疑文件

img

然而这个文件已经被删除了,但是我们仍可以在未使用空间中找到它

img

提取出来计算md5

img

1022cc083a4a5a9e2036065e2822c48e

17

找出其电脑内存放的密钥文件,解密此密钥文件,给出其内容?

img

zfs加密pool密钥文件

18

对macOS系统进行解析,登陆的电子邮件服务是谁提供的?

img

microsoft

19

系统备忘录的包名是什么?

img

com.apple.Notes

20

图片中隐藏的内容是什么?

图片指的是之前看到的蜜语规则中的3.png

img

在red plane中可以看到一张二维码

img
img

位移加密 正向位移操作

21

被加密文件的扩展名是什么?

在桌面上找到被加密的文件,可以看到后缀名是enc

img

enc

22

被加密的文件总共有几个?

由上题

1

23

贾韦码家使用的智能门锁品牌型号是什么?

由苹果应用取证部分可看到加密逻辑其实就是个AES

key直接运行原程序输出即可,IV是密文的前16字节

img

解压后是face1.jpg和资料.docx

阅读文档得知

img

金刚Ⅲ号

EXE取证

1

分析Windows木马,其控制端ip是?

在pc的documents里可以找到一个exe文件

img

丢进云沙箱分析

img

104.18.45.79

2

软件会复制自身到哪个文件夹下?

img

SubDir

3

接上题,复制后软件名称是?

由上题

BwAcr.exe

4

软件一共可以窃取多少种浏览器的信息?

用dnspy逆向上面的程序,可以看到这么几个函数的调用

img

经过依次点进去查看后,可以确定是有Brave, Google, Opera, OperaGX, Edge, Yandex, FireFox, IE

8

5

软件查询安装的杀毒软件出错或异常会返回什么字符串?

前面通过云沙箱可以得知这个程序是Quasar木马家族的,可以直接去github上面找到

img

Unknown

苹果应用取证

1

对mac电脑中的加密程序进行分析,使用了一个特定的数作为密钥生成的种子,请问这个数是什么?

在MAC的桌面上找到文件加密器

img

gui_wrapper.py中专门对一个模块的引入是否成功进行了检测

img

将这个模块提取出来逆向

img

pylingual反编译

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
# Decompiled with PyLingual (https://pylingual.io)
# Internal filename: encrypt_deobfuscated.pyc
# Bytecode version: 3.8.0rc1+ (3413)
# Source timestamp: 2025-04-17 01:58:27 UTC (1744855107)

import os
import sys
import tkinter as tk
from tkinter import filedialog, messagebox
from Crypto.Cipher import AES
import base64
import hashlib
import time
import random

class EncryptionTool:

def __init__(self):
self._generate_key()

def _generate_key(self):
seed_values = [(19, 7, 83), (5, 31, 69), (13, 11, 86), (41, 3, 76), (2, 57, 55), (23, 5, 96), (17, 13, 58), (29, 7, 94), (11, 19, 102), (7, 17, 42), (43, 3, 48), (37, 11, 51), (3, 43, 52), (59, 7, 53), (47, 5, 54)]
key_parts = []
for a, b, base in seed_values:
val = (a * b % 60 + base) % 256
if val % 2 == 0:
val = (val + 13) % 256
else:
val = (val + 7) % 256
key_parts.append(chr(val))
scrambled = []
indices = [3, 7, 2, 12, 0, 11, 5, 14, 9, 1, 6, 4, 10, 8, 13]
for idx in indices:
scrambled.append(key_parts[idx])
raw_key = ''.join(scrambled)
timestamp = int(time.time()) % 1000
random_val = random.randint(1, 255)
entropy = chr(timestamp % 256) + chr(random_val)
temp_key = hashlib.sha256((raw_key + entropy).encode()).digest()
self._descramble_key(temp_key)

def _descramble_key(self, temp_key):
mixed_base = b''.join([bytes([b ^ 42]) for b in temp_key[:10]])
actual_key = 'SecureKey123456'
self.enhanced_key = self.enhance_key(actual_key)

def enhance_key(self, key):
round1 = self._add_salt(key)
round2 = self._ascii_transform(round1)
round3 = self._xor_transform(round2)
round4 = round3[::-1]
final_key = hashlib.md5(round4.encode()).digest()
return final_key

def _add_salt(self, key):
salt_components = ['salt', '_', 'value']
return key + ''.join(salt_components)

def _ascii_transform(self, text):
result = ''
for i in range(len(text)):
ascii_val = ord(text[i])
if i % 3 == 0:
result += chr((ascii_val + 7) % 256)
elif i % 3 == 1:
result += chr((ascii_val ^ 15) % 256)
else:
result += chr(ascii_val * 5 % 256)
return result

def _xor_transform(self, text):
xor_keys = ['XorKey123456789', 'AnotherKey987654']
result = text
for xor_key in xor_keys:
temp = ''
for i in range(len(result)):
temp += chr(ord(result[i]) ^ ord(xor_key[i % len(xor_key)]))
result = temp
return result

def pad_data(self, data):
block_size = AES.block_size
padding_length = block_size - len(data) % block_size
padding = bytes([padding_length]) * padding_length
return data + padding

def unpad_data(self, data):
padding_length = data[-1]
return data[:-padding_length]

def encrypt_file(self, input_file, output_file=None):
if not output_file:
output_file = input_file + '.enc'
try:
cipher = AES.new(self.enhanced_key, AES.MODE_CBC)
iv = cipher.iv
with open(input_file, 'rb') as f:
file_data = f.read()
padded_data = self.pad_data(file_data)
encrypted_data = cipher.encrypt(padded_data)
with open(output_file, 'wb') as f:
f.write(iv + encrypted_data)
return (True, output_file)
except Exception as e:
return (False, str(e))

class EncryptionGUI:

def __init__(self, root):
self.root = root
self.root.title('File Encryption Tool')
self.root.geometry('500x300')
self.root.resizable(False, False)
self.encryptor = EncryptionTool()
self.setup_ui()

def setup_ui(self):
file_frame = tk.Frame(self.root, pady=20)
file_frame.pack(fill='x')
tk.Label(file_frame, text='Select File to Encrypt:').pack(side='left', padx=10)
self.file_path = tk.StringVar()
tk.Entry(file_frame, textvariable=self.file_path, width=30).pack(side='left', padx=5)
tk.Button(file_frame, text='Browse', command=self.browse_file).pack(side='left', padx=5)
action_frame = tk.Frame(self.root, pady=20)
action_frame.pack()
tk.Button(action_frame, text='Encrypt File', command=self.encrypt_file, bg='#4CAF50', fg='white', width=15, height=2).pack(pady=10)
status_frame = tk.Frame(self.root, pady=10)
status_frame.pack(fill='x')
self.status_var = tk.StringVar()
self.status_var.set('Ready')
tk.Label(status_frame, textvariable=self.status_var, bd=1, relief=tk.SUNKEN, anchor=tk.W).pack(fill='x', padx=10)

def browse_file(self):
filename = filedialog.askopenfilename(title='Select File to Encrypt')
if filename:
self.file_path.set(filename)

def encrypt_file(self):
file_path = self.file_path.get()
if not file_path:
messagebox.showerror('Error', 'Please select a file first!')
return
self.status_var.set('Encrypting...')
self.root.update()
success, result = self.encryptor.encrypt_file(file_path)
if success:
self.status_var.set(f'Encryption complete! Output: {result}')
messagebox.showinfo('Success', f'File encrypted successfully!\nOutput: {result}')
else:
self.status_var.set(f'Encryption failed: {result}')
messagebox.showerror('Error', f'Encryption failed: {result}')

def main():
root = tk.Tk()
app = EncryptionGUI(root)
root.mainloop()
if __name__ == '__main__':
main()

42

2

分析文件头部元素并确定它们的正确顺序。将字段名称按顺序连接并提交?

由上题得

iv_encrypted_key

3

密钥派生过程中使用了几个算法步骤。其中一个函数使用了与其实际功能不符的名称。找出这个函数名并提交?

mixed_base变量并未用到

img

_descramble_key

物联网取证

1

分析冰箱,请问智能冰箱的品牌?

img

Panasonic

2

请问智能冰箱的型号?

由上题

NR-E46CV1

3

请找智能冰箱的uuid?

大概就是上面第三行的东西吧

12345678-90AB-CDEF-1234-567890ABCDEF

4

请问智能冰箱默认保存几张图片?

可以发现每个保存图片的区域前都有一个face,搜索一下

img

5

5

请问冰箱中已存的第一张图片上的内容是什么?

将第一张图片提取出来

img

盘古石杯贾韦码

6

请问冰箱中已存的第二张图片的名称是什么?

由于在前面的题中知道了上题的图片叫face1.jpg,因此可得

face2.jpg

7

请找冰箱中隐藏的内容?

用一个strings命令即可查看到特殊字符串

img

pangushicup

8

请找出冰箱中嫌疑人图片MD5值的后六位?

根据案情知嫌疑人是钟无声,因此是这张照片

img
img

882564

9

请找出冰箱最后一次开门时间?

之前提取出来的enc文件中face1.jpg的修改时间即为冰箱最后一次开门时间。

img

15:48

10

默认图片的存储限制大小是多少?

查看前面第二题中face与face之间的间隔具体,即可知道存储限制大小

100KB

11

分析video.E01,被修改的录像md5前5位是?

可以发现存在问题的是20250415文件夹中的233549-00001-M.mp4,录像被往回跳了几秒。

img
img

ea7be