0
点赞
收藏
分享

微信扫一扫

python 进行进制转换的脚本编写

攻城狮Chova 2021-10-04 阅读 55

python 在ctf进制转换的应用

  1. 4进制转换(题目来源bugku)

    由于是4进制,满4进一,从右往左依次对应4的0,1,2,3.....次方

    列如:1212 转换为10进制

    1 × 4^3 + 2 × 4^2 + 1 × 4^1 + 2 × 4^0 = 64 + 32 + 4 + 2 = 102

    所以python脚本如下:

    #!/usr/bin/python
    # -*- coding=utf8 -*-
    """
    # @Author : pig
    # @CreatedTime:2020-01-10 22:39:14
    # @Description : 
    """
    
    
    m = ""
    with open("4_进制.txt", "r") as f:
        text = f.read()
        c = text.split(" ")
        for i in c:
            temp = 0
            for j in range(len(i)):
                temp += int(i[j]) * (4 ** (len(i) - j -1))
            m += chr(temp)
        print (m)
    

    结果如下:

  2. 8进制转换(题目来源iscc 2019)

    题目如下:

    通篇都是8进制,这次利用python int自带的函数来解决

    转换脚本如下:

    #!/usr/bin/python
    # -*- coding=utf8 -*-
    """
    # @Author : pig
    # @CreatedTime:2020-01-11 15:46:57
    # @Description : 
    """
    
    
    import base64
    m = ""
    with open("message_进制.txt", "r") as f:
        text = f.read()
        c = text.split(" ")
        for i in c:
            try:
                m += chr(int(str(i)[1:],8))
            except ValueError:
                pass
        print (m)
    result = base64.b64decode(m.encode('utf-8'))
    print (str(result, 'utf-8'))
    

    由于第一次解密得到一连串个的base64字符串,所以再加一个base64解密

    最后结果如下:

    V2VsbCBkb25lIQoKIEZsYWc6IElTQ0N7TjBfMG5lX2Nhbl9zdDBwX3kwdX0K
    Well done!
    
     Flag: ISCC{N0_0ne_can_st0p_y0u}
    
    
  3. 多种进制混合(题目来源2017 山东省赛科莱杯)

    题目如下:

    有题目得知 d为十进制,x为十六进制,o为8进制,b为二进制

    所以脚本编写如下:

    #!/usr/bin/python
    # -*- coding=utf8 -*-
    """
    # @Author : pig
    # @CreatedTime:2020-01-11 16:08:14
    # @Description : 
    """
    
    f = open('kelai_进制转换.txt', 'r')
    text = f.read().split(' ')
    m = ''
    for i in text:
        if i[0] == 'd':
            m += chr(int(i[1:]))
        if i[0] == 'x':
            m += chr(int(i[1:], 16))
        if i[0] == 'o':
            m += chr(int(i[1:], 8))
        if i[0] == 'b':
            m += chr(int(i[1:], 2))
    print (m)
    

    得到结果如下:

举报

相关推荐

0 条评论