引言
昨天使用到 strings
与 grep
这两个工具,
主要是用来寻找一堆资料中的字串的。
今天的题目会是与编码有关的,算是密码学领域的小小入门。
我们就直接开始吧!
General Skills / Bases:
这题给了一串文字:
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 套件报错解决方式参考笔记 参考资料 资料来源:I can't...
前面提到region会产生副本分散在每一个tikv store里,今天如果架设的机器是跨区的,跨机房...
今天的影片内容为介绍之後程序设计不可或缺的if else 以及for回圈,千万别错过呦~ 以下为影片...
近期将依些老程序转移至微服务上, 因为原本程序使用了大量 out 语法, 为了能够让微服务的 API...
从Swift 到 OC 第二天, 属性 @property 的特性(attribute) tags:...