当前位置: 首页 > news >正文

攻防世界 misc题GFSJ0315-【Miscellaneous-300】

1工具:Advanced Archive Password Recovery、Audacity

2.解题:

下载附件,我们可以看到一个有密码的压缩包,我们发现文件名上的数字就是密码,我们输入后又发现一个有密码的压缩包,我们尝试了几次后意识到进入了一个循环,这是我们想到用python写一个解密脚本,让计算机帮我们进行自动解密,脚本如下

""" @ ScriptName : ZIP 递归解压脚本 @ Description : 当碰到 ZIP 文件下又是 ZIP 文件且不知道嵌套多少层时,可以通过该脚本进行递归解压。本脚本属于一个模板,可以根据需求自由修改 """ import zipfile, os def recursive_extract(file_path): """递归解压ZIP文件""" count = 1 while True: # 检查文件是否存在 if not os.path.exists(file_path): print(f"错误: 文件 {file_path} 不存在") break # 检查文件是否是ZIP文件 if not file_path.endswith('.zip'): print(f"完成: 最终文件 {file_path}") break try: # 读取 zip 文件 zip_file = zipfile.ZipFile(file_path, "r") # 获取ZIP文件中的所有文件 file_list = zip_file.namelist() if not file_list: print(f"错误: ZIP文件 {file_path} 为空") zip_file.close() break # 解压文件,设置解压密码为文件的名称 password = os.path.splitext(os.path.basename(file_path))[0].encode() next_file_name = "" # 下一个文件名 # 尝试不同的密码策略 base_password = os.path.splitext(os.path.basename(file_path))[0] # 从当前文件名和内部文件名提取可能的密码 internal_password = '' if file_list: first_file = file_list[0] if first_file.endswith('.zip'): internal_password = os.path.splitext(os.path.basename(first_file))[0] password_strategies = [ base_password, # 当前文件名(不含扩展名) os.path.basename(file_path), # 当前文件名(含扩展名) base_password.lower(), # 小写 base_password.upper(), # 大写 base_password[::-1], # 反转 internal_password, # 内部文件名(不含扩展名) '46783', '47096', # 从错误信息中看到的文件名 'password', '123456', '12345678', '123456789', '000000', '111111', # 常见密码 'admin', 'root', 'test', 'default' # 常见密码 ] # 去除空密码 password_strategies = [pwd for pwd in password_strategies if pwd] for file in file_list: extracted = False # 尝试所有密码策略 for pwd in password_strategies: try: zip_file.extract(file, pwd=pwd.encode()) print(f"解压文件 {file} 成功,使用密码: {pwd}") next_file_name = file extracted = True break except Exception as e: pass # 密码错误,继续尝试下一个 if not extracted: print(f"解压文件 {file} 失败: 所有密码策略都尝试失败") zip_file.close() # 必须要调用的 # 打印提示信息 print(f"[ {count} ] File {file_path} 处理完毕 => Result File: {next_file_name}") # 只有当成功解压出文件时才删除原文件 if next_file_name: # 删除已经被解压的压缩文件 os.remove(file_path) # 赋值下一个待解压的压缩文件的地址 file_path = next_file_name count += 1 else: # 如果没有成功解压出文件,退出循环 print("错误: 没有成功解压出文件") break except Exception as e: print(f"处理文件 {file_path} 时出错: {e}") break if __name__ == "__main__": # 设置为要解压的ZIP文件路径 file_path = "7d21357e7192456898a50836315852b8.zip" recursive_extract(file_path)

我们用cmd命令运行python文件,如下

我们发现到第1521个文件是无法用该方法解密,我们双击12475.zip,即可在看到该文件,打开后看到一个音频文件,我们打开发现要密码,我们进行爆破,我们打开Advanced Archive Password Recovery,选择好文件位置后,进行如下操作

勾选第二三行,开始和结束为空,然后我们点击上方的长度,如下

我们选择最小为4,最长为6,然后我们点击开始,如下

得到了密码为b0yzz,我们输入后在Audacity里打开文件,如下

正常我们看频谱图,如下

点击后我们得到如下

于是我们得到flag为BallsRealBolls

http://www.jsqmd.com/news/545037/

相关文章:

  • 判断回文字符串
  • Android Gradle - Gradle 自定义插件(Build Script 自定义插件、buildSrc 自定义插件、独立项目自定义插件)
  • 电柜的接地电阻标准通常应不大于4Ω是为什么?
  • RDK X5到手别急着玩,先搞定这3个远程连接和VNC卡顿的坑
  • LibreCAD完整入门指南:如何免费掌握专业2D CAD设计
  • 2026液压升降货梯:解码工业货运三大变革趋势 - 速递信息
  • 攻克直播链接解析难题:DouyinLiveRecorder的全方位解决方案
  • 十分钟搞定智能客服:用快马平台快速原型化你的第一个ibbot机器人
  • OpenClaw+ollama-QwQ-32B实战:自动化处理100份简历筛选
  • 突破3D打印数据壁垒:Blender 3MF格式插件的技术实现与实战应用
  • LyricsX深度使用指南:打造你的macOS桌面歌词体验
  • 别再用错模型了!PX4飞控仿真中,刚体模型和阻尼模型到底怎么选?(附Python/Simulink代码对比)
  • 别再浪费贴图了!UE5 Vertex Color完全指南:从基础混合到进阶高度控制
  • Dlib零基础避坑指南:Windows Python环境一键部署实战
  • 科研图表数据提取的现代解决方案:用WebPlotDigitizer重塑你的数据处理工作流
  • 100行代码掌握扩散模型:Diffusion-Models-pytorch完全指南
  • 手把手教你用PaddleSeg搭建人像抠图API:含MODNet模型调优技巧与避坑指南
  • 打造手游PC级操控:QtScrcpy键鼠映射完全指南
  • Qwen-Image-2512像素艺术未来演进:3D像素体素(Voxel)生成扩展路径
  • RWKV7-1.5B-g1a开源镜像安全实践:模型文件SHA256校验+服务非root运行配置
  • 华为eNSP实验翻车实录:SSH配置最常见的3个坑及一键排查命令
  • 智能EFI构建:OpCore Simplify如何将黑苹果配置效率提升90%
  • 如何在.NET应用中快速集成VLC多媒体播放功能:终极实战指南
  • 探索WiFi CSI感知技术:从信号解码到环境智能的深度剖析
  • 2026北海牙科医院价格表及口腔服务项目指南 - 品牌排行榜
  • 实战避坑指南:在搭载骁龙888的Android设备上调试显示异常(从Gralloc到SurfaceFlinger)
  • 3步玩转AI动画:用MoMask让文字秒变3D人体动作
  • 【生成式AI与分子设计】2.2.2 酶与蛋白质设计专用模型
  • Nano-Banana算法优化实战:提升复杂结构拆解效率
  • 5分钟掌握终极音频切换神器:告别繁琐设置,实现一键切换自由