MISC-吹着贝斯扫二维码
题目
解压附件,有36个文件和一个压缩包,压缩包带密码和备注

分析
文件类型
随便打开一个不明文件,是jpg图片啊(FF D8 FF)

改一个试试,有一个小块二维码

后面的估计是是二维码碎片,脚本统一改一下
# coding=utf-8 import os #将无后缀的文件加上.jpg
dir_list = os.listdir('./')
#print(dir_list)
for file in dir_list:
if '.' not in file:
# print(file)
os.rename(file, file+'.jpg')
果不其然,就是二维码碎片了,一共36张

图片拼接
可以手动ps拼一下图,也就36张嘛
但是本人比较懒,不想干看起来不是很聪明的行为
于是学习了一下图片拼接的脚本
分析一下文件原始数据可以发现,最后告诉我们的序号,比如这张是第34张

思路:
- 将文件按顺序排列成一个列表 all_path
- 定义横纵图片个数,以及排列方式(横到纵)
脚本如下,虽然成功了,但不大简洁优化,欢迎大佬帮忙指点一二
# coding=utf-8
# python2 import os
from PIL import Image #图片压缩后的大小
width_i = 134
height_i = 130 #每行每列显示图片数量
row_max = 6
line_max = 6 all_path = list()
num = 0
pic_max = line_max * row_max #文件夹路径
dir_name = r"./" #获取文件夹下文件名的列表
dir_list = os.listdir('./') #将文件列表重新排序(按文件原始数据末尾的数字)
for i in range(36,0,-1):
# print(i)
for file in dir_list:
if '.jpg' in file:
f=open(file ,'rb')
n1 = f.read()
n2 = n1[-2:]
# print()
if i > 9:
if str(i) in n2:
# all_path.append(os.path.join(file))
all_path.insert(0,os.path.join(file))
# print(all_path)
break
else:
if 'd9' in n1.encode('hex')[-4:] and str(i) in n2:
# print(file)
all_path.insert(0,os.path.join(file))
break
print(all_path) toImage = Image.new('RGBA',(width_i*line_max,height_i*row_max)) #拼接图片
for i in range(row_max):
for j in range(line_max):
# 每次打开图片绝对路路径列表的第一张图片
pic_fole_head = Image.open(all_path[num])
# 获取图片的尺寸
wihth,height = pic_fole_head.size
# 按照指定的尺寸,给图片重新赋值,<PIL.Image.Image image mode=RGB size=200x200 at 0x127B7978>
tmppic = pic_fole_head.resize((width_i, height_i))
# 计算每个图片的左上角的坐标点(0, 0),(0, 200),(0, 400),(200, 0),(200, 200)。。。。(400, 400)
loc = (int(j % line_max * width_i), int(i % line_max * height_i))
print(loc)
# print("第{}张图的存放位置".format(num),loc)
toImage.paste(tmppic, loc)
num = num + 1 if num >= len(all_path):
break
if num >= pic_max:
break # print(toImage.size)
toImage.save('merged.png')
拼接结果如下,还算整齐:

密码
flag.zip里的备注:
GNATOMJVIQZUKNJXGRCTGNRTGI3EMNZTGNBTKRJWGI2UIMRRGNBDEQZWGI3DKMSFGNCDMRJTII3TMNBQGM4TERRTGEZTOMRXGQYDGOBWGI2DCNBY
二维码扫描结果:
BASE Family Bucket ??? 85->64->85->13->16->32

意思应该是 base全家桶?85->64->85->13->16->32加密
那我们就倒过来解一下,这里13是Rot13吧,似乎没见过base13
strings:
GNATOMJVIQZUKNJXGRCTGNRTGI3EMNZTGNBTKRJWGI2UIMRRGNBDEQZWGI3DKMSFGNCDMRJTII3TMNBQGM4TERRTGEZTOMRXGQYDGOBWGI2DCNBY
base32_decode:
3A715D3E574E36326F733C5E625D213B2C62652E3D6E3B7640392F3137274038624148
base16_decode:
:q]>WN62os<^b]!;,be.=n;v@9/17'@8bAH
Rot13_decode:
:d]>JA62bf<^o]!;,or.=a;i@9/17'@8oNU
base85_decode:
PCtvdWU4VFJnQUByYy4mK1lraTA=
base64_decode:
<+oue8TRgA@rc.&+Yki0
base85_decode:
ThisIsSecret!233
解压一下,flag{Qr_Is_MeAn1nGfuL}
MISC-吹着贝斯扫二维码的更多相关文章
- 网页授权——扫二维码获取openid
最近做微信公众平台开发项目时遇到这样一个功能需求:生成一个特定url的二维码,用户扫描二维码后跳转到这个url指定的页面,并在这个页面获得用户的openid.这个功能主要涉及到两方面的技术:生成二维码 ...
- 很多人很想知道怎么扫一扫二维码就能打开网站,就能添加联系人,就能链接wifi,今天说下这些格式,明天做个demo
有些功能部分手机不能使用,网站,通讯录,wifi基本上每个手机都可以使用. 在看之前你可以扫一扫下面几个二维码先看看效果: 1.二维码生成 网址 (URL) 包含网址的 二维码生成 是大家平时最常接触 ...
- 扫二维码下载apk并统计被扫描次数(及微信屏蔽下载解决方案)
转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/5395715.html 需求:想让用户扫描一个二维码就能下载APP,并统计被扫描次数. 两种实现方法: 1.一 ...
- android DialogFragment 实现Dialog展示扫二维码图片展示
近期开发项目,做个按钮点击弹出展示微信二维码关注微信公众号的展示框,于是想到DialogFragment,期间对Dialog的title的底框字体颜色做出相关设置,记录如下: 下面是 DialogFr ...
- vue 实现 扫二维码 功能
前段时间一直在研究,如何通过 vue 调用 相机 实现 扫一扫的功能,但是查看文档发现,需要获取 getUserMedia 的属性值,但存在兼容性问题. 退而求其次,通过 h5plus 来实现. 1. ...
- 扫二维码登录实现原理,php版
基础的逻辑图就是这样,但是实际情况还是有几种可能 比如QQ登录,微信登录,微博登录,基本设计都差不多,根据实际情况会有一些差异 问题是,如果设计合理的接口在保证数据的安全性和快速性 设计到的技术不复杂 ...
- uniapp 扫二维码跳转
在h5和wxapp中 生成qrcode的组件 https://ext.dcloud.net.cn/plugin?id=39 wx小程序扫二位码文档 生成链接时 computed: { ...mapSt ...
- Android | 教你如何开发扫二维码功能
前言 最近要做一个停车场扫码收费的app,在网上搜了一圈,首先接触到了ZXing,上手试了下,集成过程不复杂,但是感觉效果欠佳,比如距离稍微远点儿就扫不出来了,另外角度对的不好,反光或者光线比较暗 ...
- ios ZBar扫二维码奇奇怪怪的错误
Undefined symbols for architecture armv7: "_CVPixelBufferGetHeight", referenced from: -[ZB ...
随机推荐
- 「NOIP2016」天天爱跑步 题解
(声明:图片来源于网络) 「NOIP2016」天天爱跑步 题解 题目TP门 题目 题目描述 小c同学认为跑步非常有趣,于是决定制作一款叫做<天天爱跑步>的游戏.<天天爱跑步>是 ...
- Linux提权(持续更新)
利用/etc/passwd提权 个人认为,这种提权方式在现实场景中难以实现,条件太过苛刻,但是建立Linux下的隐藏账户是个不错的选择,灵感来自:https://www.hackingarticles ...
- RSA(攻防世界)Rsa256 -- cr4-poor-rsa
RSA256 [攻防世界] 题目链接 [RSA256] 下载附件得到两个文件. 猜测第一个 txt 文件 可能为RSA加密密文 ,第二个估计就是密钥.依次打开看看: 果然如此. 目标: 寻找 n.e. ...
- 20-SAP PI开发手册-ERP发布服务供外部系统调用(sproxy代理类)
一. 接口内容 接口详细信息 1. 字段对应关系 发送字段对应关系 返回字段对应关系 2. 报文信息 传入报文(报文结构,外围系统提供) 1 <?xml version=" ...
- 手把手教你用思维导图软件iMindMap制作计划表
在日常生活中小编也经常使用思维导图软件iMindMap来创建思维导图以规划工作及学习的安排.尤其是时间安排类型的思维导图,能极大程度的节约我们的时间,接下来就由小编以自己假期的社会实践向大家分享一下怎 ...
- Win搭建JAVA环境
一:下载JDK 下载链接:https://www.oracle.com/java/technologies/javase-downloads.html 选择你的系统环境进行下载 二:安装JDK 直接运 ...
- 安装Linux软件时遇到这个问题,如何解决?
提示 Could not get lock /var/lib/dpkg/lock 报错? 有些小伙伴在使用 apt 包管理器更新或安装软件时,可能会遇到过诸如以下的错误提示: E: Could not ...
- Java lambda 分组后多列求和
主要思路是reducing,可以像sql一样分组后多列求和处理成新对象等: select code,max(name)as name,sum(chengJi)as chengJi,sum(age)as ...
- C语言printf()函数的格式化字符串
原文链接:https://www.runoob.com/cprogramming/c-function-printf.html#include<stdio.h> #include<s ...
- 为什么SimpleDateFormat不是线程安全的?
一.前言 日期的转换与格式化在项目中应该是比较常用的了,最近同事小刚出去面试实在是没想到被 SimpleDateFormat 给摆了一道... 面试官:项目中的日期转换怎么用的?SimpleDateF ...