1、问题描述
网络数据包,我已经使用mitmproxy代理抓取了,但是,数据包有些数据是gzip进行编码的,那么怎么还原成原始报文呢?使用的语言是python。
2、网上资料
使用的方法,网上有zlib和gzip。使用gzip.decompress这个函数可以直接解密,可惜我的版本不支持。然后网上说的gzip都是打开一个文件之类的。
使用zlib,一直爆出error 3 和error 5的错误。
在C语言下可以实施的,目前是不能实现了。
3、突破口
因为是gzip加密,所以还是瞄准gzip,
有这么一个加密语句:
#!/usr/bin/env python
# encoding=utf-8
import urllib2, httplib
import StringIO, gzip
#解压gzip
def gzdecode(data) :
compressedstream = StringIO.StringIO(data)
gziper = gzip.GzipFile(fileobj=compressedstream)
data2 = gziper.read() # 读取解压缩后数据
return data2
(来源:http://blog.csdn.net/wzq9706/article/details/25122417)
那么只需要将我的流导入这个,就可以进行解密了。
还有牵涉的就是编码方式了。这个编码方式。在sqlite3里面很麻烦的。不过这个语句很有效果:
conn.text_factory = str