ADworld学习笔记(1)之crypto新手区

第一次写CTF相关wp记录,主要是总结归纳我觉得比较好的题目的wp(可能是自己写也可能是转载的。)

2020、11、7

crypto之幂数加密

幂数加密(云影密码):http://www.mamicode.com/info-detail-3075795.html

另解:

a=["88421","0122","048","02244","04","0142242","0248","0122"] 
flag="" 
for j in range(0,len(a)): 
    str = a[j] 
    list=[] 
    sum=0 
    for i in str: 
        list.append(i) 
        length = len(list) 
    for i in range(0,length): 
        sum+=int(list[i]) 
    flag+=chr(64+sum) 
print(flag)

2020、11、8

crypto之easychallenge

非常详细的WP:https://blog.csdn.net/hippotomons/article/details/102538110

ps:^为异或,其逆过程就是再做一次异或。
【原理】

pyc反编译

【目的】

掌握pyc反编译的方法以及阅读python代码的能力

【环境】

Windows

【工具】

python

【步骤】

本题是一个很简单的异或加密

反编译可以使用uncompyle6或者在线反编译pyc

安装uncompyle6,pip install uncompyle6

反编译命令 uncompyle6 crypto11.pyc,得到:UC7KOWVXWVNKNIC2XCXKHKK2W5NLBKNOUOSK3LNNVWW3E===

我们通过反顺序异或来反编译出flag
import base64
s="UC7KOWVXWVNKNIC2XCXKHKK2W5NLBKNOUOSK3LNNVWW3E==="注意,这里是三个等号,所以判断为base32编码
s=base64.b32decode(s)
m = ‘’
for i in s:
x = ord(i) ^ 36
x = x - 36
m+= chr(x)
h = ‘’
for i in m:
x = ord(i) - 25
x = x ^ 36
h+= chr(x)
print h

转轮机加密

WP: https://blog.csdn.net/rashu99/article/details/108736599
轮机密码介绍
【原理】

转轮机密码

【目的】

掌握转轮机密码编码以及解码方式

【环境】

Windows

【工具】

在线解密

【步骤】

懂了加密原理一切就变得容易起来了,我们可以写一个python脚本来解决这个问题.
import re
sss=’’‘1: < ZWAXJGDLUBVIQHKYPNTCRMOSFE < 2: < KPBELNACZDTRXMJQOYHGVSFUWI < 3: < BDMAIZVRNSJUWFHTEQGYXPLOCK < 4: < RPLNDVHGFCUKTEBSXQYIZMJWAO < 5: < IHFRLABEUOTSGJVDKCPMNZQWXY < 6: < AMKGHIWPNYCJBFZDRUSLOQXVET < 7: < GWTHSPYBXIZULVKMRAFDCEONJQ < 8: < NOZUTWDCVRJLXKISEFAPMYGHBQ < 9: < XPLTDSRFHENYVUBMCQWAOIKZGJ < 10: < UDNAJFBOWTGVRSCZQKELMXYIHP < 11 < MNBVCXZQWERTPOIUYALSKDJFHG < 12 < LVNCMXZPQOWEIURYTASBKJDFHG < 13 < JZQAWSXCDERFVBGTYHNUMKILOP <
‘’’
m=“NFQKSEVOQOFNP”
content=re.findall(r’< (.*?) <’,sss,re.S)
iv=[2,3,7,5,13,12,9,1,8,10,4,11,6]
vvv=[]
ans=""
for i in range(13):
index=content[iv[i]-1].index(m[i])
vvv.append(index)
for i in range(0,26):
flag=""
for j in range(13):
flag+=content[iv[j]-1][(vvv[j]+i)%26]
print flag

or 另解:

original_wheel = ['ZWAXJGDLUBVIQHKYPNTCRMOSFE',
                  'PBELNACZDTRXMJQOYHGVSFUWI',
                  'BDMAIZVRNSJUWFHTEQGYXPLOCK',
                  'RPLNDVHGFCUKTEBSXQYIZMJWAO',
                  'IHFRLABEUOTSGJVDKCPMNZQWXY',
                  'AMKGHIWPNYCJBFZDRUSLOQXVET',
                  'GWTHSPYBXIZULVKMRAFDCEONJQ',
                  'NOZUTWDCVRJLXKISEFAPMYGHBQ',
                  'XPLTDSRFHENYVUBMCQWAOIKZGJ',
                  'UDNAJFBOWTGVRSCZQKELMXYIHP',
                  'MNBVCXZQWERTPOIUYALSKDJFHG',
                  'LVNCMXZPQOWEIURYTASBKJDFHG',
                  'JZQAWSXCDERFVBGTYHNUMKILOP ']#所给初始状态的轮转机
shifted_wheel = []
key = [2,3,7,5,13,12,9,1,8,10,4,11,6] #所给密钥
ciphertext = 'NFQKSEVOQOFNP' #所给密文
 
#按照密钥顺序对轮排序
for i in key:
    shifted_wheel.append(original_wheel[i-1])
print('按照密钥重新排序后的轮转机:\n',shifted_wheel)
 
#按照密文顺序转动轮
for i in range(len(shifted_wheel)):
    index = shifted_wheel[i].index(ciphertext[i])
    shifted_wheel[i] = shifted_wheel[i][index:]+shifted_wheel[i][0:index]
print('按照密文重新排序后的轮转机:\n',shifted_wheel)
 
#读取所有恢复的明文
print('输出所有可能的明文:')
for i in range(1,len(shifted_wheel[0])):
    for j in range(len(shifted_wheel)):
        print(shifted_wheel[j][i],end='')
    print('\n')

Normal_RSA

https://blog.csdn.net/hippotomons/article/details/102672851

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值