IceCTF Crypto Substituted

摘要:
(“k”,('e',('j',('d',('a',('s',(''c',('),('b',(''),(''x',('.L',(‘P',('s),('',(''')

题目

Lw!

Gyzvecy ke WvyVKT!

W'zz by reso dsbdkwksky tzjq teo kly ujr. Teo keujr, gy joy dksurwmq bjdwv vorakeqojalr jmu wkd jaazwvjkwemd. Vorakeqojalr ljd j zemq lwdkeor, jzklesql gwkl kly juxymk et vecaskyod wk ljd qekkym oyjzzr vecazwvjkyu. Decy dwcazy ezu vwalyod joy kly Vjydjo vwalyo, kly Xwqymyoy vwalyo, kly dsbdkwkskwem vwalyo, glwvl wd klwd emy, jmu de em. Jzcedk jzz et klydy vwalyod joy yjdwzr boeiym keujr gwkl kly lyza et vecaskyod. Decy myg ymvorakwem cykleud joy JYD, kly vsooymk dkjmujou teo ymvorakwem, jzemq gwkl ODJ. Vorakeqojalr wd j xjdk twyzu jmu wd xyor wmkyoydkwmq klesql. De iwvi bjvi, oyju sa em decy veez vwalyod jmu ljxy tsm!

El jmu teo reso oyveoud cr mjcy wd WvyVKT.

分析与解题过程

  1. 单表代替密码,先统计一下字母出现的频率。由于这段文本大写字母较少,故不做大小写的统一直接统计了,代码如下:
c = "Lw!
Gyzvecy ke WvyVKT!
W'zz by reso dsbdkwksky tzjq teo kly ujr. Teo keujr, gy joy dksurwmq bjdwv vorakeqojalr jmu wkd jaazwvjkwemd. Vorakeqojalr ljd j zemq lwdkeor, jzklesql gwkl kly juxymk et vecaskyod wk ljd qekkym oyjzzr vecazwvjkyu. Decy dwcazy ezu vwalyod joy kly Vjydjo vwalyo, kly Xwqymyoy vwalyo, kly dsbdkwkskwem vwalyo, glwvl wd klwd emy, jmu de em. Jzcedk jzz et klydy vwalyod joy yjdwzr boeiym keujr gwkl kly lyza et vecaskyod. Decy myg ymvorakwem cykleud joy JYD, kly vsooymk dkjmujou teo ymvorakwem, jzemq gwkl ODJ. Vorakeqojalr wd j xjdk twyzu jmu wd xyor wmkyoydkwmq klesql. De iwvi bjvi, oyju sa em decy veez vwalyod jmu ljxy tsm!
El jmu teo reso oyveoud cr mjcy wd WvyVKT{jzgjrd_zwdkym_ke_reso_dsbdkwksky_tzjqd}."

upperLetter = []
lowerLetter = []
for i in range(65,91):
    upperLetter.append(chr(i))
for j in range(97,123):
    lowerLetter.append(chr(j))
lst = upperLetter + lowerLetter
d = dict.fromkeys(lst,0)
print(d)
for i in c:
    if i in lst:
        d.update({i:int(d.get(i))+1})
    else:
        continue
print(d)
d = sorted(d.items(),key=lambda item:item[1],reverse=True)
print(d)

得到统计结果为:

[('y', 59), ('k', 51), ('e', 46), ('j', 42), ('o', 40), ('d', 38), ('w', 38), ('l', 34), ('m', 29), ('v', 24), ('z', 23), ('a', 22), ('r', 21), ('u', 18), ('s', 17), ('q', 13), ('c', 12), ('t', 10), ('b', 7), ('g', 7), ('D', 5), ('V', 5), ('i', 4), ('x', 4), ('J', 3), ('T', 3), ('W', 3), ('K', 2), ('E', 1), ('G', 1), ('L', 1), ('O', 1), ('X', 1), ('Y', 1), ('A', 0), ('B', 0), ('C', 0), ('F', 0), ('H', 0), ('I', 0), ('M', 0), ('N', 0), ('P', 0), ('Q', 0), ('R', 0), ('S', 0), ('U', 0), ('Z', 0), ('f', 0), ('h', 0), ('n', 0), ('p', 0)]

  1. 所以基本确定y对应e,k对应t。
    此外从密文中我们可以看到,出现了多次kly的组合,因此l基本可以确定是h。
    然后又发现有klydy和klwd,因此d对应s,w对应i。
    又有注意到有个单字母的词j,所以j应该对应i或者a,因为i以被确定过,所以j对应a。
    有De,其中D对应S,所以e对应o。
  2. 发现最后的flag开头是WvyVKT,而给的字符串开头有Gyzvecy ke WvyVKT!这里的ke对应to,所以判定这应该是Welcome to *
    所以g对用w。
    z对应l
    v对应c
    所以WvyVKT应为IceCTF,故T对应F。
  3. 这个时候flag括号里的内容已经是alwars_listem_to_roso_ssbstitste_flaqs了,所以r应当对应y(always),m对应n(listen),s对应u(substitute),q对应g(flags)。再做替换
  4. 这次替换后,我们在结果中找到
    IceCTF Crypto Substituted第1张
    所以应有o对应r
  5. 此次输出结果已将flag括号内所有字符都解出来了:always_listen_to_your_substitute_flags,加上以上我们已经得到的开头则有IceCTF
c = "Lw!
Gyzvecy ke WvyVKT!
W'zz by reso dsbdkwksky tzjq teo kly ujr. Teo keujr, gy joy dksurwmq bjdwv vorakeqojalr jmu wkd jaazwvjkwemd. Vorakeqojalr ljd j zemq lwdkeor, jzklesql gwkl kly juxymk et vecaskyod wk ljd qekkym oyjzzr vecazwvjkyu. Decy dwcazy ezu vwalyod joy kly Vjydjo vwalyo, kly Xwqymyoy vwalyo, kly dsbdkwkskwem vwalyo, glwvl wd klwd emy, jmu de em. Jzcedk jzz et klydy vwalyod joy yjdwzr boeiym keujr gwkl kly lyza et vecaskyod. Decy myg ymvorakwem cykleud joy JYD, kly vsooymk dkjmujou teo ymvorakwem, jzemq gwkl ODJ. Vorakeqojalr wd j xjdk twyzu jmu wd xyor wmkyoydkwmq klesql. De iwvi bjvi, oyju sa em decy veez vwalyod jmu ljxy tsm!
El jmu teo reso oyveoud cr mjcy wd WvyVKT{jzgjrd_zwdkym_ke_reso_dsbdkwksky_tzjqd}."

upperLetter = []
lowerLetter = []
for i in range(65,91):
    upperLetter.append(chr(i))
for j in range(97,123):
    lowerLetter.append(chr(j))
lst = upperLetter + lowerLetter
d = dict.fromkeys(lst,0)
for i in c:
    if i in lst:
        d.update({i:int(d.get(i))+1})
    else:
        continue
print(d)
d = sorted(d.items(),key=lambda item:item[1],reverse=True)
print(d)

m = ""
for i in c:
    if i == 'y':
        i = 'e'
    elif i == 'k':
        i = 't'
    elif i == 'l':
        i = 'h'
    elif i == 'd':
        i = 's'
    elif i == 'w':
        i = 'i'
    elif i == 'j':
        i = 'a'
    elif i == 'e':
        i = 'o'
    elif i == 'g':
        i = 'w'
    elif i == 'z':
        i = 'l'
    elif i == 'v':
        i = 'c'
    elif i == 'c':
        i = 'm'
    elif i == 't':
        i = 'f'
    elif i == 'r':
        i = 'y'
    elif i == 'm':
        i = 'n'
    elif i == 's':
        i = 'u'
    elif i == 'q':
        i = 'g'
    elif i == 'o':
        i = 'r'
    m += i
print(m)

免责声明:文章转载自《IceCTF Crypto Substituted》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Windows安全应急响应(一)linux(centos8):firewalld使用ipset管理ip地址的集合下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

关于Gradle配置的小结

前言 使用 Android Studio 来开发 Android 工程的过程中,接触 Gradle 是不可避免的,比如配置签名、引入依赖等。那么 Gradle 到底是什么东西呢? Gradle 是一个基于 Apache Ant 和 Apache Maven 概念的项目自动化建构工具。它使用一种基于 Groovy 的特定领域语言 (DSL) 来声明项目...

Python笔记---错误笔记

Python---错误笔记 1. Python编码问题: 我们在编写 Python 脚本时,往往会写上中文凝视。可是有时候,当我们执行程序时。却发现例如以下错误:SyntaxError: Non-ASCII character 'xe5' in file /home/johnnie/Files/Workspace/python/head_first/ch...

phpstudy 升级(更换) mysql 版本

原文链接:http://phpstudy.php.cn/jishu-php-3131.html 一、下载新版 mysql 例如 mysql5.7: https://dev.mysql.com/downloads/file/?id=467269 二、备份 phpStudyPHPTutorialMySQL 三、解压下载的新版 mysql,放于 phpStudy...

第一个极小的机器学习的应用

  现在给出一个Web统计信息,他们存储着每小时的访问次数。每一行包含连续的小时和信息,以及该小时Web的访问次数。现在要解决的问题是,估计在何时访问量达到基础设施的极限。极限数据是每小时100000次访问。 1.读取数据: # 获取数据 filepath = r'C:UsersTDDesktopdataMachine Learning1400OS_01_...

django类视图的使用

1 类视图引入 以函数的方式定义的视图称为函数视图,函数视图便于理解。 但是遇到一个视图对应的路径提供了多种不同HTTP请求方式的支持时,便需要在一个函数中编写不同的业务逻辑,代码可读性与复用性都不佳。 def register(request): """处理注册""" # 获取请求方法,判断是GET/POST请求 if requ...

webpack4.x抽取css【extract-text-webpack-plugin与mini-css-extract-plugin】

参考文档:https://www.npmjs.com/package/extract-text-webpack-pluginhttps://www.npmjs.com/package/mini-css-extract-plugin 项目的初始诉求是利用webpack来管理css(合并),并增加hash(性能优化),当前项目使用webpack版本为4.6.0...