萌新赛-逆向签退

admin 2022年1月5日23:04:59CTF专场评论15 views1387字阅读4分37秒阅读模式

>

>

萌新赛-逆向签退

yuchoxuuan

打开题目是个pyc,
uncompyle6 x.pyc > x.py

import string
c_charset = string.ascii_uppercase + string.ascii_lowercase + string.digits + '()'
flag = 'BozjB3vlZ3ThBn9bZ2jhOH93ZaH9'
def encode(origin_bytes):
    c_bytes = [ ('{:0>8}').format(str(bin(b)).replace('0b', '')) for b in origin_bytes ]
    resp = ''
    nums = len(c_bytes) // 3
    remain = len(c_bytes) % 3
    integral_part = c_bytes[0:3 * nums]
    while integral_part:
        tmp_unit = ('').join(integral_part[0:3])
        tmp_unit = [ int(tmp_unit[x:x + 6], 2) for x in [0, 6, 12, 18] ]
        resp += ('').join([ c_charset[i] for i in tmp_unit ])
        integral_part = integral_part[3:]
    if remain:
        remain_part = ('').join(c_bytes[3 * nums:]) + (3 - remain) * '0' * 8
        tmp_unit = [ int(remain_part[x:x + 6], 2) for x in [0, 6, 12, 18] ][:remain + 1]
        resp += ('').join([ c_charset[i] for i in tmp_unit ]) + (3 - remain) * '.'
    return rend(resp)
def rend(s):
    def encodeCh(ch):
        f = lambda x: chr((ord(ch) - x + 2) % 26 + x)
        if ch.islower():
            return f(97)
        if ch.isupper():
            return f(65)
        return ch
    return ('').join(encodeCh(c) for c in s)

可以看到他的加密分为两个部分,第一部分是把每三位取出来,转二进制,然后得到
1- 头尾相连拼起来 3*8=24位二进制数,
2- 24位二进制数分成四段,得到四个6位二进制数
3- 用这四个6位二进制数去查他的字母表,然后用字母表示出来
说的很啰嗦其实跟base编码路子一样的

接下来,这个类base码经过encode二次加密。encode看起来麻烦但是其实有个好处就是踏实线性的,也就是说明文密文一一对应的,所以我就懒得分析了,直接穷举。
在它的代码下面添加如下部分执行就ok了 我知道我代码很烂,表笑话我

ured=''
for i in flag:
    for j in c_charset:
        if rend(j) == i :ured+=j; break
print(ured)
for i in range(len(ured) // 4):
    u = ured[4 * i:4 * i + 4]
    stmp = ''
    for s in u:
        bc = bin(c_charset.index(s))[2:]
        bc = '0' * (6 - len(bc)) + bc
        stmp += bc
    al = CharF.str2num(stmp,bs=2,spl=8)
    for xx in al:
        print(chr(xx),end='')


特别标注: 本站(CN-SEC.COM)所有文章仅供技术研究,若将其信息做其他用途,由用户承担全部法律及连带责任,本站不承担任何法律及连带责任,请遵守中华人民共和国安全法.
  • 我的微信
  • 微信扫一扫
  • weinxin
  • 我的微信公众号
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年1月5日23:04:59
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                  萌新赛-逆向签退 http://cn-sec.com/archives/719855.html

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: