一. 变异凯撒

找规律找规律,既然说是凯撒那就看看怎么移动才能得到flag。

因为flag{前四个字符是确定的,所以对比下密文和flag{的ascii码。

发现规律是这样,然后写个python脚本

#-*- coding:utf-8 -*-
from __future__ import print_function
import string
str = "afZ_r9VYfScOeO_UL^RWUc"
num = 5
for x in str:i = ord(x)i = i + numprint (chr(i),end='')num=num+1

得到答案

二. 传统知识+古典密码

首先做这道题我们要知道古典密码就是维也纳,凯撒,栅栏这些。

看题目:

辛卯,癸巳,丙戌,辛未,庚辰,癸酉,己卯,癸巳。

信的背面还写有“+甲子”

百度一下得到天干地支甲子年是第1年,然后各个词语(辛卯等60个天干地支年)按顺序对应1到60,得到一串数字。

然后+甲子的意思是加一年,得到一组数字 88 90 83 68 77 70 76 90.

对应的字符为XZSDMFLZ,试了下凯撒,无结果

然后栅栏有两栏和四栏,分别得到两串字符串,试了下,在两栏字符串XMZFSLDZ的第21次凯撒有结果SHUANGYU这个有意义的字符串(闷骚作者的名字),贴下凯撒python代码。

#-*- coding:utf-8 -*-
from __future__ import print_function
import string
str = "XMZFSLDZ"
for num in range(1,26):print("凯撒%d结果为 "%(num),end='')#如果加密字符的ASCII码值加上偏移量的值大于Z的话,只需要将该值减去26for x in str:i = ord(x)i = i + numif(i>90):i = i - 26print (chr(i),end='')print ('')

ps:因为这道题是想要转CTF{XXX}内的字符串不包含格式CTF{},所以没有符号,所以加密字符大于Z的话就相应减26形成字符循环。

四. try them all

You have found a passwd file containing salted passwords. An unprotected configuration file has revealed a salt of 5948. The hashed password for the 'admin' user appears to be 81bdf501ef206ae7d3b92070196f7e98, try to brute force this password.

相关知识:什么是salt ,怎么用python生成md5

这道题给你了一串加密后的字符和一串salt值,我们的思路是先解密再去盐

既然是md5解密(匹配),而且题目提示是暴力破解,那么我们有两种思路1.上网找md5的字典跑 2.写个python脚本(最多六位,多的话跑太久就不能做题了)

下面贴下实验吧里WP的解密脚本

# -*- coding:utf-8 -*-
__author__ = 'Administrator'
#from ultrapower.fd
import itertools as its
import md5#暴力破解
def uncipher(maxlenth,salt,ciphertext_s,str_letter):ciphertext_s=ciphertext_ssalt = saltmaxlenth=int(maxlenth)str_letter=str_letterciphertext=''for i in range(1, maxlenth+1):# 迭代生成明文(例如abc,repeat=2  结果为(a,a)(a,b)(a,c)(b,b)(b,a)(b,c)(c,c)(c,a)(c,b)r = its.product(str_letter, repeat=i)for j in r:plaintext = "".join(j) #连接成字符串plaintext = "%s%s" % (plaintext, salt)  #把盐加到明文的后面 每次生成的最终明文print plaintext   #打印明文# 开始解密,方法是,每个明文进来,加密成密文,然后密文与密文做对比md501 = md5.new()md501.update(plaintext)ciphertext = md501.hexdigest()# 对比密文确认明文if ciphertext == ciphertext_s:  #如果密文一致 退出2层循环breakif ciphertext == ciphertext_s:    #如果密文一致,退出1层循环,打印结果print "task finished(plain,cipher)"print "%s:%s" % (plaintext, ciphertext) #打印结果break#开始执行主函数
#str_letter="abcdefghijklmnopqrstuvwxyz0123456789"
#str_letter="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
#str_letter="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
str_letter="abcdefghijklmnopqrstuvwxyz"   #明文的字符范围
maxlenth=6   #明文的最大长度,一般不会超过6位,否则短时间很难暴力破解
salt='5948'  #加盐 #如果不加盐,为空就是正常的md5解密
ciphertext_s='81bdf501ef206ae7d3b92070196f7e98'     #密文
uncipher(maxlenth,salt,ciphertext_s,str_letter)     #开始解密

其实就是迭代生成字符串,加盐后md5加密再与题目中的密文比较,比较成功就输出原文。

最后跑出的答案是sniper5948,去掉盐值就是sniper

五. trival

从代码我们可以了解到,这是一个for i in range(len(plaintext))开始的加密算法(前面的语句是要求执行这个加密文件前面放3段语句,第一段是文件路径名,这个不用你放,第二是key,第三是原文)

这道题是个有密匙的对称加密算法,做这道题首先我们要知道个知识点:若A=(B-C)%D  则B=(A+C)%D 具体推导见百度

比如假设都是正整数
A=(B-C)%D
则 B - C = D*n + A 其中 A < D移项 B = A+C + D*n
当B<D时,两边对D取摸,
B = B%D = ( A+C + D*n )%D = (A+C)%D

那么加密算法就可以看成 y = A + (x - A + B)% d    转换下就是 y - A = (x - A + B)%d

把x - A和y - A看成一个整体,是不是很熟悉! 那易得解密算法就是x - A = (y - A + B)%d

换一下形势就是x= (y - A + B)%d + A

给一个别人的python解密小脚本

alphaL = "abcdefghijklnmopqrstuvqxyz"
alphaU = "ABCDEFGHIJKLMNOPQRSTUVQXYZ"
num    = "0123456789"
keychars = num+alphaL+alphaU
key = 'T0pS3cre7key'
ciphertext = 'Bot kmws mikferuigmzf rmfrxrwqe abs perudsf! Nvm kda ut ab8bv_w4ue0_ab8v_DDU's = ""
for i in range(len(ciphertext)):rotate_amount = keychars.index(key[i%len(key)])if ciphertext[i] in alphaL:enc_char = ord('a') + (ord(ciphertext[i]) - ord('a') - rotate_amount) % 26elif ciphertext[i] in alphaU:enc_char = ord('A') + (ord(ciphertext[i]) - ord('A') - rotate_amount) % 26elif ciphertext[i] in num:enc_char = ord('0') + (ord(ciphertext[i]) - ord('0') - rotate_amount) % 10else:enc_char = ord(ciphertext[i])s = s + chr(enc_char)
print(s)

实验吧WP(密码学部分)【变异凯撒,传统知识+古典密码,try them all,trival】相关推荐

  1. 实验吧-密码学-传统知识+古典密码(六十甲子年)

    题目信息:小明某一天收到一封密信,信中写了几个不同的年份辛卯,癸巳,丙戌,辛未,庚辰,癸酉,己卯,癸巳.信的背面还写有"+甲子",请解出这段密文. 提示了甲子年,于是找到甲子年的表 ...

  2. 【CTF】实验吧 传统知识+古典密码

    对照顺序写下: 根据对应的干支得到 28 30 23 8 17 10 16 30   +甲子 所有的数加60 得到 88 90 83 68 77 70 76 90 找到ASCII码对照表可得到XZSD ...

  3. 【愚公系列】2023年06月 网络安全(交通银行杯)-变异凯撒

    文章目录 前言 一.变异凯撒 1.打开题目 2.解题 前言 在密码学中,凯撒密码是一种最简单且最广为人知的加密技术.它是一种替换加密的技术,明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进 ...

  4. buuctf 变异凯撒

    凯撒密码就是简单的位移操作,变异凯撒就是会每个数字换一下 可以看到第一个字符向后移了5,第二个向后移了6,第三个向后移了7,以此类推,很容易想到变异凯撒即每个向后移的位数是前一个加1 写个python ...

  5. 实验吧——密码学-变异凯撒

    因为是凯撒加密,所以思考移动的位数,由flag{}格式,所以对照ascii表, 由a-f为5,f-l为6,Z-a为7,_-g为8,故猜测移动的位数为从5依次递增, 将密文换为十进制,打开vs, #in ...

  6. 实验吧-密码学-杯酒人生(特殊凯撒--维吉尼亚密码)(凯撒加解密脚本、维吉尼亚密码加解密脚本)...

    题目: 使用古典密码 一喵星人要想喵星发送一段不知道干什么用的密码"BLOCKCIPHERDESIGNPRINCIPLE", 但是它忘记了密钥是什么, 手头(爪头)只有它自己加密过 ...

  7. 密码学入门1——凯撒密码和三重DES加解密

    实验目的 1.完成第一个入门加解密--凯撒密码 2.完成当下较为流行的三重DES加解密技术 3.熟悉所学的实际运用方向 实验准备 硬件:计算机或笔记本电脑 操作系统:Mac操作系统 IDE环境:Ecl ...

  8. buu crypto 变异凯撒

    一.由题目就可知是凯撒加密,但是是变异,说明有改动,但是凯撒的本质移位是不变的,将密文afZ_r9VYfScOeO_UL^RWUc,和flag进行比较,字符表查一下,发现 a:97 f:102 f:1 ...

  9. 变异凯撒1(BUCTF在线评测)

    下载后打开题目如下 加密密文:afZ_r9VYfScOeO_UL^RWUc 格式:flag{ } 网络文献有说凯撒以前最早使用的密码学,移位,与之前的字符串移位一样,使用以下代码 public sta ...

最新文章

  1. tmux命令启动MySQL_tmux启动脚本
  2. GDCM:gdcm::FilenameGenerator的测试程序
  3. VTK:可视化算法之IronIsoSurface
  4. DM6446 OSD
  5. 成为Java流大师–第4部分:数据库流
  6. 卸载oracle——详细版
  7. python socket 主动断开_python之使用ctrl+c断开多线程(TcpSocketServer连接)出现端口占用的情况...
  8. jquery easyui validatebox remote使用
  9. springboot pom文件基本配置
  10. Redis主从复制原理
  11. 2.1微信小程序简介
  12. 在Ubuntu 8.10 中安装使用新一代输入法ibus Deb包下载_Ubuntu,Linux,ibus输入法,拼音,五笔,搜狗
  13. C语言实现创建游戏角色(包含文件写入)
  14. 【转载】不用加号和减号计算两个数的加法
  15. 微信公众平台版面设计需要服务器,微信公众平台丨排版的基本原则
  16. RPC(管理端口的服务)NFS软件 NFS配置文件 简单介绍
  17. MODBUS-RTU数据帧格式、报文实例
  18. WEB渗透测试(一)被动信息收集1(DNS信息收集、DNS字典爆破、DNS注册信息)
  19. 利用jieba分词分析小说三
  20. C++:实现量化GSR模型测试实例

热门文章

  1. 吴恩达深度学习网课小结
  2. 避免死锁: 银行家算法
  3. 怎么将多个视频合成一个,视频合并软件哪个好
  4. 杭州电子科技大学计算机考研初试分数线,杭州电子科技大学21考研各专业拟录取分数线汇总!...
  5. 开启灯光就是近光吗_我科三,开始灯光考试,我打开了灯光直接就挂了,两次都是一样的问题是怎么回事?...
  6. Python初学者需要注意的问题
  7. 十大免费和开源计算机辅助翻译软件
  8. 项目16—用51单片机实现十字路口红绿灯
  9. 自媒体生存现状调查:僧多粥少,集体焦虑
  10. 基于android平台的手机游戏的设计与实现,基于Android平台手机游戏社区的设计与实现...