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. pod 查看当前源/添加源

    1 pod 查看当前源 PeiSongs-iMac:5i5jAPP chenpeisong$ pod repo 0 repos 2 pod repo换源 CocoaPods 镜像使用帮助CocoaPo ...

  2. java常用排序

    1.冒泡排序 public static int[] bubble(int[] a){ for(int i=0;i<a.length-1;i++){ int tmp=0; for(int j=0 ...

  3. Tex与PDF

    由Knuth Donald开发的tex.web会生成DVI文件,DVI也是Knuth自己实现的(虽然概念是其他人提出的)一种文件格式,目标是与设备无关. 通过dvips程序可以将DVI格式转化成Pos ...

  4. 洛谷 P1197 [JSOI2008]星球大战——并查集

    先上一波题目 https://www.luogu.org/problem/P1197 很明显删除的操作并不好处理 那么我们可以考虑把删边变成加边 只需要一波时间倒流就可以解决拉 储存删边顺序倒过来加边 ...

  5. mysql 【常用sql】

    修改过mysql数据库字段内容默认值为当前时间 --添加CreateTime 设置默认时间 CURRENT_TIMESTAMP ALTER TABLE `table_name` ADD COLUMN ...

  6. Java_3.Java帮助文档

    1.Oracle的在线帮助文档 http://docs.oracle.com/javase/8/docs/api 2.jdk源码内容(包含5个部分) [以下内容参考至:https://blog.csd ...

  7. leetcode.排序.215数组中的第k个最大元素-Java

    1. 具体题目 在未排序的数组中找到第 k 个最大的元素.请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素. 示例 : 输入: [3,2,1,5,6,4] 和 k = ...

  8. HDU 1398 Square Coins(DP)

    Square Coins Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Tota ...

  9. RabbitMq--4--集群(转载)

    RabbitMQ消息服务用户手册 1 基础知识 1.1 集群总体概述 Rabbitmq Broker集群是多个erlang节点的逻辑组,每个节点运行Rabbitmq应用,他们之间共享用户.虚拟主机.队 ...

  10. 【记录】ELK之logstash同步mysql数据到Elasticsearch ,配置文件详解

    本文出处:https://my.oschina.net/xiaowangqiongyou/blog/1812708#comments 截取部分内容以便学习 input { jdbc { # mysql ...