题目地址:http://www.shiyanbar.com/ctf/1867

这道题目并不难,就是先用栅栏密码解密,然后再用恺撒密码解密就好。

1.

6代表了栅栏密码的栏数(说实话,一开始我也没看出来,后来是抱着试试的心态用6作栏数解密)。

下面是我写的Python脚本:

import argparse,re,math
def cut_string(string,length):
    textArr=re.findall('.{'+str(length)+'}',string)
    textArr.append(string[len(textArr)*length:])
    return textArr
def rail_fence_encryption(group_char_number,string):
    str_len=len(string)
    TS_list=cut_string(string,group_char_number)#temporary storage
    result_str=''
    for i in range(group_char_number):
        for j in range(len(TS_list)):
            try:
                 result_str=result_str+TS_list[j][i]
            except:
                pass
    return 'Encryption result:'+result_str
def rail_fence_decryption(group_number,string):
    group_char_number=int(math.floor(len(string)/group_number))
    add_char_number=len(string)%group_number
    TS_list1=cut_string(string[:((group_char_number+1)*add_char_number)],group_char_number+1)
    TS_list2=cut_string(string[((group_char_number+1)*add_char_number):],group_char_number)
    TS_list=TS_list1+TS_list2
    result_str=''
    for i in range(group_char_number+1):
        for j in range(len(TS_list)):
            try:
                result_str=result_str+TS_list[j][i]
            except:
                pass
    return 'Decryption result:'+result_str
if __name__ == '__main__':
    parser=argparse.ArgumentParser()
    parser.add_argument("m",choices=['d','e'],help='encipherment/decipherment')
    parser.add_argument('g',type=int,help='group_char_number/group_number')
    parser.add_argument('s',type=str,help='encrypt/decrypt strings')
    args=parser.parse_args()
    if args.g>len(args.s):
        print 'ERROR:Please enter the correct group_char_number/group_number!'
        pass
    else:
        if args.m=='e':
            print rail_fence_encryption(args.g,args.s)
        elif args.m=='d':
            print rail_fence_decryption(args.g,args.s)

使用示例(解密):python 文件名.py d 6 NlEyQd{seft}

2.

我们将NEQ{etlydsf}这段密文放到https://www.cryptool.org/en/cto-ciphers/caesar网站上去解密,当KEY=15时,结果出来了:

提交答案时要将{}里的大写字母转换成小写字母,通过。

困在栅栏里的恺撒WriteUp(附栅栏密码加密解密脚本)的更多相关文章

  1. 围在栅栏中的爱WriteUp(附QWE密码加解密脚本)

    题目的链接:http://www.shiyanbar.com/ctf/1917 1.首先题目给出的是摩尔斯电码: 在下面的网站上解密:https://www.cryptool.org/en/cto-c ...

  2. CTF---密码学入门第四题 困在栅栏里的凯撒

    困在栅栏里的凯撒分值:10 来源: 北邮天枢战队 难度:易 参与人数:4531人 Get Flag:2124人 答题人数:2285人 解题通过率:93% 小白发现了一段很6的字符:NlEyQd{sef ...

  3. 实验吧-密码学-Decode、困在栅栏里的凯撒

    Decode 这是一个多重加密. 0x253464253534253435253335253433253661253435253737253464253531253666253738253464253 ...

  4. 凯撒密码加密解密--JAVA实现(基础)

    凯撒密码一种代换密码,据说凯撒是率先使用加密函的古代将领之一,因此这种加密方法被称为恺撒密码.凯撒密码的基本思想是:通过把字母移动一定的位数来实现加密和解密.明文中的所有字母都在字母表上向后(或向前) ...

  5. 实验吧—密码学——WP之 困在栅栏里的凯撒

    首先我们研究题目.栅栏:凯撒 还发现一个数字“6”,那么我们很容易就有一个解题思路 对这段字符进行栅栏解密再进行凯撒解密 我们都知道,栅栏解密的关键就是栏数,根据题目中我们发现的信息,这段字符串是12 ...

  6. 1009: 恺撒Caesar密码

    1009: 恺撒Caesar密码 时间限制: 10 Sec  内存限制: 128 MB提交: 349  解决: 215[提交][状态][讨论版] 题目描述 Julius Caesar 生活在充满危险和 ...

  7. PythonChallenge 1:恺撒密码的解码

    题目: 解题思路:根据图中的K→M,O→Q,E→G,我们可以发现K,O,E这三个字母都向后移动了2位.据说恺撒率先使用了这一加密方法,因此将其命名为恺撒密码.它的基本思想是:通过把字母移动一定的位数来 ...

  8. 恺撒密码 I Python实现

    '''恺撒密码 I描述凯撒密码是古罗马凯撒大帝用来对军事情报进行加解密的算法,它采用了替换方法对信息中的每一个英文字符循环替换为字母表序列中该字符后面的第三个字符,即,字母表的对应关系如下:原文:A ...

  9. 恺撒密码 I

    恺撒密码 I ‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭ ...

随机推荐

  1. 基础教程:Mac 电脑小白应该了解哪些东西?

    文章素材来源:知乎 文章收录于:风云社区(www.scoee.com),提供1700多款mac软件下载. 本文提供给那些从 PC 阵营初入 Mac 的同学而准备的,我们希望从硬件和软件.设计风格和使用 ...

  2. u-boot(二)makefile

    目录 u-boot(二)makefile 引入 目录结构(1.1.6) 配置文件 目标 配置具体的单板 编译阶段 过程 链接入口 配置链接地址 附录 附录A:mkconfig解析 附录B 链接脚本 t ...

  3. 《Kafka权威指南》读书笔记-操作系统调优篇

    <Kafka权威指南>读书笔记-操作系统调优篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 大部分Linux发行版默认的内核调优参数配置已经能够满足大多数应用程序的运 ...

  4. ES DSL 基础查询语法学习笔记

    1.查询数量 1 2 3 4 5 6 7 curl -XGET 'http://192.168.6.97:9200/_count?pretty' -d ' {     "query" ...

  5. VSCode 配置

    官网 https://code.visualstudio.com/ 便携化 Windows,Linux 在 Code.exe 所在目录创建 data 目录 macOS 在 Code.exe 所在目录创 ...

  6. C#设计模式(6)——原型模式

    1.原型模式介绍 在软件系统开发中,有时候会遇到这样的情况:我们需要用到多个相同实例,最简单直接的方法是通过多次调用new方法来创建相同的实例.如下: Person person=}; Person ...

  7. ACM-ICPC 2018 南京赛区网络预赛 E AC Challenge(状压dp)

    https://nanti.jisuanke.com/t/30994 题意 给你n个题目,对于每个题目,在做这个题目之前,规定了必须先做哪几个题目,第t个做的题目i得分是t×ai+bi问最终的最大得分 ...

  8. Hadoop生态组件的WebUI地址

    ================================Impala 相关================================ Impala的常用端口: jdbc/ODBC 端口: ...

  9. javascript获取值

    <div id='name'>张三</div> $('#name').val() $(name).val() 以上两个都可以得到值,第一种用的比较多.

  10. Newtonsoft.Json序列化字符串-格式化

    转自:https://blog.csdn.net/wlphlj/article/details/51982866最近C#中需要将实体进行json序列化,使用了Newtonsoft.Json publi ...