题目地址: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. (最小生成树) codeVs 1231 最优布线问题

    题目描述 Description 学校需要将n台计算机连接起来,不同的2台计算机之间的连接费用可能是不同的.为了节省费用,我们考虑采用间接数据传输结束,就是一台计算机可以间接地通过其他计算机实现和另外 ...

  2. STM32F407 ------ 使用定时器实现精确延时

    测试环境:主频168M #include "delay.h" void delay_init() { TIM_TimeBaseInitTypeDef TIM_TimeBaseStr ...

  3. secureCRT恶意终止下次无法启动

    secureCRT使用中恶意中断后会在C:\Documents and Settings\wuyipeng\Application Data目录下产生一个secureCRT.dmp文件 下次正常运行s ...

  4. SQL Server 经典案例

    1.先进先出 例1 WITH [ta] ([商品编号], [批次号], [库存数量]) AS ( UNION ALL UNION ALL UNION ALL ),[tb] ([商品编号], [订货数量 ...

  5. go context

    Context 使用原则 1.不要把Context放在结构体中,要以参数的方式传递 2.以Context作为参数的函数方法,应该把Context作为第一个参数,放在第一位. 3.给一个函数方法传递Co ...

  6. Python package下载中遇到ReadTimeoutError: HTTPSConnectionPool?

    问题描述: Python package下载中遇到ReadTimeoutError: HTTPSConnectionPool? 问题解决: 方法1:继续重复下载 pip install virtual ...

  7. Kafka技术内幕 读书笔记之(二) 生产者——服务端网络连接

    KafkaServer是Kafka服务端的主类, KafkaServer中和网络层有关的服务组件包括 SocketServer.KafkaApis 和 KafkaRequestHandlerPool后 ...

  8. linux 下安装ftp 并远程连接

    1.确认是否已安装 ftp 1 pgrep vsftpd   #查看ftp 服务进程 无结果如下图所示 2.执行安装 1 yum install vsftpd     #安装ftp 服务 3.执行过程 ...

  9. Linux学习笔记:【002】ARM指令流水线

    指令的处理 在CPU中,对于指令的处理一般分为: 1.取指令阶段 取指令(Instruction Fetch,IF)阶段是将一条指令从主存中取到指令寄存器的过程. 程序计数器PC中的数值,用来指示当前 ...

  10. spring+springmvc+ibatis整合注解方式实例【转】

    源自-----> http://shaohan126448.iteye.com/blog/2033563 (1)web.xml文件(Tomcat使用) 服务器根据配置内容初始化spring框架, ...