爬虫对于protobuf协议的处理

2023-03-06 16:22:10 浏览数 (1)

第一步处理

1.首先抓包
2.复制请求值的hex
3.打开010编辑器
4.创建hex file
5.ctrl shift c复制内容,并保持

6.protoc --decode_raw <存的文件路径

代码语言:javascript复制
1: 1
2: 1650001082017
3: 1998484019
4: 3820464515
5 {
  1: "appV"
  2: "60000"
}

第二步编辑proto文件

1.创建xxx.proto
2.更具上述内容编写文件
代码语言:javascript复制
syntax = "proto3";
message T{
    int32 test_1 = 1;
    int64 test_2 = 2;
    int64 test_3 = 3;
    int64 test_4 = 4;
    repeated PersonInfo personinfo = 5;
}

message PersonInfo{
    string key = 1;
    string value = 2;
}
3.输出对应的py文件
代码语言:javascript复制
#移动到xxx.proto所在目录
protoc --python_out=./ xxx.proto
#prop.proto冒号后面那个点和文件名之间有个空格,忘记加空格了不会编译通过,会报错:Missing input file.

第三部编辑python文件

代码语言:javascript复制
import xxx
import base64
import gzip
import zlib

def create_t():
    T = xxx.T()
    T.test_1 = 1
    T.test_2 = 1650001082017
    T.test_3 = 1998484019
    T.test_4 = 3820464515
    personinfo =T.personinfo.add()
    personinfo.key = 'A'
    personinfo.value = 'B'
    serializeToString = T.SerializeToString()
    gzipbytes = gzip.compress(serializeToString)
    base64_str1 = base64.b64encode(serializeToString)
    return gzipbytes
    
if __name__ == '__main__':
		#解析
    with open("zeus_my","rb") as fr:
        data =fr.read()
    T = xxx.T()
    T.ParseFromString(data)
    print(T)

0 人点赞