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

NSSCTF-[羊城杯 2023]程序猿Quby

下载附件解压得到rar文件,里面有一张png图片

对图片进行分析,发现有rar压缩包,用kali里binwalk命令进行分离

发现压缩包都被加密了,结合题目可以联想出夏多加密

将时间按顺序归类,发现每个序号的时间为1.2.3.4,跟夏多加密规律一样

题目告诉秒针和分针都坏了,所以只用关心时针即可

得到密码

解密就得到 H A V E A N I C E D A Y

但他并不是压缩包的密码,所以猜测有密码隐写

用cloacked-pixel分析图片

得到密码 we1c0met0ycbCTF!!!

得到两个xlsx文件和一个wav音频文件

二值矩阵

因为只有两个数字在不断重复出现,所以尝试布尔数,将5.53改为1 4.46改为0

然后上脚本

 def merge_matrices(submatrix1_file, submatrix2_file, merged_file):

     # 读取子矩阵文件1

     with open(submatrix1_file, 'r') as f1:

         submatrix1_lines = f1.readlines()

 ​

     # 读取子矩阵文件2

     with open(submatrix2_file, 'r') as f2:

         submatrix2_lines = f2.readlines()

 ​

     # 获取子矩阵行数和列数

     rows = len(submatrix1_lines)

     cols = len(submatrix1_lines[0].strip()) + len(submatrix2_lines[0].strip())

 ​

     # 检查子矩阵尺寸是否符合要求

     if cols != 126:

         print("错误:子矩阵尺寸不正确。")

         return

 ​

     # 合并子矩阵

     merged_matrix = []

     for i in range(rows):

         combined_row = submatrix1_lines[i].strip() + submatrix2_lines[i].strip()

         merged_matrix.append(combined_row)

 ​

     # 将合并后的矩阵写入新文件

     with open(merged_file, 'w') as f:

         for row in merged_matrix:

             f.write(row + '\n')

 ​

     print("合并完成。")

 ​

 # 调用函数并传入文件名

 merge_matrices('test1.txt', 'test2.txt', 'merged_matrix.txt')

转为黑白像素点构图

 import numpy as np

 from PIL import Image

 ​

 def restore_image_from_file(file_path):

     with open(file_path, "r") as file:

         lines = file.readlines()

 ​

     binary_matrix = []

     for line in lines:

         row = [int(value) for value in line.strip()]

         binary_matrix.append(row)

 ​

     height = len(binary_matrix)

     width = len(binary_matrix[0])

 ​

     image = Image.new("L", (width, height))

     pixels = image.load()

 ​

     for y in range(height):

         for x in range(width):

             if binary_matrix[y][x] == 0:  # 白色像素

                 pixels[x, y] = 255

             else:  # 黑色像素

                 pixels[x, y] = 0

 ​

     return image

 ​

 # 使用示例

 file_path = "3.txt"  # 二值化矩阵文件路径

 restored_image = restore_image_from_file(file_path)

 restored_image.show()

脚本参考@*鱼香Rose

运行得到密码

 w0wyoudo4goodj0b

两个文件,fl4g.txt有两层编码,解密得到

 sQ+3ja02RchXLUFmNSZoYPlr8e/HVqxwfWtd7pnTADK15Evi9kGOMgbuIzyB64CJ

将刚刚解出的字符串作为新表替换

NSSCTF{Qu6y_d0_not_lik3_w0rking_4t_all}

相关文章:

  • 建筑机械员(建筑施工机械管理人员)考试练习题
  • unordered_set与unordered_map实现详解剖析
  • 通过设备节点获取已注册的 i2c client
  • Vue3 Composition API: 企业级应用最佳实践方案
  • 什么是电离层闪烁
  • YOLOv8损失函数代码详解(示例展示数据变换过程)
  • 模型常见损失函数、softmax、交叉熵损失函数
  • python中的numpy(数组)
  • 2025.5个人感悟
  • leetcode hot100刷题日记——16.全排列
  • 水利水电安全员B证职责
  • 信息论基础
  • OpenLayers 加载导航与基本操作控件
  • Eclipse中设置Java程序运行时的JVM参数
  • 使用Python操作Mysql数据库
  • 赋能电力FTU,飞凌嵌入式RK3506核心板AMP双系统技术应用解析
  • 解决:ERROR: No matching distribution found for matplotlib= =3.8.3
  • SQL每日一练(2)
  • 【esp32 WIFI连接】-STA模式
  • SpringBoot多环境配置文件切换
  • 腾度网站建设专家/百度推广怎么做的
  • 大连手机自适应网站建设价格/看颜色应该搜索哪些词汇
  • 一个网站怎么推广/好消息tvapp电视版
  • 太原企业网站模板建站/湖南企业竞价优化服务
  • 武汉网站建设报价/企业seo外包公司
  • 医院网站建设步骤/国内新闻大事20条