2025龙信杯个人Wp

ljnljn Lv6

服务器基本没做,时间太赶了www

一、 手机镜像检材 (共24题)

1.​ 分析手机镜像,请问机身的Wi-Fi 信号源的物理地址是什么?[标准格式:01:02:03:04:05:06]

1
00:db:60:6e:86:13

assets/2025龙信杯个人Wp/file-20251109104415030.png

2.​ 分析手机镜像,请问张大的手机号码尾号是3807的手机号码是多少?[标准格式:15599005009]

assets/2025龙信杯个人Wp/file-20251109132015182.png
正则搜索
assets/2025龙信杯个人Wp/file-20251109133930233.png

3.​ 分析手机镜像,其通讯录中号码归属地最多的直辖市是哪里?[标准格式:天津市]

北京市
导出通讯录
assets/2025龙信杯个人Wp/file-20251109084556412.png

  • 北京:出现 32 次
  • 上海:出现 7 次

4.​ 分析手机镜像,嫌疑人最近卸载过的的一款小说APP的名字是什么?[标准格式:繁华付费小说]

阅友免费小说
查看日志
com.yueyou.adreader​ 是最近被卸载的小说APP,原因如下:

  1. 使用频率高:在旧文件中有41次启动记录,使用时间长达511499单位

  2. 完全消失:在新文件中完全不存在该应用

  3. 时间逻辑:旧文件的时间戳(endTime=86399999)早于新文件(endTime=936539)

  4. 应用特征:包名包含 adreader(广告阅读器),是典型的小说应用特征

  5. assets/2025龙信杯个人Wp/file-20251109090034424.png

5.​ 分析手机镜像,嫌疑人使用“逐浪小说”应用最近一次搜索小说书名叫什么?[标准格式:斗破苍穹]

抖音视频里可以听到是火中破

6.​ 分析手机镜像,嫌疑人曾使用“QQ浏览器”使用过的搜索关键词有几个?[标准格式:1个]

猜的

7.​ 分析手机镜像,嫌疑人曾经安装过的一款AI软件登录的用户名是什么?[标准格式:用户123456]

文小言没有
assets/2025龙信杯个人Wp/file-20251109103718926.png
assets/2025龙信杯个人Wp/file-20251109103751945.png

8.​ 接上问,嫌疑人在此AI软件中最后一次提问的内容是什么?[按照实际值填写]

你是谁
assets/2025龙信杯个人Wp/file-20251109103812087.png

9.​ 分析手机镜像,嫌疑人花费多少元购买小说网站源码?[标准格式:2000]

1300
assets/2025龙信杯个人Wp/file-20251109103920003.png
assets/2025龙信杯个人Wp/file-20251109103945799.png
10.​ 接上问,嫌疑人购买的小说网站源码的MD5值后六位是什么?[标准格式:12a34b]
assets/2025龙信杯个人Wp/file-20251109104041646.png

11.​ 分析手机镜像,嫌疑人的虚拟钱包地址是什么?[按照实际值填写]

assets/2025龙信杯个人Wp/file-20251109122421771.png
assets/2025龙信杯个人Wp/file-20251109122345174.png

12.​ 分析手机镜像,嫌疑人购买视频网站源码花费了多少USDT?[标准格式:500]

1000

13.​ 分析手机镜像,其接受过一个远控木马程序(exe),请问其MD5值后六位是多少?[标准格式:12a34b]

assets/2025龙信杯个人Wp/file-20251109103856207.png

14.​ 接上题,该exe使用了哪种压缩方式?[标准格式:TAR]

ZLIB
assets/2025龙信杯个人Wp/file-20251109104947565.png

15.​ 接上题,该exe使用的压缩方式修改了几处特征?[标准格式:5]

3

assets/2025龙信杯个人Wp/file-20251109132401508.png

16.​ 接上题,该exe外联的端口号是多少?[标准格式:3306]

assets/2025龙信杯个人Wp/file-20251109132645316.png
assets/2025龙信杯个人Wp/file-20251109132912618.png

17.​ 接上题,该exe会搜索并加密几种类型的文件?[标准格式:5]

assets/2025龙信杯个人Wp/file-20251109132802175.png

18.​ 接上题,该exe会释放一个新的exe,请问新的exe是用哪种编程语言编写的?[标准格式:php]

assets/2025龙信杯个人Wp/file-20251109104947565.png
进去显示的是c文件,说明释放的是python(猜测)

19.​ 接上题,释放出的exe使用的邮件服务器的授权码是?[标准格式:scxcsaafas]

20.​ 分析手机镜像,嫌疑人发布的抖音作品是参考哪篇文学巨著生成的?[标准格式:三国演义]

钢铁是怎样炼成的
assets/2025龙信杯个人Wp/file-20251109121829410.png
视频里也有提到

21.​ 分析手机镜像,嫌疑人通过抖音发布了几个作品?[标准格式:6]

2
2和3重复,1、5不变
assets/2025龙信杯个人Wp/file-20251109133053129.png

22.​ 接上题,作品ID为 7564293625007115554 的观众浏览量为几次?[标准格式:5]

猜测

23.​ 分析手机镜像,嫌疑人相册中的图片为其非法所得(不考虑重复),请分析其总收益为多少元?[标准格式:12345]

6577
assets/2025龙信杯个人Wp/file-20251109120646878.png

24.​ 分析手机镜像,嫌疑人电脑的开机密码是多少?[按照实际值填写]

assets/2025龙信杯个人Wp/file-20251109104540438.png

二、 Windows检材 (共25题)

1.​ 分析Windows检材,PowerShell中多少个命令关联URL地址(不去重)?[标准格式:123]

5
assets/2025龙信杯个人Wp/file-20251109090919661.png

2.​ 分析Windows检材,VeraCrypt加密容器密码是什么?[标准格式:根据实际值填写]

UJw4FspAsmNVRACWf4GQazvd
windows+v切出剪切板
assets/2025龙信杯个人Wp/file-20251109123830066.png

3.​ 分析Windows检材,加密容器中“密码本.txt”文件的SHA-256哈希值后6位是多少?[标准格式:全大写]

assets/2025龙信杯个人Wp/file-20251109114933177.png
assets/2025龙信杯个人Wp/file-20251109115013462.png

4.​ 分析Windows检材,接上题,根据“密码本.txt”文件对账单数据压缩包进行解密,其密码是多少?[标准格式:根据实际值填写]

VteGElLDQu
assets/2025龙信杯个人Wp/file-20251109115130499.png

5.​ 分析Windows检材,接上题,分析其账单数据中哪个类别的金额最多?[标准格式:根据实际值填写]

小说网站

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
import pandas as pd
import os
from pathlib import Path
import matplotlib.pyplot as plt
import seaborn as sns

# 设置中文字体(解决中文显示问题)
plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号

def analyze_expense_data(file_paths):
"""
分析多个Excel文件中的账单数据
file_paths: Excel文件路径列表
"""

# 读取所有Excel文件
all_data = []

for file_path in file_paths:
try:
# 读取Excel文件
df = pd.read_excel(file_path)

# 检查必要的列是否存在
required_columns = ['时间', '项目', '金额']
if not all(col in df.columns for col in required_columns):
print(f"警告: 文件 {file_path} 缺少必要的列,跳过处理")
continue

# 添加到数据列表
all_data.append(df)
print(f"成功读取文件: {file_path}, 共 {len(df)} 条记录")

except Exception as e:
print(f"读取文件 {file_path} 时出错: {e}")

if not all_data:
print("没有成功读取任何文件")
return None

# 合并所有数据
combined_df = pd.concat(all_data, ignore_index=True)
print(f"\n总共读取 {len(combined_df)} 条账单记录")

# 数据清洗
# 确保金额是数值类型
combined_df['金额'] = pd.to_numeric(combined_df['金额'], errors='coerce')

# 删除金额为NaN或0的记录
cleaned_df = combined_df.dropna(subset=['金额'])
cleaned_df = cleaned_df[cleaned_df['金额'] != 0]

print(f"清洗后有效记录: {len(cleaned_df)} 条")

# 按项目分类汇总金额
category_summary = cleaned_df.groupby('项目')['金额'].agg(['sum', 'count']).reset_index()
category_summary.columns = ['项目', '总金额', '交易笔数']
category_summary = category_summary.sort_values('总金额', ascending=False)

return category_summary, cleaned_df

def visualize_results(category_summary, top_n=10):
"""
可视化分析结果
"""
# 显示前top_n个类别的详细结果
print("\n" + "="*50)
print("账单分类金额汇总(前10名):")
print("="*50)
for i, row in category_summary.head(10).iterrows():
print(f"{i+1:2d}. {row['项目']:<15} 总金额: {row['总金额']:>10.2f} 交易笔数: {row['交易笔数']:>3d}")

# 获取前top_n个类别用于可视化
top_categories = category_summary.head(top_n)

# 创建图表
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(15, 6))

# 柱状图 - 总金额
ax1.barh(top_categories['项目'], top_categories['总金额'], color='skyblue')
ax1.set_xlabel('总金额')
ax1.set_title('各项目消费金额排名(前10名)')
ax1.grid(axis='x', alpha=0.3)

# 饼图 - 金额占比
ax2.pie(top_categories['总金额'], labels=top_categories['项目'], autopct='%1.1f%%', startangle=90)
ax2.set_title('各项目金额占比')

plt.tight_layout()
plt.show()

return top_categories

def get_excel_files(folder_path=None):
"""
获取Excel文件列表
folder_path: 文件夹路径,如果为None则使用当前目录
"""
if folder_path is None:
folder_path = os.getcwd()

# 查找所有Excel文件
excel_files = []
for ext in ['*.xlsx', '*.xls']:
excel_files.extend(Path(folder_path).glob(ext))

return [str(file) for file in excel_files if not file.name.startswith('~')] # 排除临时文件

# 主程序
if __name__ == "__main__":
# 方法1: 自动查找当前目录下的所有Excel文件
excel_files = get_excel_files()

# 方法2: 或者手动指定文件路径
# excel_files = [
# '账单1.xlsx',
# '账单2.xlsx',
# # 添加更多文件路径...
# ]

if not excel_files:
print("在当前目录下未找到Excel文件")
print("请将代码中的excel_files列表替换为您的实际文件路径")
else:
print(f"找到 {len(excel_files)} 个Excel文件: {excel_files}")

# 分析数据
result = analyze_expense_data(excel_files)

if result:
category_summary, cleaned_df = result

# 显示最花钱的项目
top_category = category_summary.iloc[0]
print(f"\n 最花钱的项目是: {top_category['项目']}")
print(f" 总金额: {top_category['总金额']:.2f}")
print(f" 交易笔数: {top_category['交易笔数']}笔")

# 可视化结果
top_categories = visualize_results(category_summary)

# 可选: 保存结果到Excel
output_file = "账单分析结果.xlsx"
with pd.ExcelWriter(output_file) as writer:
category_summary.to_excel(writer, sheet_name='分类汇总', index=False)
cleaned_df.to_excel(writer, sheet_name='原始数据', index=False)
print(f"\n 分析结果已保存到: {output_file}")

assets/2025龙信杯个人Wp/file-20251109115345054.png

6.​ 分析Windows检材,Bitlocker的恢复密钥前6位是什么?[标准格式:123456]

282469
assets/2025龙信杯个人Wp/file-20251109105007792.png
解锁后保存一份密钥
assets/2025龙信杯个人Wp/file-20251109110026564.png

7.​ 分析Windows检材,嫌疑人使用的Windows激活工具的版本是什么?[标准格式:v10.1.1]

v4.2.8
assets/2025龙信杯个人Wp/file-20251109131713689.png

8.​ 分析Windows检材,嫌疑人电脑中安装的加密软件(非VeraCrypt)版本是多少?[标准格式:1.2.3]

1.17.1
assets/2025龙信杯个人Wp/file-20251109105536331.png

9.​ 分析Windows检材,接上题,该加密软件恢复秘钥文件最后一个单词是什么?[标准格式:根据实际值填写]

accent
后面有隐藏的
assets/2025龙信杯个人Wp/file-20251109105616487.png
10.​ 分析Windows检材,mysql的数据库路径是什么?[标准格式:C:\MySQL5.7.26\data]
D:\phpstudy_pro\Extensions\MySQL5.7.26\data
assets/2025龙信杯个人Wp/file-20251109110857612.png

11.​ 分析Windows检材,数据库中novel_id为3的爬虫代码其爬取的网站域名地址是什么?[标准格式:https://www.baidu.com]

https://www.shuzhige.com
assets/2025龙信杯个人Wp/file-20251109111309486.png
assets/2025龙信杯个人Wp/file-20251109111549981.png

12.​ 分析Windows检材,对比数据库与爬去小说数据,数据库中缺少的小说其共有多少章节?[标准格式:123]

13.​ 分析Windows检材,嫌疑人爬取的小说共有多少汉字(包括繁体汉字,不计标点符号)?[标准格式:123]

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
import os
import re
from pathlib import Path

def count_chinese_characters(text):
"""
统计文本中的汉字数量(包括繁体,不计标点符号)
"""
# 匹配汉字的正则表达式(包括简体、繁体和扩展汉字)
chinese_pattern = re.compile(r'[\u4e00-\u9fff\u3400-\u4dbf\uf900-\ufaff]')

# 找到所有汉字字符
chinese_chars = chinese_pattern.findall(text)
return len(chinese_chars)

def analyze_all_novels():
"""
分析所有小说的汉字数量
"""
base_dirs = ['爬取-原本', '爬取-替换']
novel_stats = {} # 存储每本小说的统计信息

for base_dir in base_dirs:
if not os.path.exists(base_dir):
print(f"警告: 目录 '{base_dir}' 不存在")
continue

print(f"正在分析目录: {base_dir}")

# 遍历基础目录下的所有子目录(小说文件夹)
for novel_folder_name in os.listdir(base_dir):
novel_folder_path = os.path.join(base_dir, novel_folder_name)

if not os.path.isdir(novel_folder_path):
continue

print(f" 分析小说: {novel_folder_name}")

# 初始化小说统计信息
if novel_folder_name not in novel_stats:
novel_stats[novel_folder_name] = {
'total_chars': 0,
'file_count': 0,
'chapters': {}
}

# 遍历小说文件夹中的所有txt文件
for root, dirs, files in os.walk(novel_folder_path):
for file in files:
if file.endswith('.txt'):
file_path = os.path.join(root, file)
try:
# 读取文件内容
with open(file_path, 'r', encoding='utf-8') as f:
content = f.read()

# 统计汉字数量
char_count = count_chinese_characters(content)
novel_stats[novel_folder_name]['total_chars'] += char_count
novel_stats[novel_folder_name]['file_count'] += 1
novel_stats[novel_folder_name]['chapters'][file] = char_count

except UnicodeDecodeError:
# 尝试其他编码
try:
with open(file_path, 'r', encoding='gbk') as f:
content = f.read()
char_count = count_chinese_characters(content)
novel_stats[novel_folder_name]['total_chars'] += char_count
novel_stats[novel_folder_name]['file_count'] += 1
novel_stats[novel_folder_name]['chapters'][file] = char_count
except Exception as e:
print(f" 读取文件 {file_path} 时出错: {e}")
except Exception as e:
print(f" 读取文件 {file_path} 时出错: {e}")

return novel_stats

def main():
"""
主函数
"""
print("开始分析所有小说的汉字数量...")
print("=" * 60)

novel_stats = analyze_all_novels()

print("=" * 60)
print("分析结果:")
print("=" * 60)

total_all_chars = 0
total_all_files = 0

# 按小说名称排序输出
for novel_name in sorted(novel_stats.keys()):
stats = novel_stats[novel_name]
total_all_chars += stats['total_chars']
total_all_files += stats['file_count']

print(f"小说《{novel_name}》:")
print(f" 章节文件数: {stats['file_count']}")
print(f" 总汉字数: {stats['total_chars']}")

# 如果需要显示每个章节的字数,可以取消下面的注释
# for chapter, count in stats['chapters'].items():
# print(f" {chapter}: {count} 字")

print()

print("=" * 60)
print("总体统计:")
print(f"分析的小说数量: {len(novel_stats)}")
print(f"总章节文件数: {total_all_files}")
print(f"所有小说的总汉字数量: {total_all_chars}")
print(f"(包括繁体汉字,不计标点符号)")

# 可选:生成详细报告文件
generate_report(novel_stats, total_all_chars, total_all_files)

def generate_report(novel_stats, total_chars, total_files):
"""
生成详细报告文件
"""
with open('小说汉字统计报告.txt', 'w', encoding='utf-8') as f:
f.write("小说汉字统计报告\n")
f.write("=" * 50 + "\n\n")

for novel_name in sorted(novel_stats.keys()):
stats = novel_stats[novel_name]
f.write(f"小说《{novel_name}》:\n")
f.write(f" 章节文件数: {stats['file_count']}\n")
f.write(f" 总汉字数: {stats['total_chars']}\n")

# 按字数排序章节
sorted_chapters = sorted(stats['chapters'].items(), key=lambda x: x[1], reverse=True)
f.write(" 章节字数统计(从多到少):\n")
for chapter, count in sorted_chapters[:10]: # 只显示前10个章节
f.write(f" {chapter}: {count} 字\n")

if len(sorted_chapters) > 10:
f.write(f" ... 还有 {len(sorted_chapters) - 10} 个章节\n")

f.write("\n")

f.write("=" * 50 + "\n")
f.write(f"总体统计:\n")
f.write(f"分析的小说数量: {len(novel_stats)}\n")
f.write(f"总章节文件数: {total_files}\n")
f.write(f"所有小说的总汉字数量: {total_chars}\n")

print(f"详细报告已生成到: 小说汉字统计报告.txt")

if __name__ == "__main__":
main()

2946354
assets/2025龙信杯个人Wp/file-20251109111123537.png

14.​ 分析Windows检材,嫌疑人为躲避侵权,将爬取文本中多个不同汉字分别替换成另一些汉字(如“我”→“窝”),分析共有多少个不同汉字被替换(相同字仅计一次)?[标准格式:123]

4
assets/2025龙信杯个人Wp/file-20251109111404460.png

15.​ 分析Windows检材,对比爬取数据与替换数据,被替换汉字(不去重)数量最多的文件名称是什么?[标准格式:第0001章.txt]

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
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
import os  
import re
from collections import Counter


def get_chinese_characters(text):
"""
提取文本中的所有汉字(包括繁体)
""" chinese_pattern = re.compile(r'[\u4e00-\u9fff\u3400-\u4dbf\uf900-\ufaff]')
return chinese_pattern.findall(text)


def find_most_replaced_file():
"""
找出被替换汉字数量最多的文件
""" original_dir = "爬取-原本"
replaced_dir = "爬取-替换"

if not os.path.exists(original_dir) or not os.path.exists(replaced_dir):
print("错误: 找不到所需的文件夹")
return None, None

# 存储每个文件的替换统计
file_stats = {}

# 遍历所有小说文件夹
for novel_folder in os.listdir(original_dir):
original_novel_path = os.path.join(original_dir, novel_folder)
replaced_novel_path = os.path.join(replaced_dir, novel_folder)

if not os.path.isdir(original_novel_path) or not os.path.exists(replaced_novel_path):
continue

print(f"分析小说: {novel_folder}")

# 获取原版小说所有章节文件路径
original_files = {}
for root, dirs, files in os.walk(original_novel_path):
for file in files:
if file.endswith('.txt'):
file_path = os.path.join(root, file)
# 使用相对路径作为键
rel_path = os.path.relpath(file_path, original_dir)
original_files[file] = (file_path, rel_path)

# 获取替换版小说所有章节文件路径
replaced_files = {}
for root, dirs, files in os.walk(replaced_novel_path):
for file in files:
if file.endswith('.txt'):
file_path = os.path.join(root, file)
replaced_files[file] = file_path

# 比较对应的章节文件
for filename, (original_file_path, rel_path) in original_files.items():
if filename not in replaced_files:
print(f" 警告: 替换版中找不到对应文件: {filename}")
continue

replaced_file_path = replaced_files[filename]

try:
# 读取原版文件
with open(original_file_path, 'r', encoding='utf-8') as f:
original_content = f.read()

# 读取替换版文件
with open(replaced_file_path, 'r', encoding='utf-8') as f:
replaced_content = f.read()

# 提取汉字
original_chars = get_chinese_characters(original_content)
replaced_chars = get_chinese_characters(replaced_content)

# 统计字符频率
original_freq = Counter(original_chars)
replaced_freq = Counter(replaced_chars)

# 计算被替换的汉字数量(不去重)
replaced_count = 0

# 方法1: 基于字符频率变化
for char, count in original_freq.items():
# 如果原版中的字符在替换版中明显减少
if char in replaced_freq and replaced_freq[char] < count * 0.5:
replaced_count += (count - replaced_freq[char])
elif char not in replaced_freq:
replaced_count += count

# 方法2: 基于对齐比较(更精确但更慢)
# 这里使用方法1,因为72K上下文限制,但我们可以尝试简化版的对齐

# 记录文件统计
file_stats[rel_path] = {
'filename': filename,
'novel': novel_folder,
'replaced_count': replaced_count,
'original_char_count': len(original_chars),
'replaced_char_count': len(replaced_chars),
'replacement_rate': replaced_count / len(original_chars) if original_chars else 0
}

print(f" 文件: {filename} - 被替换汉字数: {replaced_count}")

except Exception as e:
print(f" 处理文件 {filename} 时出错: {e}")

# 找出被替换汉字数量最多的文件
if not file_stats:
print("未找到可比较的文件")
return None, None

max_file = max(file_stats.items(), key=lambda x: x[1]['replaced_count'])

return max_file, file_stats


def advanced_alignment_analysis(original_file, replaced_file):
"""
使用对齐算法更精确地比较两个文件
""" try:
with open(original_file, 'r', encoding='utf-8') as f:
original_content = f.read()

with open(replaced_file, 'r', encoding='utf-8') as f:
replaced_content = f.read()

# 提取汉字序列
original_chars = get_chinese_characters(original_content)
replaced_chars = get_chinese_characters(replaced_content)

# 使用简单的序列比对算法
# 这里使用简化的最长公共子序列思路
m, n = len(original_chars), len(replaced_chars)

# 创建DP表
dp = [[0] * (n + 1) for _ in range(m + 1)]

# 填充DP表
for i in range(1, m + 1):
for j in range(1, n + 1):
if original_chars[i - 1] == replaced_chars[j - 1]:
dp[i][j] = dp[i - 1][j - 1] + 1
else:
dp[i][j] = max(dp[i - 1][j], dp[i][j - 1])

# 最长公共子序列长度
lcs_length = dp[m][n]

# 被替换的汉字数量 = 原版总汉字数 - 公共子序列长度
replaced_count = m - lcs_length

return replaced_count, m, n

except Exception as e:
print(f"高级对齐分析出错: {e}")
return 0, 0, 0


def find_most_replaced_with_alignment():
"""
使用对齐算法找出被替换汉字数量最多的文件
""" original_dir = "爬取-原本"
replaced_dir = "爬取-替换"

if not os.path.exists(original_dir) or not os.path.exists(replaced_dir):
print("错误: 找不到所需的文件夹")
return None, None

file_stats = {}

# 遍历所有小说文件夹
for novel_folder in os.listdir(original_dir):
original_novel_path = os.path.join(original_dir, novel_folder)
replaced_novel_path = os.path.join(replaced_dir, novel_folder)

if not os.path.isdir(original_novel_path) or not os.path.exists(replaced_novel_path):
continue

print(f"分析小说: {novel_folder}")

# 获取原版小说所有章节文件路径
original_files = {}
for root, dirs, files in os.walk(original_novel_path):
for file in files:
if file.endswith('.txt'):
file_path = os.path.join(root, file)
rel_path = os.path.relpath(file_path, original_dir)
original_files[file] = (file_path, rel_path)

# 获取替换版小说所有章节文件路径
replaced_files = {}
for root, dirs, files in os.walk(replaced_novel_path):
for file in files:
if file.endswith('.txt'):
file_path = os.path.join(root, file)
replaced_files[file] = file_path

# 比较对应的章节文件
for filename, (original_file_path, rel_path) in original_files.items():
if filename not in replaced_files:
continue

replaced_file_path = replaced_files[filename]

# 使用对齐算法进行比较
replaced_count, original_char_count, replaced_char_count = advanced_alignment_analysis(
original_file_path, replaced_file_path
)

file_stats[rel_path] = {
'filename': filename,
'novel': novel_folder,
'replaced_count': replaced_count,
'original_char_count': original_char_count,
'replaced_char_count': replaced_char_count,
'replacement_rate': replaced_count / original_char_count if original_char_count else 0
}

print(f" 文件: {filename} - 被替换汉字数: {replaced_count}")

# 找出被替换汉字数量最多的文件
if not file_stats:
print("未找到可比较的文件")
return None, None

max_file = max(file_stats.items(), key=lambda x: x[1]['replaced_count'])

return max_file, file_stats


def main():
"""
主函数
""" print("开始分析被替换汉字数量最多的文件...")
print("=" * 60)

# 使用对齐算法进行更精确的分析
max_file, all_stats = find_most_replaced_with_alignment()

if max_file is None:
print("分析失败")
return

file_path, stats = max_file
print("=" * 60)
print("分析结果:")
print("=" * 60)
print(f"被替换汉字数量最多的文件是:")
print(f"文件路径: {file_path}")
print(f"所属小说: {stats['novel']}")
print(f"文件名: {stats['filename']}")
print(f"被替换汉字数量: {stats['replaced_count']}")
print(f"原版总汉字数: {stats['original_char_count']}")
print(f"替换版总汉字数: {stats['replaced_char_count']}")
print(f"替换比例: {stats['replacement_rate']:.2%}")

# 显示前10个被替换汉字最多的文件
print("\n被替换汉字数量前十的文件:")
print("-" * 50)
sorted_files = sorted(all_stats.items(), key=lambda x: x[1]['replaced_count'], reverse=True)[:10]

for i, (path, stat) in enumerate(sorted_files, 1):
print(f"{i}. {stat['novel']}/{stat['filename']}: {stat['replaced_count']} 个汉字被替换")

# 生成详细报告
generate_detailed_report(all_stats, sorted_files)


def generate_detailed_report(all_stats, top_files):
"""
生成详细分析报告
""" with open('文件替换统计报告.txt', 'w', encoding='utf-8') as f:
f.write("文件替换统计报告\n")
f.write("=" * 60 + "\n\n")

f.write("被替换汉字数量最多的文件:\n")
f.write("-" * 40 + "\n")
top_file = top_files[0]
f.write(f"文件路径: {top_file[0]}\n")
f.write(f"所属小说: {top_file[1]['novel']}\n")
f.write(f"文件名: {top_file[1]['filename']}\n")
f.write(f"被替换汉字数量: {top_file[1]['replaced_count']}\n")
f.write(f"原版总汉字数: {top_file[1]['original_char_count']}\n")
f.write(f"替换版总汉字数: {top_file[1]['replaced_char_count']}\n")
f.write(f"替换比例: {top_file[1]['replacement_rate']:.2%}\n\n")

f.write("被替换汉字数量前十的文件:\n")
f.write("-" * 40 + "\n")
for i, (path, stat) in enumerate(top_files, 1):
f.write(f"{i}. {stat['novel']}/{stat['filename']}: {stat['replaced_count']} 个汉字被替换\n")

f.write("\n所有文件的替换统计:\n")
f.write("-" * 40 + "\n")

# 按小说分组统计
novel_stats = {}
for path, stat in all_stats.items():
novel = stat['novel']
if novel not in novel_stats:
novel_stats[novel] = {
'total_replaced': 0,
'total_original': 0,
'file_count': 0
}

novel_stats[novel]['total_replaced'] += stat['replaced_count']
novel_stats[novel]['total_original'] += stat['original_char_count']
novel_stats[novel]['file_count'] += 1

for novel, stats in novel_stats.items():
f.write(f"\n小说《{novel}》: {stats['file_count']} 个文件\n")
f.write(f" 总被替换汉字数: {stats['total_replaced']}\n")
f.write(f" 总原版汉字数: {stats['total_original']}\n")
if stats['total_original'] > 0:
f.write(f" 平均替换比例: {stats['total_replaced'] / stats['total_original']:.2%}\n")


if __name__ == "__main__":
main()

assets/2025龙信杯个人Wp/file-20251109131740433.png

16.​ 分析Windows检材,对比爬取数据与替换数据,是否存在完全没有汉字被替换的文件?若存在,请给出文件的数量;若不存在,请直接填写“否”。[标准格式:123 或者 否]

26

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
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
import os  
import re
from collections import Counter


def get_chinese_characters(text):
"""
提取文本中的所有汉字(包括繁体)
""" chinese_pattern = re.compile(r'[\u4e00-\u9fff\u3400-\u4dbf\uf900-\ufaff]')
return chinese_pattern.findall(text)


def check_unchanged_files():
"""
检查是否存在完全没有汉字被替换的文件
""" original_dir = "爬取-原本"
replaced_dir = "爬取-替换"

if not os.path.exists(original_dir) or not os.path.exists(replaced_dir):
print("错误: 找不到所需的文件夹")
return None

# 存储结果
unchanged_files = [] # 完全没有汉字被替换的文件
changed_files = [] # 有汉字被替换的文件

# 遍历所有小说文件夹
for novel_folder in os.listdir(original_dir):
original_novel_path = os.path.join(original_dir, novel_folder)
replaced_novel_path = os.path.join(replaced_dir, novel_folder)

if not os.path.isdir(original_novel_path) or not os.path.exists(replaced_novel_path):
continue

print(f"检查小说: {novel_folder}")

# 获取原版小说所有章节文件路径
original_files = {}
for root, dirs, files in os.walk(original_novel_path):
for file in files:
if file.endswith('.txt'):
file_path = os.path.join(root, file)
original_files[file] = file_path

# 获取替换版小说所有章节文件路径
replaced_files = {}
for root, dirs, files in os.walk(replaced_novel_path):
for file in files:
if file.endswith('.txt'):
file_path = os.path.join(root, file)
replaced_files[file] = file_path

# 比较对应的章节文件
for filename, original_file_path in original_files.items():
if filename not in replaced_files:
print(f" 警告: 替换版中找不到对应文件: {filename}")
continue

replaced_file_path = replaced_files[filename]

try:
# 读取原版文件
with open(original_file_path, 'r', encoding='utf-8') as f:
original_content = f.read()

# 读取替换版文件
with open(replaced_file_path, 'r', encoding='utf-8') as f:
replaced_content = f.read()

# 提取汉字
original_chars = get_chinese_characters(original_content)
replaced_chars = get_chinese_characters(replaced_content)

# 检查汉字是否完全相同
if original_chars == replaced_chars:
unchanged_files.append({
'novel': novel_folder,
'filename': filename,
'filepath': original_file_path,
'char_count': len(original_chars)
})
print(f" ✓ {filename} - 完全没有汉字被替换")
else:
changed_files.append({
'novel': novel_folder,
'filename': filename,
'filepath': original_file_path
})
print(f" ✗ {filename} - 有汉字被替换")

except Exception as e:
print(f" 处理文件 {filename} 时出错: {e}")

return unchanged_files, changed_files


def main():
"""
主函数
""" print("开始检查是否存在完全没有汉字被替换的文件...")
print("=" * 60)

unchanged_files, changed_files = check_unchanged_files()

print("=" * 60)
print("检查结果:")
print("=" * 60)

if unchanged_files:
print(f"存在完全没有汉字被替换的文件,共有 {len(unchanged_files)} 个文件")
print("\n这些文件是:")
print("-" * 50)

# 按小说分组显示
novels_group = {}
for file_info in unchanged_files:
novel = file_info['novel']
if novel not in novels_group:
novels_group[novel] = []
novels_group[novel].append(file_info)

for novel, files in novels_group.items():
print(f"\n小说《{novel}》中的未替换文件 ({len(files)} 个):")
for file_info in files:
print(f" - {file_info['filename']} (汉字数: {file_info['char_count']})")

# 生成详细报告
generate_detailed_report(unchanged_files, changed_files)
else:
print("否")
# 生成简要报告
with open('文件替换检查报告.txt', 'w', encoding='utf-8') as f:
f.write("文件替换检查报告\n")
f.write("=" * 40 + "\n\n")
f.write("检查结果: 否\n")
f.write("所有文件都有汉字被替换\n")


def generate_detailed_report(unchanged_files, changed_files):
"""
生成详细检查报告
""" with open('文件替换检查报告.txt', 'w', encoding='utf-8') as f:
f.write("文件替换检查报告\n")
f.write("=" * 60 + "\n\n")

f.write(f"检查结果: 存在完全没有汉字被替换的文件\n")
f.write(f"未替换文件数量: {len(unchanged_files)}\n")
f.write(f"已替换文件数量: {len(changed_files)}\n")
f.write(f"总文件数量: {len(unchanged_files) + len(changed_files)}\n")
f.write(f"未替换文件比例: {len(unchanged_files) / (len(unchanged_files) + len(changed_files)):.2%}\n\n")

f.write("完全没有汉字被替换的文件列表:\n")
f.write("-" * 50 + "\n")

# 按小说分组
novels_group = {}
for file_info in unchanged_files:
novel = file_info['novel']
if novel not in novels_group:
novels_group[novel] = []
novels_group[novel].append(file_info)

for novel, files in novels_group.items():
f.write(f"\n小说《{novel}》中的未替换文件 ({len(files)} 个):\n")
for file_info in files:
f.write(f" - {file_info['filename']} (汉字数: {file_info['char_count']})\n")
f.write(f" 文件路径: {file_info['filepath']}\n")

f.write("\n\n有汉字被替换的文件统计:\n")
f.write("-" * 50 + "\n")

# 按小说分组统计已替换文件
changed_novels_group = {}
for file_info in changed_files:
novel = file_info['novel']
if novel not in changed_novels_group:
changed_novels_group[novel] = 0
changed_novels_group[novel] += 1

for novel, count in changed_novels_group.items():
f.write(f"小说《{novel}》: {count} 个文件有汉字被替换\n")

f.write(f"\n总结:\n")
f.write(f"- 完全没有汉字被替换的文件: {len(unchanged_files)} 个\n")
f.write(f"- 有汉字被替换的文件: {len(changed_files)} 个\n")
f.write(f"- 未替换文件比例: {len(unchanged_files) / (len(unchanged_files) + len(changed_files)):.2%}\n")


if __name__ == "__main__":
main()

assets/2025龙信杯个人Wp/file-20251109113316237.png

17.​ 分析Windows检材,嫌疑人使用的默认浏览器名称是什么?[标准格式:Microsoft Edge]

assets/2025龙信杯个人Wp/file-20251109113110121.png

18.​ 分析Windows检材,嫌疑人使用的AI网站的端口是多少?[标准格式:123]

18480
assets/2025龙信杯个人Wp/file-20251109112908298.png

19.​ 分析Windows检材,嫌疑人使用的AI网站登录密码是多少?[标准格式:根据实际值填写]

g123123

20.​ 分析Windows检材,嫌疑人利用在线AI模仿创作的小说,其第五章标题是什么?[标准格式:根据实际值填写]

assets/2025龙信杯个人Wp/file-20251109110134967.png
21.​ 分析Windows检材,终点小说初步要求嫌疑人赔偿的经济损失金额为多少万元人民币?[标准格式:123]
assets/2025龙信杯个人Wp/file-20251109110213771.png

22.​ 分析Windows检材,根据律师函要求,嫌疑人最晚须于几月几日(含当日)前向终点小说提交经审核同意的书面致歉函?[标准格式:10月12日]

10月29日
同上

23.​ 分析Windows检材,嫌疑人NAS映射的盘符是什么?[标准格式:C]

Z
assets/2025龙信杯个人Wp/file-20251109110401610.png

24.​ 分析Windows检材,嫌疑人当时正在阅读的小说叫什么名字?[标准格式:三国演义]

从服务器镜像里找出来neatrreader位置
assets/2025龙信杯个人Wp/file-20251109113927331.png
assets/2025龙信杯个人Wp/file-20251109114253943.png
25.​ 分析Windows检材,接上题,嫌疑人当前看到该小说的第几章?[标准格式:第一章]


三、 服务器检材 (共25题)

1.​ 请分析Exsi虚拟化平台是什么时候安装的?[标准格式:20250102-101258,年月日-时分秒,北京时间]

assets/2025龙信杯个人Wp/file-20251109102946674.png

2.​ 请分析Exsi虚拟化平台虚拟机使用的ISO镜像大小是多少Gigabyte?[标准格式:2.58]

assets/2025龙信杯个人Wp/file-20251109103038676.png
assets/2025龙信杯个人Wp/file-20251109103142627.png

3.​ 请分析nas服务器samba应用完整版本标识为?[标准格式:1.18.26-10.el6_5]

assets/2025龙信杯个人Wp/file-20251109122743383.png
4.​ 请分析nas服务器samba应用共享目录允许访问的用户名为?[标准格式:gys666]

5.​ 嫌疑人在nas服务器中删除了面板日志,请分析其删除日志后第一次访问服务器的目录物理路径是?[标准格式:/var/soft/wegame]

6.​ 某用户在“2025-10-21 18:40:53(北京时间)”向本地AI模型提问,请问其一共提问了几次?[标准格式:5]

7.​ 接上题,第二轮交互总计Token Consumption(令牌消耗)多少个?[标准格式:10]

8.​ 请分析AI模型在创建时注册的管理员账号的头像显示的数字是?[标准格式:15]

9.​ 请分析卡密网站会隔一段时间会自动删除后台管理员登录日志,请问日志最多保存多少小时?[标准格式:10,四舍五入]

10.​ 请分析卡密网站后台管理员登录成功后多少小时内无需重新登录?[标准格式:8]

11.​ 请分析卡密网站微信接口配置的Appsecret是?[标准格式:字符串,全小写]

12.​ 请分析卡密网站管理员注册了一个商户账号,请问商户编号是?[标准格式:10000]

13.​ 接上题,请分析该商户掌灵付微信扫码设置的费率是多少?[标准格式:1%]

14.​ 接上题,不考虑平台提现、网关通道费用的情况下,售卖的卡密共计净利多少人民币?[标准格式:1888.80]

15.​ 嫌疑人将卡密网站的数据定时备份至远程服务器,请问远程服务器IP为?[标准格式:8.8.8.8]

16.​ 嫌疑人供述web虚拟机储存了一本名为“活在明朝”的小说,已经删除忘记怎么恢复了,请找到该小说并分析一共有多少章?[标准格式:100]

17.​ 接上题,小说是什么时候删除的?[标准格式:20250102-101258,年月日-时分秒,北京时间]

18.​ 有一个外部程序“芯龙短片”跟web服务器媒体系统进行通信,请分析其API通信密钥为?[标准格式:字符串,全小写]

19.​ 接上题,媒体系统管理员最后登录的时间为?[标准格式:20250102-101258,年月日-时分秒,北京时间]

20.​ 请分析小说网站“升迁之路”小说第47章叫什么名字?[标准格式:你好呀]

21.​ 请分析小说网站小说后台采集来源地址是?[标准格式:baidu.com]

22.​ 请分析小说网站某用户评论“好东西大家顶”是哪篇小说?[标准格式:斗破苍穹]

23.​ 请分析小说网站对接的第三方支付接口的商户密钥是?[标准格式:完整字符串,请填写实际值]

24.​ 嫌疑人曾在web服务器中特定位置执行采集正版(收费)小说的脚本,请分析采集的正版小说网址是?[标准格式:www.baidu.com]

25.​ 嫌疑人曾在web服务器中备份整套面板数据,请问面板备份数据包SHA256值为?[标准格式:全小写]


四、 流量分析 (共12题)

这里答案非常不确定,wireshark真的不会用www

1.​ 攻击机的ip是多少?[标准格式:111.111.111.111]

192.168.111.1
assets/2025龙信杯个人Wp/file-20251109091405147.png

2.​ 被攻击网站服务器开放端口数量是多少?[标准格式:1]

tcp.flags.syn==1 and tcp.flags.ack==1 and ip.src== 192.168.111.179
在这份数据中,真正开放的端口是目标服务器(192.168.111.179)上的端口,主要包括:

  • 80端口(HTTP服务)- 651个连接
  • 22端口(SSH服务)- 1个连接
  • 25175端口​ - 1个连接

3.​ 攻击者对参数fuzzing成功数量是多少?[标准格式:1]

130389流有tls
assets/2025龙信杯个人Wp/file-20251109094057366.png
成功了

  1. 禁用错误显示和设置时间限制

    • @ini_set("display_errors", "0"):隐藏错误信息,避免暴露给攻击者。

    • @set_time_limit(0):设置脚本执行时间无限制。

  2. 绕过open_basedir限制

    • 代码尝试绕过PHP的open_basedir设置(用于限制文件访问路径)。它通过创建临时目录(.60cc6e2fec9)、改变当前工作目录(chdir)和修改open_basedir设置来突破限制。

    • 具体步骤:

      • 获取当前open_basedir设置。

      • 将路径拆分为数组(使用分隔符; | : /,通过base64解码Lzt8Oi8=得到)。

      • 检查每个路径是否可写,并在可写路径下创建临时目录。

      • 通过多次chdir("..")切换到根目录,从而绕过路径限制。

      • 最后删除临时目录。

  3. 收集系统信息

    • try块中,代码使用PHP内置函数获取以下信息:

      • 当前脚本所在目录(dirname($_SERVER["SCRIPT_FILENAME"]))。

      • 如果是Windows系统,检查所有驱动器字母(C到Z)是否存在。

      • 获取操作系统信息(php_uname())。

      • 获取当前用户信息(通过posix_getpwuidget_current_user())。

    • 这些信息被格式化为字符串,用制表符分隔,然后输出。

  4. 输出包装

    • 输出被包裹在字符串489e75b512a9db1f7中,可能用于在响应中识别数据(类似于Web Shell的常见做法)。
  5. 错误处理

    • 如果发生异常,捕获并输出错误信息(以ERROR://前缀)

assets/2025龙信杯个人Wp/file-20251109094228419.png

  1. 禁用错误显示@ini_set("display_errors", "0")

  2. 绕过安全限制:尝试绕过PHP的open_basedir限制,通过创建临时目录和修改路径设置

  3. 收集系统信息

    • 获取当前脚本目录

    • 检测系统驱动器(Windows系统)

    • 获取操作系统信息(php_uname()

    • 获取当前用户信息

  4. 输出信息:将收集的信息格式化为字符串输出,并用特定标记(94814c978e4957e)包裹
    assets/2025龙信杯个人Wp/file-20251109094312107.png
    assets/2025龙信杯个人Wp/file-20251109094422817.png
    conbaltstrike流量
    assets/2025龙信杯个人Wp/file-20251109094935320.png

4.​ 攻击者在网站服务器上传了一个恶意文件,进行了创建文件操作,新文件名是什么?[标准格式:a.txt]

views.php
assets/2025龙信杯个人Wp/file-20251109135322611.png

5.​ 攻击者对网站内容进行了修改,添加恶意链接是什么?[标准格式:http://www.baidu.com/index.php]

http://jsf34.com/transfer.html
assets/2025龙信杯个人Wp/file-20251109095304182.png

6.​ 分发恶意文件域名是什么?[标准格式:baidu.com]

jsf34.com
assets/2025龙信杯个人Wp/file-20251109135358631.png

7.​ 被控(访问了被修改后的网站)主机ip是什么?[标准格式:111.111.111.111]

192.168.111.167
assets/2025龙信杯个人Wp/file-20251109102321775.png
assets/2025龙信杯个人Wp/file-20251109102328100.png

8.​ 攻击者的license-id是什么?[标准格式:请填写实际值]

9.​ 攻击者的秘密是什么?[标准格式:六位小写字母_六位数字]

10.​ 被控主机运行的存储服务,及其端口是什么?[标准格式:amazon_s3:114]

11.​ 被控主机最终向远控主机发送心跳包时间间隔是多少?[标准格式:1s]

12.​ 被控主机存储桶中文件md5值是什么?[标准格式:32位小写数字字母]

  • 标题: 2025龙信杯个人Wp
  • 作者: ljnljn
  • 创建于 : 2025-11-09 15:45:00
  • 更新于 : 2026-05-25 22:04:46
  • 链接: https://ljnljn2005.github.io/2025/11/09/2025龙信杯个人Wp/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
目录
2025龙信杯个人Wp