[2021铁人赛 Day15] General Skills 12

  • 引言
    昨天使用到 stringsgrep 这两个工具,
    主要是用来寻找一堆资料中的字串的。

    今天的题目会是与编码有关的,算是密码学领域的小小入门。
    我们就直接开始吧!

  • General Skills / Bases:
    https://ithelp.ithome.com.tw/upload/images/20210930/20111429L4PuTUe1Id.png
    这题给了一串文字:
    bDNhcm5fdGgzX3IwcDM1
    题目标题是 bases ,可以猜到这应该是 base64 编码,
    可以看看维基百科的说明: base64

    简单来说 base64 是一串编码,
    用来将一串二进制资料转成「可视字元」,
    诸如网址、图片等都能用 base64 转换成一串编码。

    可以用 Python 中的 base64 套件来编码与解码,
    此题要解码,所以我们会用到其中的 b64decode() 函式,
    解码出来会是 bytes 型态,直接列印出来会是 b'xxx' 形式,
    需要再调用 .decode() 方法转成 str 型态:

    import base64
    b = base64.b64decode('bDNhcm5fdGgzX3IwcDM1')
    print(b.decode())
    

    base64 的转换都是先将资料转成 bytes 型态,
    解码时也要先转回 b'xxx' 这样子的 bytes 型态,
    再藉由 .decode() 方法转回字串。

    结果:

    $ python bases.py 
    l3arn_th3_r0p35
    

    用 flag 格式包起来:
    picoCTF{l3arn_th3_r0p35}


    可以 decode 当然也可以 encode ,也就是编码
    我们试着将 apple 编码看看:

    import base64
    b = base64.b64encode('apple'.encode())
    print(b.decode())
    

    这边要注意,需要编码的字串必须先用 .encode() 方法转成 bytes 型态,
    上面解码的部份则是要转不转都行,编码是一定要先转成 bytes 型态。

    例如上面的部份也可以写成:
    b = base64.b64decode('bDNhcm5fdGgzX3IwcDM1'.encode())
    但可以不用, b64decode 是可以接受 bytes 或 str 型态的。
    而 b64encode 则一定要 bytes 型态,需注意。

    执行後得到:

    YXBwbGU=
    

    我们将它解码回来:

    import base64
    b = base64.b64decode('YXBwbGU='.encode())
    print(b.decode())
    

    执行後得到:

    apple
    

    的确是原来的资料。


<<:  [Day30] Flutter - App Icon(final)

>>:  DVWA练习-Cross Site Scripting

Python - 安装 PyAudio 套件报错解决方式参考笔记

Python - 安装 PyAudio 套件报错解决方式参考笔记 参考资料 资料来源:I can't...

Day 13 - 安装(三)副本调度设定

前面提到region会产生副本分散在每一个tikv store里,今天如果架设的机器是跨区的,跨机房...

Day5 Python基础语法三

今天的影片内容为介绍之後程序设计不可或缺的if else 以及for回圈,千万别错过呦~ 以下为影片...

C# .WebAPI Tuple 回传空白的问题

近期将依些老程序转移至微服务上, 因为原本程序使用了大量 out 语法, 为了能够让微服务的 API...

iOS App开发 OC 第二天, 属性 @property 的特性(attribute)

从Swift 到 OC 第二天, 属性 @property 的特性(attribute) tags:...