CTF 密码学(一)
0x00 前言
为了练习python,强迫自己能用Python的题都用python解题还有各种密码
0x01 奇怪的字符串
实验吧题目:信息保密的需求和实际操作自古有之,与之相应的信息加密与解密也是历史悠久,现有一段经过古典密码理论(不止一种)加密的密文,内容如下:
89 51 82 109 89 50 86 122 97 71 107 61请找出这段密文隐藏的消息明文
1.数字都没有超过127,ASCII码,解出来base64,然后再转得到flag
import base64
s="89 51 82 109 89 50 86 122 97 71 107 61"
s=s.split()
d = ""
for i in s:
d+=(chr(int(i)))
print(d)
print(base64.b64decode(d))
0x02 base??
实验吧题目:YMFZZTY0D3RMD3RMMTIZ 这一串到底是什么!!!!为什么这么像base32却不是!!! 明文的md5值为16478a151bdd41335dcd69b270f6b985
1.给了一段全字母全大写的字符串,提示说像base32,后来试了一下错误的,后面有md5值,网上搜了一下直接解出来了。起始作者的思路
2 爆破列出所有的字符串组合的MD5值和给出的md5比较,如果相等,返回原字符串,得出flag,上代码
import base64
import hashlib
import itertools pwd ="YMFZZTY0D3RMD3RMMTIZ"
tables =[] #检查md5值是否相同
def check(src):
m1 =hashlib.md5()
m1.update(src)
ans =m1.hexdigest()
if ans =="16478a151bdd41335dcd69b270f6b985":
return 1
else: return 0
#生成字符串的列表
def generateTable(string):
lists=[]
for i in range(len(string)):
if str.isupper(string[i]):
lists.append([str.lower(string[i]),string[i]])
else: lists.append([string[i]])
print(lists)
#generateTable(pwd)
lists=itertools.product(['y', 'Y'], ['m', 'M'], ['f', 'F'], ['z', 'Z'], ['z', 'Z'], ['t', 'T'], ['y', 'Y'], [''],
['d', 'D'], [''], ['r', 'R'], ['m', 'M'], ['d', 'D'], [''], ['r', 'R'], ['m', 'M'], ['m', 'M'],
['t', 'T'], ['i', 'I'], ['z', 'Z'])
for i in lists:
temp=''.join(i)
if check(base64.b64decode(temp)) ==1:
print(bytes.decode(base64.b64decode(temp)))
0x03 Morese 加解密
#Author TriompheL
#2017年11月17日
#功能:对于Morse密码的加密解密
DeCODE = {'.-': 'A', '-...': 'B', '-.-.': 'C',
'-..': 'D', '.': 'E', '..-.': 'F',
'--.': 'G', '....': 'H', '..': 'I',
'.---': 'J', '-.-': 'K', '.-..': 'L',
'--': 'M', '-.': 'N', '---': 'O',
'.--.': 'P', '--.-': 'Q', '.-.': 'R',
'...': 'S', '-': 'T', '..-': 'U',
'...-': 'V', '.--': 'W', '-..-': 'X',
'-.--': 'Y', '--..': 'Z', '-----': '', '.----': '', '..---': '',
'...--': '', '....-': '', '.....': '',
'-....': '', '--...': '', '---..': '',
'----.': ''
}
EnCODE = {'A': '.-', 'B': '-...', 'C': '-.-.',
'D': '-..', 'E': '.', 'F': '..-.',
'G': '--.', 'H': '....', 'I': '..',
'J': '.---', 'K': '-.-', 'L': '.-..',
'M': '--', 'N': '-.', 'O': '---',
'P': '.--.', 'Q': '--.-', 'R': '.-.',
'S': '...', 'T': '-', 'U': '..-',
'V': '...-', 'W': '.--', 'X': '-..-',
'Y': '-.--', 'Z': '--..', '': '-----', '': '.----', '': '..---',
'': '...--', '': '....-', '': '.....',
'': '-....', '': '--...', '': '---..',
'': '----.'
}
def encrypt():
msg = raw_input('MESSAGE: ')
ans =""
for char in msg:
if char == ' ':
ans+=' '
else:
ans+=EnCODE[char.upper()]
ans+=' '
#print(EnCODE[char.upper()] + ' ')
print(ans) def decrypt():
msg =input('MESSAGE:')
mores =""
ans =""
for char in msg:
if char=='.' or char=='-':
mores+=char
if char ==' ' and mores !=' ':
ans+=DeCODE[mores]
mores=""
if mores !="":
ans+= DeCODE[mores]
mores="" print(ans.lower()) def run():
para = input('1 is encrypt 2 is decrypt : ')
if para == '':
encrypt()
elif para == '':
decrypt()
else: print(" your input is error") run()
0x04 费纳姆密码
#encoding:UTF-8 # 费纳姆密码
paswd = "" \
"" EnCODE ={'A':'' ,'N':'',
'B': '', 'O' :'',
'C': '', 'P' :'',
'D': '', 'Q' :'',
'E': '', 'R' :'',
'F': '', 'S' :'',
'G': '', 'T' :'',
'H': '', 'U' :'',
'I': '', 'V' :'',
'J': '', 'W' :'',
'K': '' ,'X' :'',
'L': '' ,'Y' :'',
'M': '' ,'Z' :''
}
DeCODE={
'':'A', '':'N',
'':'B', '':'O',
'':'C', '':'P',
'':'D', '':'Q',
'':'E', '':'R',
'':'F', '':'S',
'':'G', '':'T',
'':'H', '':'U',
'':'I', '':'V',
'':'J', '':'W',
'':'K', '':'X',
'':'L', '':'Y',
'':'M', '':'Z'
}
#加密
def encrypt():
msg =input("Input Message:")
ans ="" for char in msg:
if char ==' ':
ans+= ' '
else: ans+=EnCODE[char.upper()]+' '
print(ans)
#解密
def decrypt():
msg =input('MESSAGE:')
german =""
ans =""
for char in msg:
if char=='' or char=='':
german+=char
if len(german)==7:
ans+=DeCODE[german]
german="" print(ans) def run():
para = input('1 is encrypt 2 is decrypt : ')
if para == '':
encrypt()
elif para == '':
decrypt()
else: print(" your input is error") run()
CTF 密码学(一)的更多相关文章
- CTF密码学常见加解密总结
CTF密码学常见加解密总结 2018年03月10日 19:35:06 adversity` 本文链接:https://blog.csdn.net/qq_40836553/article/details ...
- CTF密码学总结
CTF中那些脑洞大开的编码和加密 摘自:https://www.cnblogs.com/mq0036/p/6544055.html 0x00 前言 正文开始之前先闲扯几句吧,玩CTF的小伙伴也许会遇到 ...
- ctf密码学习题总结
1.变异凯撒 加密密文:afZ_r9VYfScOeO_UL^RWUc格式:flag{ } 一看题中说的是凯撒加密,我就赶快使用工具列出了所有的组合,然而发现没有一个是我想要的. 于是乎,又重新审题 ...
- CTF<密码学> writeup 传统知识+古典密码
小明某一天收到一封密信,信中写了几个不同的年份 辛卯,癸巳,丙戌,辛未,庚辰,癸酉,己卯,癸巳. 信的背面还写有“+甲子”,请解出这段密文. key值:CTF{XXX} 百度可以查到 ...
- ctf密码学------密文解码python脚本(凯撒解密)
题目来源实验吧 分析题意,说是困在栅栏中,所以将字符栅栏解密看看有什么,利用工具CTFcraktools 得到三条密文 然后说是密码是凯撒,在将四栏依次凯撒解码,寻找可能的key,这里很显然,在尝试第 ...
- CTF密码学之摩斯密码
通过不用的排列顺序来表达不用的英文字母,数字和标点符号,摩斯电码由.和_构成 字母 字符 电码符号 字符 电码符号 A ._ N _. B _... O _ _ _ C _._. P ._ _. D ...
- CTF密码学之凯撒加密
在加密的各种算法中,凯撒加密是最简单的也是最常见的一种加密方法,它的中心思想是替换,ROT加密其实就是凯斯加密的变种. 即明文的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文 ...
- 南京邮电大学CTF密码学部分Writeup
异性相吸 1.xor 2.hex2binary 3.len(bin(miwen))==len(bin(mingwen)) # -*- coding:utf-8 -*- file_de = open(' ...
- 南邮CTF密码学,mixed_base64
# -*- coding:utf-8 -*- from base64 import * flag = open("code.txt").readline() # 读取密文 for ...
随机推荐
- ASP.NET Core MVC/WebAPi 模型绑定探索 转载https://www.cnblogs.com/CreateMyself/p/6246977.html
前言 相信一直关注我的园友都知道,我写的博文都没有特别枯燥理论性的东西,主要是当每开启一门新的技术之旅时,刚开始就直接去看底层实现原理,第一会感觉索然无味,第二也不明白到底为何要这样做,所以只有当你用 ...
- taintCheck的实现
参考:http://bitblaze.cs.berkeley.edu/papers/taintcheck-full.pdf 1. 应用taint analysis需要解决三个问题 a. 哪些input ...
- Linear Regression and Gradient Descent (English version)
1.Problem and Loss Function Linear Regression is a Supervised Learning Algorithm with input matrix ...
- maven(一),maven3.5.3的windows安装及Eclipse集成
maven用了好长时间,需要系统的学习一下.maven ,是一个项目构建的工具,是一个项目管理和综合工具,具有项目生命周期管理功能. maven现在到了3.5.3,就以这个版本进行. 一.下载mave ...
- 洛谷 P1522 牛的旅行 Cow Tours——暴力枚举+最短路
先上一波题目 https://www.luogu.org/problem/P1522 这道题其实就是给你几个相互独立的连通图 问找一条新的路把其中的两个连通图连接起来后使得新的图中距离最远的两个点之 ...
- jumpserver4.0centos7安装步骤
一步一步安装(CentOS) 测试推荐环境 CPU: 64位双核处理器 内存: 4G DDR3 数据库:mysql 版本大于等于 5.6 mariadb 版本大于等于 5.5.6 环境 系统: Cen ...
- boby标签中相关标签
有关字体相关的标签 h1~h6 字体大小 标题使用<h1>至<h6>标签进行定义,<h1>定义最大的标题,<h6>定义最小的标题.具有 align属 ...
- LOGO有哪几种常规设计思路?
Logo设计的思路多种多样,但是我个人从Logo设计的历史上,大致可以归纳出五种常规思路,思路的名称是自己编的,仅供大家参考.而列举的这些思路背后,都是有着各自的时代背景的. 先从历史最悠久的一种设计 ...
- python杂货
三.字典的基本操作 1.如何访问字典中的值? adict[key] 形式返回键key对应的值value,如果key不在字典中会引发一个KeyError. adict.get(key, default ...
- C# 下载模板
/// <summary> /// 模板下载 /// </summary> /// <returns></returns> public ActionR ...