当前位置:   article > 正文

2024盘古石取证比赛(IPA+人工智能)_2024盘古石杯初赛题目

2024盘古石杯初赛题目

目录

题目列表

IPA部分

1. 分析毛雪柳的手机检材,记账 APP 存储记账信息的数据库文件名称是: [ 答案格式:tmp.db ,区分大小写 ][ ★★★★☆ ]

2. 分析毛雪柳的手机检材,记账APP中,2月份总收入金额是多少:[答案格式:1234][★★★★★]

3. 分析毛雪柳的手机检材,手机中团队内部使用的即时通讯软件中,团队老板的邮箱账号是:[答案格式:abc@abc.com][★★★☆☆]

4. 接上题,该内部即时通讯软件中,毛雪柳和老板的私聊频道中,老板加入私聊频道的时间是:[答案格式:2024-01-01-04-05-06][★★★☆☆]

5. 接上题,该私聊频道中,老板最后一次发送聊天内容的时间是:[答案格式:2024-01-01-04-05-06][★★★☆☆]

人工智能部分

1. 分析义言的计算机检材,一共训练了多少个声音模型:[答案格式:123][★★☆☆☆]

2. 分析义言的计算机检材,声音模型voice2,一共训练了多少条声音素材:[答案格式:123][★★☆☆☆]

3. 分析义言的计算机检材,声音模型voice3,一共训练了多少轮:[答案格式:123][★★★☆☆]

4. 分析义言的计算机检材,声音克隆工具推理生成语音界面的监听端口是:[答案格式:1234][★★★★☆]

5. 分析义言的计算机检材,电脑中视频文件有几个被换过脸:[答案格式:10][★★★★★]

找到对应版本后转字节,再放入文件头中

反编译结果

把混淆的代码简单处理一下,xor加密

然后解密之后就有对应的解密版本了仿真进去 把里面的解密一下

6. 分析义言的计算机检材,换脸AI程序默认换脸视频文件名是:[答案格式:test.mp4][★★☆☆☆]

7. 分析义言的计算机检材,换脸AI程序默认换脸图片的文件名称:[答案格式:abc.abc][★★☆☆☆]

8. 分析义言的计算机检材,换脸AI程序模型文件数量是多少个:[答案格式:10][★★☆☆☆]

总结


题目列表

IPA部分

1. 分析毛雪柳的手机检材,记账 APP 存储记账信息的数据库文件名称是: [ 答案格式:tmp.db ,区分大小写 ][ ★★★★☆ ]

通过icost软件可以定位raealm数据库

image

default.realm

2. 分析毛雪柳的手机检材,记账APP中,2月份总收入金额是多少:[答案格式:1234][★★★★★]

下载realm studio打开数据库
https://github.com/realm/realm-studio?tab=readme-ov-file
使用Realm Studio查看,过滤器:type=1 and timestamp >= 1706716800000 and timestamp <= 1709222400000(含义:类型为收入+2~3月)

image

11957

3. 分析毛雪柳的手机检材,手机中团队内部使用的即时通讯软件中,团队老板的邮箱账号是:[答案格式:abc@abc.com][★★★☆☆]

服务器顺下来就知道,也不用看数据库
gxyt@163.com

4. 接上题,该内部即时通讯软件中,毛雪柳和老板的私聊频道中,老板加入私聊频道的时间是:[答案格式:2024-01-01-04-05-06][★★★☆☆]

知道通讯软件是mattermost,之前有导出过数据库
 

image


 

image

image

ctool转换
Ctool

image

2024-04-24-11-59-28

5. 接上题,该私聊频道中,老板最后一次发送聊天内容的时间是:[答案格式:2024-01-01-04-05-06][★★★☆☆]

image

2024-04-25-10-24-50

人工智能部分

1. 分析义言的计算机检材,一共训练了多少个声音模型:[答案格式:123][★★☆☆☆]

火眼分析yiyan计算机发现有4个GPT声音模型
 

image


每一个模型都有一个train.log
 

image


进入虚拟机也可以看到对应文件

image

4

2. 分析义言的计算机检材,声音模型voice2,一共训练了多少条声音素材:[答案格式:123][★★☆☆☆]

文件路径:PC.001/分区11/GPT-SoVITS-beta0217/logs/voice2/3-bert

image

17

3. 分析义言的计算机检材,声音模型voice3,一共训练了多少轮:[答案格式:123][★★★☆☆]

查看train.log

image

8

4. 分析义言的计算机检材,声音克隆工具推理生成语音界面的监听端口是:[答案格式:1234][★★★★☆]

查找GPT-SoVITS-beta0217的配置文件
 

image

image

9874

5. 分析义言的计算机检材,电脑中视频文件有几个被换过脸:[答案格式:10][★★★★★]

非常有意思,这题又遇到逆向了(上次是bitlocker)
1.在输出文件里只能看到一个视频被换过脸
 

image


2.另外的视频通过encrypt.exe加密过,要对该软件进行反编译和反混淆,了解具体加密算法后,自行编写脚本对加密文件解密
 

image


导出文件,用pyinstxtractor进行反编译,获得encrypt.exe_extracted文件夹
 

image


 

image


对应加密方式在z.pyc文件里,要转化为py文件。但是文件改名为z.pyc后有点问题,不能直接转换,要用WinHex修改文件头后,再放入在线网站(https://www.lddgo.net/string/pyc-compile-decompile) 或者工具(uncompyle6/pycdc)反编译
 

image


可以看到文件头有缺失,进行python版本补全

image

找到对应版本后转字节,再放入文件头中
  1. MAGIC_NUMBER = (3413).to_bytes(2, 'little') + b'\r\n'
  2. _RAW_MAGIC_NUMBER = int.from_bytes(MAGIC_NUMBER, 'little') # For import.c
反编译结果
  1. # -*- coding: utf8 -*-
  2. #! /usr/bin/env 3.8.0 (3413)
  3. #coding=utf-8
  4. #source path: z.py
  5. #Compiled at: 1970-01-01 00:00:00
  6. #Powered by BugScaner
  7. #http://tools.bugscaner.com/
  8. #如果觉得不错,请分享给你朋友使用吧!
  9. import os
  10. def xor_process(O0OOO0O0000O000O0, O0OOOOO0OOOO00000):
  11. try:
  12. with open(O0OOO0O0000O000O0, 'rb') as (O0000O0O0000O000O):
  13. O0O0OOO0OOO00OOOO = O0000O0O0000O000O.read()
  14. O00000O00OOOO0O00 = os.path.splitext(os.path.basename(O0OOO0O0000O000O0))[0]
  15. O0000O0OOO00OO000 = bytearray()
  16. for OOO0O0000OOOO0O0O in range(len(O0O0OOO0OOO00OOOO)):
  17. O0000O0OOO00OO000.append(O0O0OOO0OOO00OOOO[OOO0O0000OOOO0O0O] ^ ord(O00000O00OOOO0O00[OOO0O0000OOOO0O0O % len(O00000O00OOOO0O00)]))
  18. else:
  19. O00000O00OO0OOO0O = os.path.join(O0OOOOO0OOOO00000, f"{O00000O00OOOO0O00}-cn{os.path.splitext(O0OOO0O0000O000O0)[1]}")
  20. with open(O00000O00OO0OOO0O, 'wb') as (OO00000O000O00OO0):
  21. OO00000O000O00OO0.write(O0000O0OOO00OO000)
  22. print(f"文件 {O0OOO0O0000O000O0} 处理成功!")
  23. except Exception as OOO0000OOO0O0O0O0:
  24. try:
  25. print(f"处理文件 {O0OOO0O0000O000O0} 出错:{OOO0000OOO0O0O0O0}")
  26. finally:
  27. OOO0000OOO0O0O0O0 = None
  28. del OOO0000OOO0O0O0O0
  29. if __name__ == '__main__':
  30. folder_path = input('请输入要处理的文件夹路径:')
  31. output_folder = input('请输入要保存处理结果的文件夹路径:')
  32. if not os.path.exists(output_folder):
  33. os.makedirs(output_folder)
  34. for root, _, files in os.walk(folder_path):
  35. for file in files:
  36. file_path = os.path.join(root, file)
  37. xor_process(file_path, output_folder)
把混淆的代码简单处理一下,xor加密
  1. def xor_process(file_path, output_folder):
  2. try:
  3. with open(file_path, 'rb') as (fr):
  4. file_data = fr.read()
  5. file_name = os.path.splitext(os.path.basename(file_path))[0]
  6. #file_name = file_name.replace('-cn','')
  7. xor_data = bytearray()
  8. for i in range(len(file_data)):
  9. xor_data.append(file_data[i] ^ ord(file_name[i % len(file_name)]))
  10. else:
  11. output_file = os.path.join(output_folder, f"{file_name}-cn{os.path.splitext(file_path)[1]}")
  12. with open(output_file, 'wb') as (fw):
  13. fw.write(xor_data)
  14. print(f"文件 {file_path} 处理成功!")
  15. except Exception as e:
  16. try:
  17. print(f"处理文件 {file_path} 出错:{e}")
  18. finally:
  19. e = None
  20. del e
然后解密之后就有对应的解密版本了仿真进去 把里面的解密一下
  1. import os
  2. def xor_decrypt(file_path, output_folder):
  3. try:
  4. # 读取加密文件内容
  5. with open(file_path, 'rb') as file:
  6. encrypted_data = file.read()
  7. # 从文件名中移除 '-cn' 并作为解密密钥
  8. filename = os.path.splitext(os.path.basename(file_path))[0].replace('-cn', '')
  9. # 初始化解密数据缓存
  10. decrypted_data = bytearray()
  11. # 对数据进行逐字节解密
  12. for index in range(len(encrypted_data)):
  13. decrypted_data.append(encrypted_data[index] ^ ord(filename[index % len(filename)]))
  14. # 构建解密后文件的输出路径
  15. output_file_path = os.path.join(output_folder, f"{filename}{os.path.splitext(file_path)[1]}")
  16. # 写入解密数据到新文件
  17. with open(output_file_path, 'wb') as output_file:
  18. output_file.write(decrypted_data)
  19. print(f"文件 {file_path} 解密成功!")
  20. except Exception as e:
  21. print(f"处理文件 {file_path} 出错:{e}")
  22. if __name__ == '__main__':
  23. # 获取用户输入
  24. folder_path = input('请输入要解密的文件夹路径:')
  25. output_folder = input('请输入要保存解密结果的文件夹路径:')
  26. # 确保输出文件夹存在
  27. if not os.path.exists(output_folder):
  28. os.makedirs(output_folder)
  29. # 遍历文件夹并解密文件
  30. for root, _, files in os.walk(folder_path):
  31. for file in files:
  32. file_path = os.path.join(root, file)
  33. xor_decrypt(file_path, output_folder)
 

参考文章
py逆向-NSSCTF-[NISACTF 2022]ezpython-CSDN博客
Python Uncompyle6 反编译工具使用 与 Magic Number 详解-CSDN博客
Python 反编译:pyinstxtractor工具和uncompyle6库的使用-CSDN博客

pyinstxtractor下载
PyInstaller Extractor download | SourceForge.net

最后发现一共 1 + 41 个换脸后的视频.

42

6. 分析义言的计算机检材,换脸AI程序默认换脸视频文件名是:[答案格式:test.mp4][★★☆☆☆]

image

target-1080p.mp4

7. 分析义言的计算机检材,换脸AI程序默认换脸图片的文件名称:[答案格式:abc.abc][★★☆☆☆]

根据视频路径去虚拟机里找

image

fc3d6cb14c0d4e52adcf8717f2740b5c.jpeg

8. 分析义言的计算机检材,换脸AI程序模型文件数量是多少个:[答案格式:10][★★☆☆☆]

同样在上述路径下

image

15

总结

人工智能部分
分为声音模型和AI换脸,在火眼中如果找到对应路径,在虚拟机中可以较容易找到答案,主要考察信息检索能力。难点在于第五题的逆向分析,要考虑如何还原换脸视频。这题感觉和ctf比赛的逆向题目流程一模一样——反编译,反混淆,修改文件头进行修复……
IPA部分
IPA这些题目和手机取证差不多,都是在数据库里找信息。第三题可以通过其他题目找到的信息回答。主要学习了realm数据库的查找,以及realm studio的安装和使用。

又是收获满满的一天!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/796406
推荐阅读
相关标签
  

闽ICP备14008679号