Python 序列化与反序列化
序列化是为了将内存中的字典、列表、集合以及各种对象,保存到一个文件中(字节流)。而反序列化是将字节流转化回原始的对象的一个过程。
json库
序列化:json.dumps()
反序列化:json.loads()
只能处理字典、列表这些简单的序列化与反序列化。
pickle库
处理复杂的序列化与反序列化。
pickle.dumps()
pickle.loads()
只要函数名一样。
序列化.py
import pickle
def PoC():
print("这是Python序列化程序代码")
data = {
‘method‘:‘GET‘,
‘path‘:‘/index‘,
‘other‘:PoC
}
with open("data.txt",‘wb‘) as f:
f.write(pickle.dumps(data))反序列化.py
import pickle
def PoC():
print("这是Python反序列化程序代码")
f = open("data.txt",‘rb‘)
data = pickle.loads(f.read())
data[‘other‘]()从输出的结果上看,只要函数名相同就会去执行里面的代码。

修改PoC函数中的代码,改成打开计算器的,运行后发现可以弹窗计算器。

相关推荐
Lzs 2020-10-23
xclxcl 2020-08-03
zmzmmf 2020-08-03
葫芦小金刚 2020-07-22
ericdoug 2020-07-18
Erick 2020-06-17
aanndd 2020-06-16
Erick 2020-06-17
aanndd 2020-06-16
xuebingnan 2020-06-13
80337960 2020-06-10
Jerry 2020-06-01
mengdg000 2020-05-29
spring-data-redis RedisTemplate 操作redis时发现存储在redis中的key不是设置的string值,前面还多出了许多类似\xac\xed\x00\x05t\x00;
尹小鱼 2020-05-29
somebodyoneday 2020-05-15
visionzheng 2020-05-05
visionzheng 2020-05-04
igogo00 2020-05-03