题目地址: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. Vue(基础六)_嵌套路由(续)

    一.前言                  1.路由嵌套里面的公共路由                  2.keep-alive路由缓存                  3.导航守卫 二.主要内容 ...

  2. [USACO07NOV] Milking Time

    题目链接 动态规划转化成 DAG 然后拓扑求解的思路 虽然很简单不过感觉这个新思路会很有用! 如果两个事件互不影响并且有先后关系,就可以连一条有向边,跑最长路可以得到最后的最优解 实际上这还是个背包… ...

  3. PHP-FIG - PHP 标准规范

    转自:https://psr.phphub.org/ PHP 标准规范 PSR 是 PHP Standard Recommendations 的简写,由 PHP FIG 组织制定的 PHP 规范,是 ...

  4. python机器学习-sklearn挖掘乳腺癌细胞(四)

    python机器学习-sklearn挖掘乳腺癌细胞( 博主亲自录制) 网易云观看地址 https://study.163.com/course/introduction.htm?courseId=10 ...

  5. shell关于文件操作

    一.如何将一个十进制的整数用2进制表示出来? echo "obase=2;50" | bc 二.Linux下经常需要删除空白行,grep,sed,awk,tr等工具均可实现 gre ...

  6. Java Web之HTML5

    终于学到Java Web这一章节了,首先来了解一下HTML5的一些新知识点吧,我直接贴出HTML5代码看一下: <!DOCTYPE html> <html lang="en ...

  7. Linux记录-JMX监控Tomcat上传到falcon

    1.登录测试服务器xxxxxx xxxxxx su root输入xxxx 2.先修改Tomcat的启动脚本,(linux下为catalina.sh),添加以下内容: CATALINA_OPTS=&qu ...

  8. 细说log4j之log4j 1.x

    官网:http://logging.apache.org/log4j/1.2/manual.html 三大组件:loggers,appenders,layouts. LoggersLogger是一个层 ...

  9. webpack 内存溢出 Allocation failed - JavaScript heap out of memory

    项目中,当组件文件过多,webpack-dev-server 编译时,容易内存溢出, 在 \node_modules\.bin\webpack-dev-server.cmd 加以下红色配置,暂可解决 ...

  10. (一)python的前世今生

    一:Python介绍 python的创始人为吉多·范罗苏姆(Guido van Rossum)(目前还活着),诞生于1989年,是一个脚本解释程序,由于python语言结构优美,清晰简单,随着人工智能 ...