stegano的writeup

部署运行你感兴趣的模型镜像

    大家好,这次为大家带来的是攻防世界misc部分stegano的writeup。
    先下载附件,是一个pdf文件,打开这个文件。

在这里插入图片描述

    发现这是一篇很普通的英语文章,没有任何关于flag的信息。于是我抱着试试看的心理,全选这个pdf的内容复制,然后粘贴到记事本上。

在这里插入图片描述

    果然,发现一串很有特点的字符:BABA BBB BA BBA ABA AB B AAB ABAA AB B AA BBB BA AAA BBAABB AABA ABAA AB BBA BBBAAA ABBBB BA AAAB ABBBB AAAAA ABBBB BAAA ABAA AAABB BB AAABB AAAAA AAAAA AAAAB BBA AAABB。这串字符只由A和B组成,且以空格分开,长短不一。马上想到摩斯密码,即将A看成点,将B看成杠。于是将这串字符复制粘贴到一个新的记事本上,再用python写个脚本解密一下。

def decoding(strings):
    i = 0
    s = ""
    strings += " "
    de = ""
    dict = {"AB": "A", "BAAA": "B", "BABA": "C", "BAA": "D", "A": "E", "AABA": "F", "BBA": "G", "AAAA": "H", "AA": "I", "ABBB": "J", "BAB": "K", "ABAA": "L", "BB": "M", "BA": "N", "BBB": "O", "ABBA": "P", "BBAB": "Q", "ABA": "R", "AAA": "S", "B": "T", "AAB": "U", "AAAB": "V", "ABB": "W", "BAAB": "X", "BABB": "Y", "BBAA": "Z", "ABBBB": "1", "AABBB": "2", "AAABB": "3", "AAAAB": "4", "AAAAA": "5", "BAAAA": "6", "BBAAA": "7", "BBBAA": "8", "BBBBA": "9", "BBBBB": "0"}
    while i <= len(strings) - 1:
        if strings[i] == " ":
            if len(s) <= 5:
                de += dict[s]
            s = ""
        else:
            s += strings[i]
        i += 1
    return de
path = input("输入TXT文档所在文件夹: ")
filename = input("输入TXT文档名: ")
f = open(path + "\\" + filename + ".txt", "r").read().strip()
flag = decoding(f)
f = open(path + "\\" + "result.txt", "w")
f.write(flag)

    呃,这道题有点小坑,字符串中的BBAABB和BBBAAA是无效的,编脚本时要注意。
    运行一下程序,输出一串字符:CONGRATULATIONSFLAG1NV151BL3M3554G3。所以,flag:1NV151BL3M3554G3。

您可能感兴趣的与本文相关的镜像

Python3.9

Python3.9

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

在CTF(夺旗赛)网络安全竞赛中,隐写术(Stegano)是一个常见的挑战方向,尤其是在Misc(杂项)和Web类题目中。隐写术的核心思想是将敏感信息隐藏在看似无害的文件或数据中,如图片、音频、视频或文本文件等,以达到隐蔽传输或存储的目的。在CTF比赛中,选手需要通过分析文件结构、使用工具或编写脚本,提取出隐藏的信息。 ### 图片隐写术的应用 图片隐写术是CTF比赛中最常见的一种形式,通常通过修改图片的某些像素值或文件结构来隐藏信息。例如,在一个PNG或JPEG文件中,隐藏的信息可能被嵌入到图像的LSB(最低有效位)中,或者通过文件结构的异常部分进行隐藏。这类题目通常要求选手使用工具如StegSolve、binwalk、Wireshark或手动分析文件结构来提取flag。 在某些题目中,选手可能需要检查图片的尺寸是否异常,如宽或高非常小(例如4x4像素),这种情况下图片可能只是伪装,真正的flag可能隐藏在文件的其他部分中。通过使用WinHex等十六进制编辑器,可以查看文件的原始数据,寻找隐藏的字符串或密码 [^2]。 ### 培根密码与摩尔斯电码的隐写术 除了图片隐写术,CTF比赛中还可能涉及文本隐写术,例如使用培根密码(Baconian Cipher)或摩尔斯电码(Morse Code)。培根密码是一种基于二进制编码的隐写术,通常使用两个不同的字符(如A和B)来表示字母。摩尔斯电码则使用点(·)和划(−)的组合来表示字母和数字。在某些题目中,选手可能需要将一段AB字符串转换为摩尔斯电码,然后解码得到flag [^4]。 ### 工具与技巧 - **StegSolve**:用于分析图片隐写术的工具,支持查看图片的各个通道、LSB分析等功能。 - **WinHex**:十六进制编辑器,可用于查看和编辑文件的原始数据,寻找隐藏的字符串或密码。 - **binwalk**:用于分析和提取嵌入在文件中的其他数据,如压缩包或隐藏的文件系统。 - **Wireshark**:用于分析网络流量,寻找隐藏在数据包中的信息。 ### 示例代码 以下是一个简单的Python脚本,用于将培根密码转换为字母: ```python # 培根密码映射表 bacon_map = { "AAAAA": "A", "AAAAB": "B", "AAABA": "C", "AAABB": "D", "AABAA": "E", "AABAB": "F", "AABBA": "G", "AABBB": "H", "ABAAA": "I", "ABAAB": "J", "ABABA": "K", "ABABB": "L", "ABBA": "M", "ABBAB": "N", "ABBBA": "O", "ABBBB": "P", "BAAAA": "Q", "BAAAB": "R", "BAABA": "S", "BAABB": "T", "BABAA": "U", "BABAB": "V", "BABBA": "W", "BABBB": "X", "BBAAA": "Y", "BBAAB": "Z" } # 培根密码解码函数 def decode_baconian(cipher_text): plain_text = "" cipher_text = cipher_text.replace(" ", "") for i in range(0, len(cipher_text), 5): chunk = cipher_text[i:i+5] plain_text += bacon_map.get(chunk, "?") return plain_text # 示例输入 cipher_text = "BABA BBB BA BBA ABA AB B AAB ABAA AB B AA BBB BA AAA BBAABB AABA ABAA AB BBA BBBAAA ABBBB BA AAAB ABBBB AAAAA ABBBB BAAA ABAA AAABB BB AAABB AAAAA AAAAA AAAAB BBA AAABB" plain_text = decode_baconian(cipher_text) print(plain_text) ``` ### 相关问题 1. 如何使用StegSolve分析图片隐写术? 2. 如何在CTF比赛中识别和解码摩尔斯电码? 3. 培根密码的基本原理是什么? 4. 如何使用binwalk提取嵌入在文件中的隐藏数据? 5. 在CTF比赛中,如何判断图片是否包含隐写术?
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值