ctfshow月饼

本文介绍了三种古典密码的破解过程,包括自动钥匙密码、基于线性变换的加密方法和涉及伽马函数的大数分解挑战。每种破解都详细展示了使用的算法和技术。

crypto1_中秋月

此夜中秋月,清光十万家*** 自动钥匙⊕ 明文全大写,得到后转小写,并以_连接单词。 格式:flag{xxx}。 @⎝Lazzaro⎠师傅供题
fsskryenvkm~jl{ejs}jwflzsnpgmifq{
  
  {j{|suhzrjppnx|qvixt~whu

看起来毫无头绪,观察提示,自动钥匙,也就是autokey密码。

网上有它的python2脚本,但是解密后发现不正确,自动钥匙后面有异或的操作,可能题目给出的密文是通过异或得出来的,我们需要再进行异或一下,于是有

message="fsskryenvkm~jl{ejs}jwflzsnpgmifq{
   
   {j{|suhzrjppnx|qvixt~whu"
for i in range(255):#ASCLL---```0-255
    res=''
    for j in range (0,len(message)):
        temp =ord(message[j])^i#python中的^表示异或,在进行异或步骤时,需要把^前后两个数转换为二进制
        if 65<=temp<=90 or 97<=temp<=122:#65-90表示A-Z,97-122表示a-z
            res+=(chr(temp))
    if len(res)==len(message):
        print(res)

运行脚本后得到两组数字,再根据题目的提示发现有密文均为大写,即选择密文

YLLTMFZQITRAUSDZULBUHYSELQOXRVYNDDUDCLJWEMUOOQGCNIVGKAHWJ

再根据python脚本,即有

from ngram_score import ngram_score
from pycipher import Autokey
import re
from itertools import permutations

qgram = ngram_score('quadgrams.txt')
trigram = ngram_score('trigrams.txt')
ctext = 'YLLTMFZQITRAUSDZULBUHYSELQOXRVYNDDUDCLJWEMUOOQGCNIVGKAHWJ'
ctext = re.sub(r'[^A-Z]','',ctext.upper())

# keep a list of the N best things we have seen, discard anything else
class nbest(object):
    def __init__(self,N=1000):
        self.store = []
        self.N = N
        
    def add(self,item):
        self.store.append(item)
        self.store.sort(reverse=True)
        self.store = self.store[:self.N]
    
    def __getitem__(self,k):
        return self.store[k]

    def __len__(self):
        return len(self.store)

#init
N=100
for KLEN in range(8,20):
    rec = nbest(N)

    for i in permutations('ABCDEFGHIJKLMNOPQRSTUVWXYZ',3):
        key = ''.join(i) + 'A'*(KLEN-len(i))
        pt = Autokey(key).decipher(ctext)
        score = 0
        for j in range(0,len(ctext),KLEN):
            score +=</
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值