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 密码学(一)的更多相关文章

  1. CTF密码学常见加解密总结

    CTF密码学常见加解密总结 2018年03月10日 19:35:06 adversity` 本文链接:https://blog.csdn.net/qq_40836553/article/details ...

  2. CTF密码学总结

    CTF中那些脑洞大开的编码和加密 摘自:https://www.cnblogs.com/mq0036/p/6544055.html 0x00 前言 正文开始之前先闲扯几句吧,玩CTF的小伙伴也许会遇到 ...

  3. ctf密码学习题总结

    1.变异凯撒 加密密文:afZ_r9VYfScOeO_UL^RWUc格式:flag{ }   一看题中说的是凯撒加密,我就赶快使用工具列出了所有的组合,然而发现没有一个是我想要的. 于是乎,又重新审题 ...

  4. CTF<密码学> writeup 传统知识+古典密码

    小明某一天收到一封密信,信中写了几个不同的年份          辛卯,癸巳,丙戌,辛未,庚辰,癸酉,己卯,癸巳. 信的背面还写有“+甲子”,请解出这段密文. key值:CTF{XXX} 百度可以查到 ...

  5. ctf密码学------密文解码python脚本(凯撒解密)

    题目来源实验吧 分析题意,说是困在栅栏中,所以将字符栅栏解密看看有什么,利用工具CTFcraktools 得到三条密文 然后说是密码是凯撒,在将四栏依次凯撒解码,寻找可能的key,这里很显然,在尝试第 ...

  6. CTF密码学之摩斯密码

    通过不用的排列顺序来表达不用的英文字母,数字和标点符号,摩斯电码由.和_构成 字母 字符 电码符号 字符 电码符号 A ._ N _. B _... O _ _ _ C _._. P ._ _. D ...

  7. CTF密码学之凯撒加密

    在加密的各种算法中,凯撒加密是最简单的也是最常见的一种加密方法,它的中心思想是替换,ROT加密其实就是凯斯加密的变种. 即明文的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文 ...

  8. 南京邮电大学CTF密码学部分Writeup

    异性相吸 1.xor 2.hex2binary 3.len(bin(miwen))==len(bin(mingwen)) # -*- coding:utf-8 -*- file_de = open(' ...

  9. 南邮CTF密码学,mixed_base64

    # -*- coding:utf-8 -*- from base64 import * flag = open("code.txt").readline() # 读取密文 for ...

随机推荐

  1. Oracle下定时删除归档日志脚本

    一.报错信息 前几天网站突然访问不了,并且报了如下错误: ora-27101: shared memory realm does not exist ora-01034: oracle not ava ...

  2. 测开之路二十八:Flask基础之静态资源

    Flask默认的存放静态资源的目录名为static 在工程下创建一个文件夹(与脚本同级) 如果想命名为其他名字,则在声明app的时候要初始化,如: 准备一张图片放在static下,返回的内容加上img ...

  3. 支付宝PC端接入PHP

    引入支付宝接口 放入一个插件库中,方便管理 创建支付类 1.发起支付 public function init() { $order_id = $_REQUEST['order_id']; $orde ...

  4. javascript标签放置位置

    首先:放置位置哪里都能放 但是js代码很有可能不起作用:例如:往id为span的标签中定时插入数字 var time=document.getElementById("span") ...

  5. 牛客 在其他数都出现k次的数组中找到出现1次的数

    题目链接:https://www.nowcoder.com/practice/26e46f1f5e0d48c4b9ba13fe3e8d0ec6?tpId=101&tqId=33216& ...

  6. docker 提示 Drive has not been shared 错误

    Creating laradock_docker-in-docker_1 ... Creating laradock_docker-in-docker_1 ... error ERROR: for l ...

  7. ThinkPHP内置标签库原理(Cx标签库)

    任何一个模板引擎的功能都不可能是为你量身定制的,具有一个良好的可扩展 机制也是模板引擎的另外一个考量,Smarty采用的是插件方法来实现扩展,ThinkTemplate由于采用了标签库技术,比Smar ...

  8. poj1285 Combinations, Once Again(泛化背包)

    题目传送门 Combinations, Once Again Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 1897   A ...

  9. arcpy脚本使用多接图表图斑对对应多幅影像进行裁边处理

    插个广告,制作ArcGIS的Tool工具学习下面的教程就对了: 零基础学习Python制作ArcGIS自定义工具观看链接 <零基础学习Python制作ArcGIS自定义工具>课程简介 先将 ...

  10. 下载Spring各个版本的jar包

    网址:https://repo.spring.io/webapp/#/artifacts/browse/tree/General/libs-release-local/org/springframew ...