前言:

  这次题目说的是幂数加密,但是它本身

幂数加密:

 题目:8842101220480224404014224202480122

分析一波,只有8、4、2、1、0五种数字,然后先根据提示百度一下幂数加密,https://baike.baidu.com/item/%E4%BA%8C%E8%BF%9B%E5%88%B6%E5%B9%82%E6%95%B0%E5%8A%A0%E5%AF%86%E6%B3%95 看了看人家是用2进制得幂次来表示不同字母得,特征为:只含有012345这六个数字,跟咱们得不符合呀,继续百度,https://gist.github.com/wh1t3p1g/ffd15270914492491e18ff9f070eab2b,下面给出该原话:

1 【云影密码】
2 此密码运用了1248代码,因为本人才疏学浅,尚未发现有过使用的先例,因此暂归为原创密码,若有密码界前辈认为不妥,
3 请指出此密码或类似密码的普遍使用历史并附寄一份到我站内邮箱,我将以最快速度核查并改正。由于这个密码,我和片风云影初识,为了纪念,将其命名为“云影密码”,原文请见谜题大全精华区。
4 原理很简单,有了1,2,4,8这四个简单的数字,你可以以加法表示出0-9任何一个数字,例如0=28,7=124,9=185 这样,再用1-26来表示A-Z,就可以用作密码了。
6 为了不至于混乱,我个人引入了第五个数字0,来用作间隔,以避免翻译错误,所以还可以称“01248密码”。

题目:12401011801180212011401804
  第一步,分割,即124 1 118 118 212 114 18 4
  第二步,基本翻译,例如124可以表示7,也可以表示16(但不可能是34,因为不会超过26),所以可以放在一边,翻译其他没有异议的,
  可得:124 a s s w o 18 d
  第三步,推测得出明文。可以推测后面的18表示r,前面的为p最合适。
   
  明文:password(密码).(五)四位乘法密码——(密文:I Q V L N J O P X;密钥:1234)

look完该作者说的大概就明白它啥意思了,也就是0为分割,每部分分数字和对应字母,或者是部分数字和对应字母,中间存在会出现歧义得情况,先分析咱们这个会不会出现歧义,经过分析咱们这个可能会出现歧义,但是我从查了别人写的资料都没提到这个会出现歧义得点,他们都是用每段数字总和来算得,考虑到出现歧义还需要人工判断,我们先来个按照每段数字总和算得方法,如果出现很明显得问题我们就再分析,下面给出python代码:

with open(r'F:/桌面/tmp/2.txt','r') as f:
    data = f.read()
    print(data)

list = data.split('0')
print(list)

datalist=[]
def dlist(list):
    d = 0
    for i in list:
        for j in i:
            d += int(j)
        datalist.append(d)
        d=0
    return datalist
datalist = dlist(list)

def str(datalist):
    s=''
    for i in datalist:
        s += chr(i+64)
    return s
print(str(datalist))

下面给出结果,感觉还挺顺利得:

1 8842101220480224404014224202480122
2 ['88421', '122', '48', '2244', '4', '142242', '248', '122']
3 WELLDONE

提交flag,发现对了,那就是这样了,如果不成功得话那咱们还得分析 有哪些字母可能是其他得,这个地方目前还没想好怎么写代码,主要可能还是人工处理为主

参考链接:

https://tool.oschina.net/commons?type=4

https://gist.github.com/wh1t3p1g/ffd15270914492491e18ff9f070eab2b

 posted on 2020-08-12 20:50  缘初  阅读(3067)  评论(0编辑  收藏  举报