CTF之脚本系列

凯撒加密

#python3
a=open("flag1.txt",'r')
text=a.read()
b='abcdefghijklmnopqrstuvwxyz'

for key in range(26):
    flag=''
    for i in text:
        if i in b:
            num=b.find(i)
            num=num-key

            if num<0:
                num=num+len(b)
            flag=flag+b[num]
        else:
            flag=flag+i
    print('key %s : %s' %(key,flag))


'''
a=open("flag1.txt",'r')
text=a.read()
b='abcdefghijklmnopqrstuvwxyz'

#97
for key in range(26):
    flag=''
    for i in text:
        if i in b:
            num=(int(ord(i))-97+key)%26
            flag=flag+b[num]
        else:
            flag=flag+i
    print('key %s : %s' %(key,flag))
'''

变异凯撒解密

#python3
str="afZ_r9VYfScOeO_UL^RWUc"
flag=""
x=5
for i in str:
    s=ord(i)+x
    flag+=chr(s)
    x=x+1

print(flag)

摩氏密码

#python3
CODE_TABLE = {
    # 26 个英文字符
    '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': '--..',

    # 10 个数字
    '0': '-----', '1': '.----', '2': '..---',
    '3': '...--', '4': '....-', '5': '.....',
    '6': '-....', '7': '--...', '8': '---..',
    '9': '----.',

    # 16 个特殊字符
    ',': '--..--', '.': '.-.-.-', ':': '---...', ';': '-.-.-.',
    '?': '..--..', '=': '-...-', "'": '.----.', '/': '-..-.',
    '!': '-.-.--', '-': '-....-', '_': '..--.-', '(': '-.--.',
    ')': '-.--.-', '$': '...-..-', '&': '. . . .', '@': '.--.-.'

    # 你还可以自定义
}

def morsedecode(morse):
    msg=''
    codes=morse.split(' ')
    for code in codes:
        if code=='':
            msg+=' '
        else:
            uncode=dict(map(lambda t: (t[1],t[0]),CODE_TABLE.items()))
            msg+=uncode[code]
    return msg

#a=open('flag2.txt','r')
#text=a.read()
text='-- .- -.-- ..--.- -... . ..--.- .... .- ...- . ..--.- .- -. --- - .... . .-. ..--.- -.. . -.-. --- -.. . .... .... .... .... .- .- .- .- .- -... .- .- -... -... -... .- .- -... -... .- .- .- .- .- .- .- .- -... .- .- -... .- -... .- .- .- .- .- .- .- -... -... .- -... .- .- .- -... -... .- .- .- -... -... .- .- -... .- .- .- .- -... .- -... .- .- -... .- .- .- -... -... .- -... .- .- .- -... .- .- .- -... .- .- -... .- -... -... .- .- -... -... -... .- -... .- .- .- -... .- -... .- -... -... .- .- .- -... -... .- -... .- .- .- -... .- .- -... .- .- -... .- .- .- .- -... -... .- -... -... .- .- -... -... .- .- -... .- .- -... .- .- .- -... .- .- -... .- .- -... .- .- -... .- -... .- .- -... -... .- -... .- .- .- .- -... -... .- -... .- .- -... -... .- '

#将01编码转换为莫斯密码
#text=text.replace('1','-')
#text=text.replace('0','.')
#莫斯密码解密
flag=morsedecode(text)
f=flag.lower()

f='cyberpeace{'+flag+'}'
print('flag is ',flag)

培根密码解密

#python3
import re

# 密文转化为指定格式
s = 'AAAAABAABBBAABBAAAAAAAABAABABAAAAAAABBABAAABBAAABBAABAAAABABAABAAABBABAAABAAABAABABBAABBBABAAABABABBAAABBABAAABAABAABAAAABBABBAABBAABAABAAABAABAABAABABAABBABAAAABBABAABBA'
a = s.lower()

# 字典
CODE_TABLE = {
    'a':'aaaaa','b':'aaaab','c':'aaaba','d':'aaabb','e':'aabaa','f':'aabab','g':'aabba',
    'h':'aabbb','i':'abaaa','j':'abaab','k':'ababa','l':'ababb','m':'abbaa','n':'abbab',
    'o':'abbba','p':'abbbb','q':'baaaa','r':'baaab','s':'baaba','t':'baabb','u':'babaa',
    'v':'babab','w':'babba','x':'babbb','y':'bbaaa','z':'bbaab'
}

def peigendecode(peigen):
    msg=''
    #re.findall(返回string中所有与pattern相匹配的全部子串)
    codes=re.findall('.{5}',a)
    for code in codes:
        if code=='':
            msg+=' '
        else:
            uncode=dict(map(lambda t:(t[1],t[0]),CODE_TABLE.items()))
            msg+=uncode[code]
    return msg

flag=peigendecode(a)
print('flag is ',flag)

维吉尼亚密码解密

#python3
text="ABCDEFGHIJKLMNOPQRSTUVWXYZ"

secret_key="computer"
message="BLOCKCIPHERDESIGNPRINCIPLE"

text=text.lower()
message=message.lower()

l=len(message)%len(secret_key)
real_key=secret_key*(int(len(message)/len(secret_key)))+secret_key[:l]

result=""
for i in range(len(message)):
    m=text.find(message[i])+text.find(real_key[i])
    m=m%26
    print(text[m].upper(),end="")

栅栏密码加密

#python3
# 常见的栅栏密码

s=input("请输入明文:\n")
n=int(input("请输入栅栏数:\n"))

length=len(s)
s1=""
for i in range(n):
        j=i
        while j<length:
                s1+=s[j]
                j+=n

print(s1)  

栅栏密码解密

#python3
# 栅栏密码加密解密

def crypto():
    plain = input('输入明文:')
    n = int(input('输入每组字数'))
    ans = ''
    for i in range(n):
        for j in range(int(plain.__len__()/n + 0.5)):
            try:
                ans += plain[j*n+i]
            except:
                pass
    return ans


def decrypto():
    plain = input('输入密文:')
    for n in range(2, plain.__len__()-1):
        ans = ''
        for i in range(n):
            for j in range(int(plain.__len__() / n + 0.5)):
                try:
                    ans += plain[j * n + i]
                except:
                    pass
        print("栏数:%d" % (n)," "+ans)


if __name__ == '__main__':
    print('栅栏密码加密/解密.py')
    while(True):
        choice = input('功能选择:\n1:加密\n2:解密\n')
        # 加密
        if choice == '1':
            print(crypto())
            # 解密
        elif choice == '2':
            decrypto()
        else:
            print('choice error!')

#栅栏密码解密
'''
e=input('please input: ')
elen=len(e)

field=[]
for i in range(2,elen):
    if (elen%i==0):
        field.append(i)

for f in field:
    length=len(e)
    s=""
    for i in range(f):
        j=i
        while j<length:
                s+=e[j]
                j+=f
                print(s)
    print("%d "%f,s)  
'''

www型栅栏密码解密

#python3
def encode(string, key):#需要加密的字符串以及加密栏数
    i = 0
    enlist = []
    for j in range(0, key):
        enlist.append('')#添加分组,列表的一个元素相当于一个分组

    while i < len(string):#分组重排进行加密
        for k in range(0, key):
            if i >= len(string):
                break
            enlist[k] += string[i]
            i += 1
        for k in range(1, key-1):
            if i >= len(string):
                break
            enlist[key-1-k] += string[i]
            i += 1
        enstr = ''
        for i in range(key):
        	enstr += enlist[i]
    return enstr


if __name__=="__main__":
    string=input("输入明文:")
    key=int(input("输入栏数:"))
    code=encode(string,key)
    print("%s"%code)

ASC码查询

#python3
while True:
    s=input("please input: ")
    print(ord(s))

base64解密

#python3
import base64

a=open('flag.txt','r')
s=a.read()

print(base64.b64decode(s))

简单RSA

#python3
import gmpy2

p=258631601377848992211685134376492365269
q=286924040788547268861394901519826758027
n = p *q
#公钥(n,e)
e=65537

fn = (p- 1) * (q - 1)

#私钥(n,d)
d =gmpy2.invert(e, fn)
print(d)

#c=83208298995174604174773590298203639360540024871256126892889661345742403314929861939100492666605647316646576486526217457006376842280869728581726746401583705899941768214138742259689334840735633553053887641847651173776251820293087212885670180367406807406765923638973161375817392737747832762751690104423869019034
#解出明文
#print(pow(c, d, n))

未知p,q解RSA

#python3
#---------------------------------------------------------------
#分解大整数
#求解p,q,并返回f(n)
import math
def moder(n):
	base=2
	while base <math.sqrt(n):
		if(n%base==0):
			fbase=base
			print(base,int(n/base))
		base+=1
	pass
	f=getEuler(fbase,int(n/fbase))
	print('f(n)欧拉函数值:%d'%f)#
	return f
#-------------------------------------
# 求欧拉函数f(n)
def getEuler(prime1, prime2):
    return (prime1-1)*(prime2-1)
#---------------------------------------------------------------------------------------
# 19d - 920071380k= 1
# 求私钥d
def getDkey(e, Eulervalue):#可以辗转相除法
	k = 1
	while True:
		if (((Eulervalue * k) + 1) % e) == 0:
			(d,m)=divmod(Eulervalue * k + 1,e)
			return d#避免科学计数法最后转int失去精度
		k += 1
#------------------------------------------------------
#求明文
def Ming(c,d,n):
	return pow(c,d,n)
#---------------------------------------------------------------------------------------
if __name__=='__main__':
#	输入n
	n=int(input('请输入要分解的质数: '))#920139713
#	求私钥
	d =getDkey(19, moder(n))
	print('私钥为: %d' % d)
#   密文c
	c=[704796792,752211152,274704164,18414022,368270835,483295235,263072905,459788476,483295235,459788476,663551792,475206804,
	   459788476,428313374,475206804,459788476,425392137,704796792,458265677,341524652,483295235,534149509,425392137,428313374,
	   425392137,341524652,458265677,263072905,483295235,828509797,341524652,425392137,475206804,428313374,483295235,475206804,459788476,306220148]
	L=[]
# 	计算明文
	for x in c:
		L.append(Ming(x,d,n))
	print(L)		#明文ascii表
# 	打印明文
	for x in L:
		print(chr(x),end='')

英语字母大小写转换

#python3
str="KEYISFLASHISFASTMAN"
print(str.lower())

爬安科官网新闻标题

#python3
import requests
import re


def getTitle():
    url = 'http://www.ahstu.edu.cn'
    req = requests.get(url=url)
    html = req.content.decode('utf8')
    titlere = r'title="(.+?)" target="_blank"'
    titles = re.findall(titlere, html)
    for title in titles:
        print(title)

if __name__ == "__main__":
    getTitle()

教学周计算

#python3
#闲的无聊
import datetime

localtime=datetime.datetime.now().isocalendar()
print("当前周数为:",localtime)

id=datetime.date(2019, 9, 2).isocalendar()[1]
print(id)

result=localtime[1]-id+1
print("当前教学周为:",result)
#python3
#打包版本
import datetime
import time

localtime=datetime.datetime.now().isocalendar()
print("当前周数为:",localtime)

id=datetime.date(2019, 9, 2).isocalendar()[1]
print(id)

result=localtime[1]-id+1
print("当前教学周为:",result)
time.sleep(3000)
  • 5
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值