热点

ctf二维码

时间:2010-12-5 17:23:32  作者:时尚   来源:休闲  查看:  评论:0
内容摘要:二维码扫不出来,别急着删图。先看看中间那块定位方块,是不是被人动过手脚——CTF里的二维码,十有八九是这里出了问题。 上周打一场线上赛,题目就给了一张糊成一团的二维码。放大看,三个角上的“回”字定位图

二维码扫不出来,别急着删图。先看看中间那块定位方块,是不是被人动过手脚——CTF里的二维码,十有八九是这里出了问题。 上周打一场线上赛,题目就给了一张糊成一团的二维码。放大看,三个角上的“回”字定位图案缺了一个。手机扫,没反应;微信扫,提示“无法识别”。当时我盯着屏幕看了十分钟,差点以为是自己手机摄像头脏了。后来把图片拖进Photoshop,用矩形选框选中缺失的定位角,复制旁边完好的那个,水平翻转再贴回去,保存,再扫——直接弹出一段base64。 这类题考的就是你对二维码结构的熟悉程度。QR码有三大定位图案,分别在左上、右上、左下。它们是扫描器用来确定方向和畸变的基准点。只要缺一个,机器就懵了。但人眼能看出来,因为剩下的两个角还在那儿,对称关系一目了然。 更阴间的玩法是改掩码。二维码的黑色模块排列有固定规则,生成时会套用八种掩码模式之一。有些出题人把掩码改掉,让图案看起来像一团随机噪点,但纠错级别高的话,信息其实没丢。这时候你得用工具把二维码的矩阵抠出来,手动还原掩码。别嫌麻烦,我见过有人拿Excel一格一格填颜色的,填了半小时,最后扫出来是个压缩包密码。 还有一类题干脆不让你扫,直接给一张截图——二维码中间嵌了个小图标,类似公众号头像那种。这种设计本身不破坏纠错,但图标面积太大就会覆盖数据区。解决办法是把图标抠掉,用周围的背景色填充,再交给解码库跑。Python的pyzbar不行就换OpenCV的QRCodeDetector,再不行就上zbar,总有一个能出结果。 别迷信在线解码网站。有些题故意用高版本QR码,信息密度大,普通网站解析到一半就报错。本地装个zxing-cpp,命令行跑一下,比网页靠谱得多。而且遇到损坏的码,网页工具压根不给中间结果,本地库至少能告诉你哪部分校验失败,帮你定位问题区域。 最坑的一次,我遇到一张二维码,扫描后得到一段URL,点进去是个假页面,页面源码里藏了半段flag。另半段在二维码的纠错码里——需要把图片裁剪到只剩数据区,去掉所有定位和校正图案,然后手动提取剩余模块。那次我用了整整一个晚上,最后发现是出题人把纠错级别从L调到了H,多出来的冗余空间全塞了信息。 说白了,CTF二维码题考的不是扫描,是拆解。你得把一张图当成数据结构来看,知道哪些模块是功能图案,哪些是数据位,哪些是纠错码。工具只是辅助,思路才是关键。下次遇到扫不出来的码,先别怀疑手机,打开十六进制编辑器看看文件头——说不定它根本就不是个真二维码,只是个长得像的图片,里面藏了个压缩包。
最近更新
热门排行
copyright © 2026 powered by 力不从心网   sitemap