一  题目描述

ps:本题特别感谢树叶大佬给的一些提示以及WP!欢迎大家关注树木有点绿~~

二 解题过程

下载附件得到zip压缩包

根据作者提示,压缩包注释应该为压缩包密码。

1.压缩包密码

一开始看到这个就想到应该是什么DNA相关解密,但未搜索到相关解码(搜索关键字真的很重要呜呜呜~),后来在GitHub等搜索到两个解码脚本,本质就是一组碱基对会对应一个字母。

但杯具的是解出来的一直不对!好了,直接上真正的解密方法:在线解密网址 https://earthsciweb.org/js/bio/dna-writer/

password

CATISSOCUTE

  

2.分析文件

(1)文件1

使用file命令或者在winhex等十六进制文本编辑器中可以发现是 BPG格式

修改后缀得到一个1.bpg

下载BPGView查看

一脸茫然~~~

经过大佬指点是 猫脸变换

简单了解后我们解密该图片是需要知道变换的一个系数a b,于是查看key.txt文件

(2)key.txt

0001000D91683106019196F4000872003800390035003000340045003400370030004400300041003100410030004100300030003000300030003000300044003400390034003800340034003500320030003000300030003000300034003700300030003000300030003000300038003000380030003200300030003000300030
0001000D91683106019196F4000872003000320034004400430037003500460031003000300030003000300030004200430034003900340034003400310035003400370038003500450044004400390032003400310031003200380035003300300030003800340033004200390031003900460037003300460031003500390046
0001000D91683106019196F400087000380034004600410038003700310032003100370036004500370034003500310032003600450033004400340041003600320044003700390035003500420033003800380032003100310037003900390042004200320045004100420039003500410036004200330042004200450037
0001000D91683106019196F400086E0042003600300039003900330045004500360033004600320036004600440044003100420043004400410042003300300033003300310046004500350045003600440039003300370035004200300036003500360036004100320031003000410033004100420037003100440038
0001000D91683106019196F400087000450033004400370032003100300031004400420034003900310036003900360038003000310033003200340046003800450046003200380034004500420033003500430030004600420036003400450046003100300030004100310042004100300043003200300044004400450042
0001000D91683106019196F400086E0038003400410032004200440038004200350038004200330039004500410043003600450030004100420031003000380044003600440036004600340034004300460044003800310044003000330042003600390034004200430039003400430032003300310033004400340046
0001000D91683106019196F400087000360038003900390031003600440036003200360041003700390035003800460035004300440039003500390042004500320038004300340034003300410045003700360043003100300035003800380030003200380035003900320039003600310042004600430044003400300044
0001000D91683106019196F4000872003100350037004600310033003400310033003800390043004600410042003600410045003500460032003300300038003700370035004500380031004500420032003000330030004300300035003000340037003500310044003900460041003400450045004600320032004600440030
0001000D91683106019196F400085200300037004400450044003500420036003800410033003100350046004400310031003000300030003000300030003000300034003900340035003400450034003400410045003400320036003000380032 

第一眼看到又是???,人麻了。后来也是无意中将这些16进制转为字符发现了隐藏的信息

熟悉的文件头,于是将这些16进制拼接起来为一个新的png文件

又是一脸???

这里说明一下,看 了大佬的wp后发现这段16进制其实是 PDU编码!!一段一段放进去解密就行。

在线解密网站PDU解密

(3)png图片

看到这模糊的像素画,自己也是折腾很久没想到怎么解,即使自己后来有看过一题类似的像素解法也没想起来!!npiet

我就直接给大家一个在线的网站去解了

npiet online

具体原理大家就自行百度哈

amazing!!

(4)show time!

网上找到的一个加解密代码。

import numpy as np
import cv2 def arnold_encode(image, a, b):
# 1:创建新图像
arnold_image = np.zeros(shape=image.shape) # 返回给定形状和类型的新数组,用0填充。img.shape返回img的长宽信息 # 2:计算N
h, w = image.shape[0], image.shape[1] # image.shape[0],image.shape[1],image.shape[2]表示图像长,宽,通道数
N = w # 或N=w # 3:遍历像素坐标变换
for x in range(h):
for y in range(w):
# 按照公式坐标变换
new_x = (1 * x + a * y) % N # 解密:上下对换,a变b,x变y,+变-
new_y = (b * x + (a * b + 1) * y) % N
# new_x = ( x + y) % N #狭义
# new_y = ( x + 2 * y) % N
arnold_image[new_x, new_y, :] = image[x, y, :] arnold_image = np.uint8(arnold_image) return arnold_image def dearnold_encode(image, a, b):
# 1:创建新图像
arnold_image = np.zeros(shape=image.shape) # 返回给定形状和类型的新数组,用0填充。img.shape返回img的长宽信息 # 2:计算N
h, w = image.shape[0], image.shape[1] # image.shape[0],image.shape[1],image.shape[2]表示图像长,宽,通道数
N = w # 或N=w # 3:遍历像素坐标变换
for x in range(h):
for y in range(w):
# 按照公式坐标变换
new_x = ((a * b + 1) * x - b * y) % N
new_y = (-a * x + y) % N
# new_x = (2* x - y) % N # 解密:上下对换,a变b,x变y,+变-
# new_y = ((-1) * x + y) % N
arnold_image[new_x, new_y, :] = image[x, y, :] arnold_image = np.uint8(arnold_image) return arnold_image r = cv2.imread(r'C:\Users\PC\Desktop\cat\out.png')#原始的1.bpg转换得到的文件路径
print(r) # 遍历次数
r = dearnold_encode(r, 13,14)
# r = dearnold_encode(r, 1, 1)
cv2.imshow("arnold", r)
cv2.waitKey(0)
cv2.destroyAllWindows()

  

这里的代码要先把bpg的图片转化为函数支持的图片格式

会在软件所在根目录下得到 out,png

然后 Run

Congratulations!

flag{c159549a-5604-4bb7-8a6e-9db9d8b1426a}

  

ps:曲折的解题过程,太多东西值得学习了,向大佬学习!欢迎大家交流~~

粉色的猫MISC(bugku)的更多相关文章

  1. CTF -bugku-misc(持续更新直到全部刷完)

    1.签到题 点开可见.(这题就不浪费键盘了) CTF- 2.这是一张单纯的图片 图片保存到本地,老规矩,winhex看一看 拉到最后发现 因为做过ctf新手的密码 所以一看就知道unicode 百度站 ...

  2. Bugku - Misc图穷匕见 - Writeup

    Bugku - Misc图穷匕见 - Writeup 原文链接:http://www.cnblogs.com/WangAoBo/p/6950547.html 题目 给了一个jpg图片,下载图片 分析 ...

  3. 攻防世界 Misc 新手练习区 ext3 bugku Writeup

    攻防世界 Misc 新手练习区 ext3 bugku Writeup 题目介绍 题目考点 WinHex工具的使用 linux磁盘挂载mount命令 Writeup 下载附件拖进winhex分析一下,查 ...

  4. bugku猫片

    这个猫片思路清奇,真的让我长知识了. 开局一只猫,挺可爱的.   拿到图片,老套路来一波,首先 winhex打开是正常png图片,binwalk ,stegslove都没有任何收获. 折腾了好久没有任 ...

  5. bugku misc writeup(一个普通的压缩包)

    这个题做了好几个小时,因为没有writeup,一点一点摸索,做题思路写出来给大家交流 首先这是一个zip.rar压缩包,下载下来第一步就是拖进hexeditor中观察,检查下文件的头尾结构是否有问题, ...

  6. BUGKU Misc 普通的二维码

    下载的文件是一个bmp文件,在我的印象中bmp好像没有什么隐写技巧,有些慌张. 既然是二维码,那不妨先扫一下试一试 哈哈!就不告诉你flag在这里! 嗯,意料之中 1首先我把它放到了stegosolv ...

  7. BugKu CTF(杂项篇MISC)-贝斯手

    打开是以下内容 先看一下给了哪些提示 1.介绍 没了?不,拉到最底下还有 2.女神剧照 密码我4不会告诉你的,除非你知道我的女神是哪一年出生的(细品) 大致已经明白了,四位数密码,出生年份 文件是以下 ...

  8. XCTF.MISC 新手篇

    目录 泪目 1.this_is_flag 2.pdf 3.如来十三掌 4.give_you_flag 5.坚持60s 6.gif 7.掀桌子 8.ext3 9.stegano 10.SimpleRAR ...

  9. BugKu-杂项(Misc)的部分Writeup(持续更新)

    第一次写博客,有不好的地方,麻烦大佬指正,我用了些时间把BugKu里的Misc的解题思路和套路整理了一下,发出来分享 各位小可爱们,右边有目录可以快速跳转哦 1.签到题 给了一张二维码,扫描关注就得到 ...

  10. ISCC的 Misc——WP

    比赛已经结束了,自己做出来的题也不是很多,跟大家分享一下 Misc 第一题:What is that? 下载链接; 打开 解压 是一个图片 因为分值很少所以题和简单 观察图片是一个向下指的手 说明fl ...

随机推荐

  1. C# lock 、 Monitor Wait、Pulse和PulseAll 的区别和用法(转载)

    1.Monitor.Wait方法当线程调用 Wait 时,它释放对象的锁并进入对象的等待队列,对象的就绪队列中的下一个线程(如果有)获取锁并拥有对对象的独占使用.Wait()就是交出锁的使用权,使线程 ...

  2. Blazor入门100天 : 身份验证和授权 (2) - 角色/组件/特性/过程逻辑

    目录 建立默认带身份验证 Blazor 程序 `角色/组件/特性/过程逻辑 DB 改 Sqlite 将自定义字段添加到用户表 脚手架拉取IDS文件,本地化资源 freesql 生成实体类,freesq ...

  3. 【分析笔记】SiliconLabs EFR32BG22 Bluetooth Mesh SensorClient 源码分析

    硬件环境: SLTB010A(BRD4184A Rev A02 / EFR32BG22C224F512IM40) 软件环境: SimplicityStudio5/gecko_sdk_3.2.3 分析工 ...

  4. Node.js学习笔记----day05(MongonDB详情)

    认真学习,认真记录,每天都要有进步呀!!! 加油叭!!! 一.es6中的find() 方法的原理 EcmaScript 6 对数组新增了很多方法 比如,find find 接收一个方法作为参数,方法内 ...

  5. Windows离线安装.net Framework3.5

    写在前面 本文主要介绍在Windows离线情况下安装.NETFramework3.5运行环境 使用场景 在日常开发C#程序中,经常会遇到开发过程中无任何问题,但是安装到目标电脑是会无法打开的,如下图 ...

  6. ChatGPT集成之前,让我们复习一下即将过时的知识

    各大搜索引擎集成 ChatGPT 的步调已经在逐步加紧了.也许这将极大的改变搜索引擎的生态.那么就让我们在时代迎来巨变之前,复习一下即将过时的搜索引擎知识吧. 搜索引擎一般查询规则 在搜索引擎的时代, ...

  7. 洛谷p2669

    #include<bits/stdc++.h> using namespace std; int main() { int k,m=0,p=1;//p:给j个金币的第p天(1~j循环变化) ...

  8. ubuntu apt 安装最新版 nodejs

    使用最新版本, 当前是 16.x 的版本. 这里我使用了 LTS 版本. curl -fsSL https://deb.nodesource.com/setup_current.x | sudo -E ...

  9. redis06-事务

    1 基本说明 可以一次执行多个命令,本质是一组命令的集合.一个事务中的所有命令都会序列化,按顺序地串行化执行而不会被其他命令插入,不许加塞. 2 事务相关的几个命令 2.1 MULTI 标记一个事务块 ...

  10. go语言面试

    go面试 基础 = 和 := 的区别? **Go语言中,= 操作符用于赋值,而 := 操作符可以用于声明及赋值. Go 语言支持短变量声明(针对局部变量),以 := 为标志,这里要注意的是,Go 语言 ...